CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Programme a diminuer

cocofox1902
cocofox1902
Niveau 1
08 décembre 2021 à 18:44:06

Bonjour,
Je suis un peux dans le rush je doit retirer deux ligne a ce programme mais je ne trouve pas comment faire j'ai tout essayer si vous pouvez m'ader merci beaucoup
int shell_loop(char **argv, int count)
{
char *buff = NULL, **av = NULL;
ssize_t result = 1, retour;

result = prompt(&buff), count++;
if (result == -1)
{
free_pointer(1, buff);
return (1);
}
av = fillarguments(buff, " \t");
if (av[0] == NULL)
{
free_pointer(1, buff), free_arrayofpointer(av);
return (0);
}
if (av[0][0] != '/')
{
retour = checkBuiltins(av, buff, count);
if (retour == 0 || retour == 2)
{
free_pointer(1, buff), free_arrayofpointer(av);
retour == 0 ? (retour = 0) : (retour = 1);
return (retour);
}
if (!(findinthepath(av)))
{
printerror(argv, count, av), free_pointer(1, buff), free_arrayofpointer(av);
return (2);
}
else
{
processus(argv, av, buff, count);
free_pointer(2, *av, buff), free_arrayofpointer(av);
return (0);
}
}
if (processus(argv, av, buff, count) != 0)
{
free_pointer(1, buff), free_arrayofpointer(av);
return (2);
}
free_pointer(1, buff), free_arrayofpointer(av);
return (0);
}

Golem2Fer
Golem2Fer
Niveau 6
08 décembre 2021 à 18:56:59

Alors, c'est simple tu commences pa

cocofox1902
cocofox1902
Niveau 1
08 décembre 2021 à 19:13:21

Pas bien compris ?

damsover
damsover
Niveau 5
08 décembre 2021 à 19:17:09

Il disait que tu devais juste

cocofox1902
cocofox1902
Niveau 1
08 décembre 2021 à 19:20:40

non mais c'est un programme que j'ai fait mais je doit pas dépasser nombre de ligne voici mon nouveau code mais le problème c'est que j'ai save que une ligne il en reste encore une
int shell_loop(char **argv, int count)
{
char *buff = NULL, **av = NULL;
ssize_t result = 1, retour;

result = prompt(&buff), count++;
if (result == -1)
{
free_p(1, buff);
return (1);
}
av = fillarguments(buff, " \t");
if (av[0] == NULL)
{
free_p(1, buff), free_a(av);
return (0);
}
if (av[0][0] != '/')
{
retour = checkBuiltins(av, buff, count);
if (retour == 0 || retour == 2)
{
free_p(1, buff), free_a(av), retour == 0 ? (retour = 0) : (retour = 1);
return (retour);
}
if (!(findinthepath(av)))
{
printerror(argv, count, av), free_p(1, buff), free_a(av);
return (2);
}
else
{
processus(argv, av, buff, count), free_p(2, *av, buff), free_a(av);
return (0);
}
}
if (processus(argv, av, buff, count) != 0)
{
free_p(1, buff), free_a(av);
return (2);
}
free_p(1, buff), free_a(av);
return (0);
}

Magrozz
Magrozz
Niveau 7
08 décembre 2021 à 19:34:50

Tu peux retirer la ligne qui

cocofox1902
cocofox1902
Niveau 1
08 décembre 2021 à 19:36:55

la ligne qui... ?

cybevil
cybevil
Niveau 27
08 décembre 2021 à 19:39:56

J'ai pas la solution mais je me permet de reposter ton code plus proprement, peut-être que ça motivera certain à t'aider.

int shell_loop(char **argv, int count) {
    char *buff = NULL, **av = NULL;
    ssize_t result = 1, retour;
    result = prompt(&buff), count++;

    if (result == -1) {
        free_p(1, buff);
        return (1);
    }

    av = fillarguments(buff, " \t");
    if (av[0] == NULL) {
        free_p(1, buff), free_a(av);
        return (0);
    }

    if (av[0][0] != '/') {
        retour = checkBuiltins(av, buff, count);
        if (retour == 0 || retour == 2) {
            free_p(1, buff), free_a(av), retour == 0 ? (retour = 0) : (retour = 1);
            return (retour);
        }
        if (!(findinthepath(av))) {
            printerror(argv, count, av), free_p(1, buff), free_a(av);
            return (2);
        } else {
            processus(argv, av, buff, count), free_p(2, *av, buff), free_a(av);
            return (0);
        }
    }

    if (processus(argv, av, buff, count) != 0) {
        free_p(1, buff), free_a(av);
        return (2);
    }

    free_p(1, buff), free_a(av);
    return (0);
}
Message édité le 08 décembre 2021 à 19:40:14 par cybevil
Thomas97
Thomas97
Niveau 10
08 décembre 2021 à 20:50:41

Si tu cherches juste à gagner des lignes, tu peux remplacer

<code>if (processus(argv, av, buff, count) != 0) {

free_p(1, buff), free_a(av);
return (2);
}
free_p(1, buff), free_a(av);
return (0);
</code>

par

<code>retour = 2 * (processus(argv, av, buff, count) != 0);

free_p(1, buff), free_a(av);
return (retour);
</code>

LGV
LGV
Niveau 28
08 décembre 2021 à 20:55:38

Pourquoi le nombre de lignes est-il une metrique pertinente ? si c'est une consigne, c'est relativement idiot, surtout en C oú on peut concatener plein de trucs en une monstruosité illisible mais parfaitement fonctionnelle.

Golem2Fer
Golem2Fer
Niveau 6
09 décembre 2021 à 16:35:23

Le 08 décembre 2021 à 20:55:38 LGV a écrit :
Pourquoi le nombre de lignes est-il une metrique pertinente ? si c'est une consigne, c'est relativement idiot, surtout en C oú on peut concatener plein de trucs en une monstruosité illisible mais parfaitement fonctionnelle.

Pour empêcher les débutants d'écrire des fonctions de 600 lignes.
Et historiquement c'est le mode d'affichage texte : 25 lignes 80 caractères.

LGV
LGV
Niveau 28
09 décembre 2021 à 17:31:52

Je suis d'accord avec cette grande ligne, mais la consigne demande d'etre explicitée á un debutant : au-dela d'une certaine valuation de complexité definie par une metrique plus ou moins arbitraire (nombre de lignes, nombre d'expressions ou structures de controles, etc.), il faut envisager de repenser le code (decoupage, fonctions, unités logiques, etc.)

Mais sans l'explication, cela va favoriser l'inverse chez un debutant : faire tenir plus de trucs en moins de lignes, en diminuant la lisibilité et augmentant la complexité. Sans le contexte de la bonne methodologie, cela devient une sorte de challenge "faire tenir le plus de commandes en le moins de lignes ; ce que permettent tres facilement C/C++ avec des expressions imbriquées á rallonge vite illisibles et favorisant les erreurs.

Message édité le 09 décembre 2021 à 17:32:55 par LGV
godrik
godrik
Niveau 30
09 décembre 2021 à 17:39:18

LGV, tu as oublié l'abus de preprocesseur! :)

LGV
LGV
Niveau 28
09 décembre 2021 à 19:21:49

Totalement ! Et en passant en C++, on combine pre-processeur, templates et surcharge d'operateurs, et ca devient vite la fete ! Certes puissant, mais á l'opposé d'une consigne intelligible pour un debutant.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment