méqueline a écrit 10 commentaires

  • # liste en liste

    Posté par  . En réponse au message liste de liste. Évalué à 1.

    Oui je vous remerci benja pour les explications je vais essayer de comprendre et de relire le cours en C.

    et de poser des questions si je bloque merci

  • # liste de liste

    Posté par  . En réponse au message liste de liste. Évalué à 1. Dernière modification le 06 janvier 2016 à 17:56.

    Oui j'ai compris toute les notions de lisp et pour ma fonction j'ai essayé ça

    #include <stdio.h>
    #include <stdlib.h>
    #define nil NULL
    
    typedef struct node { int car ; struct node * cdr ; } node, * list ;
    typedef struct node2 { struct node *Liste ; struct node2 * cdr2 ; } node2, * liste ;
    
    void usage(char *) ;
    list cons(int car, list L);
    void putlist(list L);
    list car(liste L);
    int car2(list L); 
    list cdr(list L);
    liste cons2(struct node * Liste, liste L);
    void putlist2(liste L);
    liste cdr2(struct node2 * Liste);
    
    #define caar(x) car2(car(x)) 
    #define cadr(x) car(cdr(x))
    
    int main() 
    
    {   list L;
        //liste j;
        int k;
            for (k = 0 ; k < 4 ; k++)
                L = cons(k, L);
                putlist(L) ;
                //putlist(caar(j));
                /*printf("\n");
                putlist(car(j));
                //printf("car(L) : %d\n", car(L));
                printf("\ncdr(j) :");
                putlist2(cdr2(j));
                printf("\ncaar(L) : %d\n", caar(j));
                //putlist(caar(j));
                printf("\n");
                printf("cadr(L) : %d\n", cadr(L));
                putlist2(caar(L));
                printf("caar(L) : %d\n", caar(L));*/
        return 0 ; }
    
    list cons(int car, list L)
    {   list new = malloc(sizeof(node)) ;
        if (! new) usage("cons : manque de RAM") ; 
            new -> car = car ;
            new -> cdr = L ;
        return (list)new ; }
    
    
    liste cons2(struct node * Liste, liste L)   
    {   liste nouveau = malloc(sizeof(node2)) ;
        if (! nouveau) usage("cons : manque de RAM") ; 
            nouveau -> Liste = Liste ;
            nouveau -> cdr2 = L ;
        return nouveau ; }
    
    void putlist(list L)
    {   if (! L) return ; 
        printf("%d ", L -> car) ;
        putlist(L -> cdr) ; }
    
    void putlist2(liste L)
    {   if (! L) return ; 
        putlist(L -> Liste) ;
        putlist2(L -> cdr2) ; 
        }
    
    list car(liste L)
    {
    return L -> Liste ;
    }
    
    int car2(list L)
    {
    return L -> car ;
    }
    
    list cdr(list L)
    {
        return L -> cdr;
    
    }
    liste cdr2(struct node2 * Liste)
    {
        return Liste -> cdr2;   
    }
    
    void usage(char * P) { printf("Usage : %s erreur", P), exit(1) ; }

    mais mon problème c'est dans main je ne vois pas comment crée une liste de liste.

  • # liste de liste

    Posté par  . En réponse au message liste de liste. Évalué à 1.

    Il s'agit du C.

    J'ai posté dans le forum pour avoir de l'aide c'est tout, je bloque un bon moment sur cette exercice.

  • # if

    Posté par  . En réponse au message Commande if à écrire. Évalué à 1.

    Ce n'est pas mon but ce que vous dites juste je le dis pour vous faut bien comprendre le cours pour pouvoir répondre

  • # if

    Posté par  . En réponse au message Commande if à écrire. Évalué à 1.

    C'est à toi de trouver ;)

    le cours est bien expliqué

  • # if

    Posté par  . En réponse au message Commande if à écrire. Évalué à 1. Dernière modification le 02 janvier 2016 à 22:59.

    eh bin justement j'avais le même exercices l'année dernière oui c'est un cours de système d'exploitation mais faut voir le cours et les questions avant cette question la le prof je vous mis une copie comme je possède encore le pdf de l'année dernière

    /* cj-execv.c 
     Une utilisation simple de execv 
     */ 
    # include <stdio.h> 
    # include <unistd.h> 
    
    char * tab[] = { "commande", "arg1", "arg2", 0, }; 
    
    int 
    main(){ 
      execv("/bin/echo", tab); 
      perror("en essayant de faire execv"); 
      return 1; 
    }

    Exercice 3.11 —

    Écrire et tester une fonction spawn qui permet de lancer une commande avec un nombre variable d’arguments.

    Exercice 3.12 —

    (assez difficile) Quelle est le nombre ou la taille maximum des arguments qu’on peut spécifier dans un appel à exec.

    Exercice 3.13 —

    Ecrire une commande mon-if qui lancera un processus, puis en lancera un second si le premier a réussi. Par exemple mon-if ’true’ ’echo reussi’ affichera reussi alors que mon-if ’false’ ’echo raté’ n’affichera rien. Prévoir le cas où les commandes contiennent plusieurs mots, comme dans mon-if ’echo foo’ ’echo bar’.

    Je sais trop bien de quoi je parles il te demande pour cette exercice de résoudre avec ce que tu as aprit en cours c'est a dire avec le fork et excev et wait ;)

  • # if

    Posté par  . En réponse au message Commande if à écrire. Évalué à 0.

    C'est faux la réponses c'est un cours qui parle sur les processus donc fork() ….

    Faut crée un fichier exemple spawn.c qui va appellé le ./mon-if

    anssi spawn-main.c qui contient le code de spawn

    t = spawn("./mon-if", mes_argv);

    il faut au moins 3 code un de spawn et l'autre de spawn-main et le dernier de mon-if

  • # if

    Posté par  . En réponse au message Commande if à écrire. Évalué à 0.

    pour créer un processus qui doit appelé deux on n'est bien obligé d'utiliser le fork() fait des recherches sur le proccessus enfant et parents

  • # if

    Posté par  . En réponse au message Commande if à écrire. Évalué à 0.

    Faut utiliser le fork() pour répondre

  • # fonction caar

    Posté par  . En réponse au message Affichage listes chainées en C. Évalué à 1. Dernière modification le 04 janvier 2016 à 21:21.

    Bonjour,

    Ça m'interresse de savoir comment tu as rédsolu ton problème avec caar? j'ai le même problème et je bloque dessous plusieurs jours.

    merci

    j'ai tenté ce code qui construit une liste simple.

    # include <stdio.h>
    # include <stdlib.h>
    #define nil NULL
    
    typedef struct node { int car ; struct node * cdr ; } node, * list ;
    
    void usage(char *) ;
    list cons(int car, list L);
    void putlist(list L);
    int car(list L);
    list cdr(list L);
    
    
    
    int main() 
    
    {   list L = nil ;
        int k;
            for (k = 0 ; k < 4 ; k++)
                L = cons(k, L) ;
                putlist(L) ;
                printf("\n");
                printf("car : %d\n", car(L));
                putlist(cdr(L));
                printf("\n");
                printf("car(cdr(L) : %d\n", car(cdr(L)));
                printf("car(cdr(cdr L)) : %d\n",car(cdr(cdr (L))));
                printf("car(cdr(cdr(cdr L))) : %d\n",car(cdr(cdr(cdr (L)))));
    
        return 0 ; }
    
    list cons(int car, list L)
    {   list new = malloc(sizeof(node)) ;
        if (! new) usage("cons : manque de RAM") ; 
            new -> car = car ;
            new -> cdr = L ;
        return new ; }
    
    void putlist(list L)
    {   if (! L) return ; 
        printf("%d ", L -> car) ;
        putlist(L -> cdr) ; }
    
    
    int car(list L)
    {
    return L -> car ;
    }
    
    list cdr(list L)
    {
        return L -> cdr;
    
    }
    
    
    
    void usage(char * P) { printf("Usage : %s erreur", P), exit(1) ; }

    vous pouvez me dire comment faire pour caar ?

    Merciii

    Je