Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
983 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Mini Excel – système de donnée en grille

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mini Excel – système de donnée en grille

n°2263385
joachimssj
Posté le 27-07-2015 à 19:28:50  profilanswer
 

Bonjour,
 
Je dois réaliser une grille excel pour mon cours d'informatique.
J'ai appris les base en début d'année (printf, scanf, boucle,...) et la j'ai appris récemment sur internet les base un peu plus complexe que je ne maitrise pas encore tout à fait ( liste chainée, chaine de caractères, pointeurs, allocation dynamique, prototype, ...).
 
Je me dit qu'il fraudais réaliser une liste chainée ou chaque élément (chaque case) possèdent un pointeur de l’élément précédant et 3 autre pointeurs vers d'autres élément afin de pouvoir aller d'une case vers le haut, vers la gauche, vers la droite.
Un printf qui affiche toutes les cases mais disposés au bons emplacement et un menu pour encoder, effacer ou modifier des valeurs.
 
Qu'en pensez est-ce la manière la plus simple de procédé.

mood
Publicité
Posté le 27-07-2015 à 19:28:50  profilanswer
 

n°2263400
rat de com​bat
attention rongeur méchant!
Posté le 28-07-2015 à 00:39:04  profilanswer
 

À mon avis un simple tableau à deux dimensions est bien plus adapté et simple... Enfin je dis "deux dimensions", si tu veux sauvegarder des chaînes de caractères c'est plutôt trois dimensions, m'enfin peu importe.

n°2263405
rufo
Pas me confondre avec Lycos!
Posté le 28-07-2015 à 09:53:20  profilanswer
 

Excel, c'est avant tout un tableur plus qu'un "tableau". Ca veut dire que ça fait du calcul. Est-ce que tu as prévus de pouvoir faire un système de formule dans ton mini Excel ?
 
Parce que si c'est juste pour afficher des chaînes de caractères dans une grille, un tableau 2D de char*, ça suffit effectivement. Mais si y'a des formules, là, ça va se compliquer beaucoup plus puisqu'il faudra gérer les références à des adresses d'autres cellules. :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2263423
joachimssj
Posté le 28-07-2015 à 12:53:50  profilanswer
 

Non, je pense que je peux mettre des formules mais ça serais beaucoup trop compliqué .
Avec un tableau c'est possible de connaitre l'emplacement de chaque valeur et de pouvoir les modifiées à cette emplacement?
Je vais demandé à mon professeur si je suis obligé d'utilisé une liste chainée et si je dois être capable de faire des calculs entre les différentes cases.


Message édité par joachimssj le 28-07-2015 à 13:02:14
n°2263425
gilou
Modérateur
Modzilla
Posté le 28-07-2015 à 14:00:08  profilanswer
 

rufo a écrit :

Excel, c'est avant tout un tableur plus qu'un "tableau". Ca veut dire que ça fait du calcul. Est-ce que tu as prévus de pouvoir faire un système de formule dans ton mini Excel ?
 
Parce que si c'est juste pour afficher des chaînes de caractères dans une grille, un tableau 2D de char*, ça suffit effectivement. Mais si y'a des formules, là, ça va se compliquer beaucoup plus puisqu'il faudra gérer les références à des adresses d'autres cellules. :o

Oui, les formules ça demande un peu plus de boulot. En particulier pour interdire la création de dépendances croisées entre formules. Mais bon, de mon temps, c'était du niveau de la première année de spécialisation en info, ce genre de projet, tant que les formules restaient simples (histoire de pas perdre de temps sur le parsing en lecture/écriture de formules complexes et se concentrer sur la bonne manipulation des données dans la grille) .
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2263606
joachimssj
Posté le 30-07-2015 à 13:09:37  profilanswer
 

Mon professeur m'a indiqué que j'était obliger de faire cette grille en liste chainée, ça complique encore plus la chose... :sweat:

n°2263611
gilou
Modérateur
Modzilla
Posté le 30-07-2015 à 14:09:19  profilanswer
 

Bon ben ton exercice est plus sur la manipulation de cette structure que sur autre chose alors.
 
 
Tu as une structure grille qui a deux champs, lignes et colonnes, qui sont des listes chainées.
Le champ lignes va chainer des éléments tête de ligne, qui vont avoir pour contenu un entier (le numéro de ligne) et un pointeur sur la première case non vide de cette ligne.
Le champ colonnes va chainer des éléments tête de colonne, qui vont avoir pour contenu un entier (le numéro de colonne) et un pointeur sur la première case non vide de cette colonne.
 
Une case non vide de la ligne va donc être dans une double liste chaînée, celle des cases de sa ligne et celle des cases de sa colonne. Elle va avoir de plus un contenu (a priori un pointeur sur une structure qui va être une structure classique: un record dont le premier champ est le type de la case (nombre, chaîne...) et le second, une union d'objets paramétrés par le type du premier champ.) Dans un premier temps, tu peux faire avec un contenu de case tant de type int, et modifier ensuite.
Pour des raisons d'efficacité, il vaut mieux utiliser un double chaînage pour les lignes et colonnes, ou alors stocker le numéro de ligne et de colonne dans la case (mais cette deuxième solution plus simple au départ, risque de poser des problèmes plus tard si on veut implémenter une opération d'insertion de ligne/colonne). Une autre solution peut être d'avoir un chaînage simple, et deux champs pointant sur la tête de ligne et tête de colonne pour chaque case de la grille.  
 
Tu vas donc avoir à gérer:
- La création d'une grille et sa destruction.
- L'insertion d'une case  
- L'ajout/modification/lecture du contenu d'une case
- La destruction d'une case
- l'impression du contenu de la grille
...
 
L'insertion et la destruction d'une case (qui peuvent aboutir aussi a l'insertion/destruction d'une ligne/colonne et donc à celle de l'élément tête de ligne/colonne) vont mettre en œuvre des manipulations de listes (doublement?) chaînes complexes, probablement un des buts de ton exo.
 
A+,


Message édité par gilou le 30-07-2015 à 14:22:46

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2263622
joachimssj
Posté le 30-07-2015 à 16:57:58  profilanswer
 

Waw va falloir que je m'exerce avec d'autre exercices et cours sur le net alors parce que je me sens pas capable du tout de faire ça pour l'instant.
 
Tu aurais des liens ou des vidéos de cours ou d'exercice qui pourrais m'aider a m'améliorer pour être capable de faire ce projet?
Histoire que je ne perde pas trop de temps à apprendre des choses qui me serais inutile pour cette application, car j'ai 13 examens à repasser pour la 18 aout qui n'on rien a voir avec le langage C, je dois donc être le plus rapide possible.


Message édité par joachimssj le 30-07-2015 à 16:58:26
n°2263740
joachimssj
Posté le 02-08-2015 à 18:55:33  profilanswer
 

J'ai fait des recherches sur internet et quelqu'un parle de faire ça comme ça :  
"On pourrait envisager une liste chainée double composée d'éléments à 4 pointeurs : Haut Bas Gauche Droite, ce qui permet une navigation en ligne et en colonnes.C'est certainement le plus simple et le plus efficace."
 
Ca serais pas plus simple comme ça?

n°2263746
gilou
Modérateur
Modzilla
Posté le 02-08-2015 à 19:15:03  profilanswer
 

C'est pas plus simple, puisque grosso modo, c'est ce que je vous ai indiqué, en entrant dans les détails, ce que ne fait pas une approche aussi succincte que la phrase que vous citez (qui omet par exemple de préciser que pour un tableur, on ne met dans la grille que les cases non vides, et c'est ce qui fait la difficulté de l'implémentation de la structure, entre autres).
A+,


Message édité par gilou le 02-08-2015 à 19:15:46

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 02-08-2015 à 19:15:03  profilanswer
 

n°2263755
joachimssj
Posté le 02-08-2015 à 20:16:41  profilanswer
 

Dit moi ce que t'en pense de mon schéma théorique :
 
En voulant faire un tableau excel 10X10
Donc ça serai une liste chainée de case qui correspondrais chacune à une colonne entière de A à J et dans chaque case se trouverais 10 valeurs qui correspondrais au 10 lignes.
Je ne sais pas si c'est ce que tu m'a proposer car je n'ai pas tout compris vu que je pense manqué encore de certaines notions.
 
Est-ce que ça a l'air d'une bonne base que j'améliorerai après? est-ce qu'il est possible de naviguer d'une case à une autre?
 
http://img15.hostingpics.net/thumbs/mini_785498Sanstitre.jpg


Message édité par joachimssj le 02-08-2015 à 20:27:39
n°2263756
joachimssj
Posté le 02-08-2015 à 20:17:18  profilanswer
 

Ou alors comme ça ?
 
http://img15.hostingpics.net/thumbs/mini_79882043e.jpg

n°2263767
gilou
Modérateur
Modzilla
Posté le 03-08-2015 à 03:34:27  profilanswer
 

Il y a de l'idée dans ton 2e crobard, sauf que ça va pas être aussi régulier si tu n'as comme cases que celles vraiment remplies.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2263778
joachimssj
Posté le 03-08-2015 à 10:12:48  profilanswer
 

Je peux remplir dès le départ celle qui sont vide par une valeur = 0

n°2263805
gilou
Modérateur
Modzilla
Posté le 03-08-2015 à 12:19:16  profilanswer
 

Non, justement pas, si tu as une grille avec deux cellules, une en (1,1) et l'autre en (30 000, 30 000), ça t'oblige a créer une structure avec 30 000 * 30 000 cases, soit 900 000 000, toutes à 0 sauf 2, ce qui n'est pas bon.
Vaut mieux créer une table a  2 cases (6 si on tient compte des cases lignes et colonnes)  
 
Un exemple avec 5 cases du type de structure chaîne à gérer. Cliquer pour agrandir l'image
 
http://reho.st/preview/self/2e8237f8aea571bbf206ef1f76e14bf03c8ee747.jpg
 
A+,


Message édité par gilou le 03-08-2015 à 12:33:52
n°2263812
joachimssj
Posté le 03-08-2015 à 14:45:00  profilanswer
 

Que veulent dire les petites masses que tu as dessinées?

Message cité 1 fois
Message édité par joachimssj le 03-08-2015 à 14:45:08
n°2263813
joachimssj
Posté le 03-08-2015 à 14:45:34  profilanswer
 

Bonjour,
 
dans un 1er temps je voudrais simplifier grandement la chose en faisant une série de listes chainées que je mettre l'une en dessous de l'autre avec des valeurs du même nombre de chiffre (ex: 0000|0001|1235|0025|) et donc je voulais crée la grille de départ avec des 0 partout mais le problème c'est que avec des int si j’écris 0000 et que je fait un printf il me ressort 0 donc je dois transformer le champs nombre en chaine de caractère, ça fonctionne pour l'initialisation mais quand j'ajoute une case ça ne fonctionne pas.
Je vous met mon code de départ en int et le code que j'ai essayer de transformer en char
(les commentaires c'est parce que je commence à peine à comprendre comment fonctionne une liste chainée)
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct Element Element;      // Creation d'une structure Element qui possede un champs nombre et un pointeur vers l'element suivant //
  4. struct Element
  5. {
  6.     int nombre;
  7.     Element *suivant;
  8. };
  9. typedef struct Liste Liste;
  10. struct Liste
  11. {
  12.     Element *premier;               // une structure de type liste (C'est la case qui pointe vers le 1ère element) avec un pointeur qui pointe vers le premier element
  13. };
  14. Liste *initialisation()                                         // Fontion pour initialiser un premiere element et la case de controle liste//
  15. {
  16.     Liste *liste = malloc(sizeof(*liste));                        // on alloue de la memoire pour un element et pour une case liste (celui qui pointe vers le 1er element)
  17.     Element *element = malloc(sizeof(*element));
  18.     if (liste == NULL || element == NULL)                       // on verifie que les alloc dyn on fonctionné//
  19.     {
  20.         exit(EXIT_FAILURE);
  21.     }
  22.     element->nombre=0;                                          // On attribue au champs nombre du 1er element la valeur 0, on fait pointer le pointeur suivant de l'element vers NULL//
  23.     element->suivant=NULL;                                      // On fait pointer le pointeur de la case liste vers le nouvel element //
  24.     liste->premier=element;
  25.     return liste;
  26. }
  27. void inssertiondebutdliste(Liste *liste,int nvnombre)           // Fonction qui va inséré un nouvel élement en début de liste//
  28. {
  29.     Element *nouvelelement = malloc(sizeof(*nouvelelement));    // on allou la memeoire pour le nouvel element//
  30.     if (liste == NULL || nouvelelement == NULL)
  31.     {
  32.         exit(EXIT_FAILURE);
  33.     }
  34.     nouvelelement->nombre=nvnombre;                             // on attribue au champs nombre la valeur nvnombre//
  35.     nouvelelement->suivant=liste->premier;                      // on fait pointer le pointeur suivant du nouvel ellement vers le meme endroit que le ponteur de la case liste(qui pointe vers le 1er element actuel//
  36.     liste->premier= nouvelelement;                              // et on fait pointer la case liste vers le nouveau premier element//
  37. }
  38. void suprimer1erelement(Liste *liste)                           // fonction qui supprime le 1er element de la liste//
  39. {
  40.    if (liste == NULL)
  41.     {
  42.         exit(EXIT_FAILURE);
  43.     }
  44.     if (liste->premier != NULL)                                 // si le 1er element n'est pas nul//
  45.     {
  46.         Element *asuprimer = liste->premier;                    // on cré un pointeur de type element qui va pointer la ou pointe la case liste qui est le 1er element actuel//
  47.         liste->premier=liste->premier->suivant;                  // on fait que le pointeur de la case liste ne pointe plus vers le 1er element actuel met l'elmenent vers lequel le 1er element pointe cad le 2eme element qui sera le nouveau premier element//
  48.         free(asuprimer);                                        // on efface de la memoire ce que notre pointeur pointe cad le 1er element actuel//
  49.     }
  50. }
  51. void afficherlistechainer(Liste *liste)                         // fonction qui affiche la liste chainée //
  52. {
  53.      if (liste == NULL)
  54.     {
  55.         exit(EXIT_FAILURE);
  56.     }
  57.     Element *actuel= liste->premier;                            // on crée un element appelé element actuel qui vaut le premier de la liste//
  58.     while(actuel != NULL)                                       // on commence par afficher le nombre de l'element actuel qui est le 1er element, puis on passe a l'element suivant et on le parcours, on le fait tant qu'on est pas arriver a la fin de la liste chainé qui vaut NULL//
  59.     {
  60.         printf("%d|",actuel->nombre);
  61.         actuel=actuel->suivant;
  62.     }
  63. }
  64. int main()
  65. {
  66.     Liste *maliste=initialisation();
  67.     inssertiondebutdliste(maliste,0000);
  68.     inssertiondebutdliste(maliste,0000);
  69.     inssertiondebutdliste(maliste,0000);
  70.     inssertiondebutdliste(maliste,0000);
  71.     Liste *maliste2=initialisation();
  72.     inssertiondebutdliste(maliste2,0000);
  73.     inssertiondebutdliste(maliste2,0000);
  74.     inssertiondebutdliste(maliste2,0000);
  75.     inssertiondebutdliste(maliste2,0000);
  76.     printf("\n\n" );
  77.     afficherlistechainer(maliste);
  78.     printf("\n" );
  79.     afficherlistechainer(maliste2);
  80.     return 0;
  81. }

n°2263816
joachimssj
Posté le 03-08-2015 à 15:02:44  profilanswer
 

Voici le code que j'ai essayer de transformer en caractère mais dont la fonction insertion début de liste ne fonctionne pas (la fonction initialisation fonctionne)
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct Element Element;      // Creation d'une structure Element qui possede un champs nombre et un pointeur vers l'element suivant //
  4. struct Element
  5. {
  6.     char chainecaract[5];
  7.     Element *suivant;
  8. };
  9. typedef struct Liste Liste;
  10. struct Liste
  11. {
  12.     Element *premier;               // une structure de type liste (C'est la case qui pointe vers le 1ère element) avec un pointeur qui pointe vers le premier element
  13. };
  14. Liste *initialisation()                                         // Fontion pour initialiser un premiere element et la case de controle liste//
  15. {
  16.     Liste *liste = malloc(sizeof(*liste));                        // on alloue de la memoire pour un element et pour une case liste (celui qui pointe vers le 1er element)
  17.     Element *element = malloc(sizeof(*element));
  18.     if (liste == NULL || element == NULL)                       // on verifie que les alloc dyn on fonctionné//
  19.     {
  20.         exit(EXIT_FAILURE);
  21.     }
  22.     sprintf(element->chainecaract,"00000" );                                         // On attribue au champs nombre du 1er element la valeur 0, on fait pointer le pointeur suivant de l'element vers NULL//
  23.     element->suivant=NULL;                                      // On fait pointer le pointeur de la case liste vers le nouvel element //
  24.     liste->premier=element;
  25.     return liste;
  26. }
  27. void inssertiondebutdliste(Liste *liste,char nvchainecaract[5])           // Fonction qui va inséré un nouvel élement en début de liste//
  28. {
  29.     Element *nouvelelement = malloc(sizeof(*nouvelelement));    // on allou la memeoire pour le nouvel element//
  30.     if (liste == NULL || nouvelelement == NULL)
  31.     {
  32.         exit(EXIT_FAILURE);
  33.     }
  34.     nouvelelement->chainecaract[5]=nvchainecaract[5];                           // on attribue au champs nombre la valeur nvnombre//
  35.     nouvelelement->suivant=liste->premier;                      // on fait pointer le pointeur suivant du nouvel ellement vers le meme endroit que le ponteur de la case liste(qui pointe vers le 1er element actuel//
  36.     liste->premier= nouvelelement;                              // et on fait pointer la case liste vers le nouveau premier element//
  37. }
  38. void suprimer1erelement(Liste *liste)                           // fonction qui supprime le 1er element de la liste//
  39. {
  40.    if (liste == NULL)
  41.     {
  42.         exit(EXIT_FAILURE);
  43.     }
  44.     if (liste->premier != NULL)                                 // si le 1er element n'est pas nul//
  45.     {
  46.         Element *asuprimer = liste->premier;                    // on cré un pointeur de type element qui va pointer la ou pointe la case liste qui est le 1er element actuel//
  47.         liste->premier=liste->premier->suivant;                  // on fait que le pointeur de la case liste ne pointe plus vers le 1er element actuel met l'elmenent vers lequel le 1er element pointe cad le 2eme element qui sera le nouveau premier element//
  48.         free(asuprimer);                                        // on efface de la memoire ce que notre pointeur pointe cad le 1er element actuel//
  49.     }
  50. }
  51. void afficherlistechainer(Liste *liste)                         // fonction qui affiche la liste chainée //
  52. {
  53.      if (liste == NULL)
  54.     {
  55.         exit(EXIT_FAILURE);
  56.     }
  57.     Element *actuel= liste->premier;                            // on crée un element appelé element actuel qui vaut le premier de la liste//
  58.     while(actuel != NULL)                                       // on commence par afficher le nombre de l'element actuel qui est le 1er element, puis on passe a l'element suivant et on le parcours, on le fait tant qu'on est pas arriver a la fin de la liste chainé qui vaut NULL//
  59.     {
  60.         printf("%s|",actuel->chainecaract);
  61.         actuel=actuel->suivant;
  62.     }
  63. }
  64. int main()
  65. {
  66.     Liste *maliste=initialisation();
  67.     inssertiondebutdliste(maliste,"0000" );
  68.     inssertiondebutdliste(maliste,"0000" );
  69.     inssertiondebutdliste(maliste,"0000" );
  70.     inssertiondebutdliste(maliste,"0000" );
  71.     Liste *maliste2=initialisation();
  72.     inssertiondebutdliste(maliste2,"0000" );
  73.     inssertiondebutdliste(maliste2,"0000" );
  74.     inssertiondebutdliste(maliste2,"0000" );
  75.     inssertiondebutdliste(maliste2,"0000" );
  76.     printf("\n\n" );
  77.     afficherlistechainer(maliste);
  78.     printf("\n" );
  79.     afficherlistechainer(maliste2);
  80.     return 0;
  81. }

n°2263825
gilou
Modérateur
Modzilla
Posté le 03-08-2015 à 16:22:17  profilanswer
 

joachimssj a écrit :

Que veulent dire les petites masses que tu as dessinées?

C'est une convention courante pour indiquer qu'un pointeur est à NULL.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2263829
joachimssj
Posté le 03-08-2015 à 16:36:28  profilanswer
 

J'essai de faire le menu, j'ai essayer avec un switch case mais ça ne marche pas alors je me suis dit que j'allais faire une série de condition si mais quand j'encode ça ca ne marche pas  

Code :
  1. char caseselectionner[2];
  2. printf("\n\nchoisissez une case :" );
  3. scanf("%s",caseselectionner);
  4. if(caseselectionner=="a1" ){printf("cava" );}


 
 
Quand l'utilisateur encode a1 ça ne fait rien du tout, il y a t-il une manipulation spéciale à faire quand on fait une condition avec des caractères?


Message édité par joachimssj le 03-08-2015 à 16:36:46
n°2263833
rufo
Pas me confondre avec Lycos!
Posté le 03-08-2015 à 16:45:00  profilanswer
 

Faut mettre char caseselectionner[3] il me semble car là, t'as pas la place de mettre 2 caractères plus celui de fin de chaîne :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2263835
joachimssj
Posté le 03-08-2015 à 16:59:56  profilanswer
 

C'est juste mais ça ne marche quand même pas, ça n'affiche rien
 
donc là j'ai  
 

Code :
  1. char caseselectionner[3];
  2. printf("\n\nchoisissez une case :" );
  3. scanf("%s",caseselectionner);
  4. if(caseselectionner=="a1" ){printf("cava" );}


Message édité par joachimssj le 03-08-2015 à 17:00:40
n°2263842
gilou
Modérateur
Modzilla
Posté le 03-08-2015 à 17:15:22  profilanswer
 

> char chainecaract[5];
...
> sprintf(element->chainecaract,"00000" );  
 
La chaine "00000" fait 6 caractères (tu n'as pas compté le \0 final), donc ça va pas marcher comme tu le supposes.
 
> nouvelelement->chainecaract[5]=nvchainecaract[5];    
C'est pas comme ça qu'on copie une chaîne de caractères en C.
 
En reprenant ton code:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define TAILLE_ELEMENT 6
  5. // 5 caractères et le \0 final
  6. typedef struct Element {
  7.     char chainecaract[TAILLE_ELEMENT];
  8.     struct Element *suivant;
  9. } Element;
  10. typedef struct Liste {
  11.     Element *premier;
  12. } Liste;
  13. Liste *initialisation() {
  14.     Liste *liste = malloc(sizeof(*liste));
  15.     if (liste) {
  16. Element *element = malloc(sizeof(*element));
  17. if (element) {
  18.     snprintf(element->chainecaract, TAILLE_ELEMENT, "00000" ); 
  19.     element->suivant = NULL;                   
  20.     liste->premier = element;
  21.     return liste; 
  22. }
  23. else {
  24.     free(liste);
  25. }
  26.     }
  27.     return NULL;
  28. }
  29. Element *inssertiondebutdliste(Liste *liste, char *nvchainecaract) {
  30.     if (liste) {
  31. Element *nouvelelement = malloc(sizeof(*nouvelelement));
  32. if (nouvelelement) {
  33.     strncpy(nouvelelement->chainecaract, nvchainecaract, TAILLE_ELEMENT); 
  34.     nouvelelement->suivant = liste->premier;     
  35.     liste->premier = nouvelelement;
  36.     return nouvelelement;
  37. }
  38. else {
  39.     return NULL;
  40. }
  41.     }     
  42. }
  43. void suprimer1erelement(Liste *liste)   
  44. {
  45.     if (liste && liste->premier) {
  46. Element *asuprimer = liste->premier;     
  47. liste->premier = liste->premier->suivant;   
  48. free(asuprimer);                         
  49.     }
  50. }
  51. void afficherlistechainer(Liste *liste) {
  52.     if (liste) {
  53. Element *actuel = liste->premier;     
  54. while(actuel) {
  55.     printf("%s|", actuel->chainecaract);
  56.     actuel = actuel->suivant;
  57. }
  58.     }
  59. }
  60. int main() {
  61.     int i;
  62.     Liste *maliste = initialisation();
  63.     if (maliste == NULL) {
  64. exit(EXIT_FAILURE);
  65.     }
  66.     for (i = 0; i <= 4; ++i) {
  67. if (inssertiondebutdliste(maliste, "0000" ) == NULL) {
  68.     exit(EXIT_FAILURE);
  69. }
  70.     }
  71.     Liste *maliste2 = initialisation();
  72.     if (maliste2 == NULL) {
  73. exit(EXIT_FAILURE);
  74.     }
  75.     for (i = 0; i <= 4; ++i) {
  76. if (inssertiondebutdliste(maliste2, "0000" ) == NULL) {
  77.     exit(EXIT_FAILURE);
  78. }
  79.     }
  80.     printf("\n\n" );
  81.     afficherlistechainer(maliste);
  82.     printf("\n" );
  83.     afficherlistechainer(maliste2);
  84.     return 0;
  85. }


 
C'est pas testé, car j'ai désinstallé mon compilo C il y a qques jours et pas encore réinstallé une version à jour, mais ça te donne une idée.
 
Ne fais pas faire plusieurs choses à une fonction, sinon on finit par ne plus savoir qui fait quoi:  
Si une fonction a pour role d'insérer, en cas d'échec, il faut lui faire signaler l'échec, en général avec sa valeur de retour, mais son role n'est pas de sortir du programme: Bref une fonction insertion n'est pas une fonction insertion ou sortie du programme.
Quand tu as des champs de taille fixe, n'utilises jamais sprintf et strcpy, mais utilises les variantes qui tiennent compte de la taille, snprintf et strncpy.
EDIT: bon, comme d'hab, le formatage du forum bouffe mon indentation :fou:  
EDIT2: bon, j'ai installé vite fait mingw et ce code marche.
 
A+,


Message édité par gilou le 03-08-2015 à 17:51:21

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2263844
joachimssj
Posté le 03-08-2015 à 17:20:02  profilanswer
 

Finalement je suis revenu sur des variable en int, en faisant un mettant %05d dans mon printf je peut afficher 5 chiffre a chaque fois.
 
j'en suis là dans mon code, j’essaie de réaliser le menu, je test les condition sur des chaine de caractère car il faudra désigné une case comme par ex a1 mais je n'y arrive pas.
Je n'arrive pas à utiliser les condition avec des chaines de caractère.
 
[cpp][/cpp]
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct Element Element; // Creation d'une structure Element qui possede un champs nombre et un pointeur vers l'element suivant //
struct Element
{
int nombre;
Element *suivant;
};
 
typedef struct Liste Liste;
struct Liste
{
Element *premier;                               // une structure de type liste (C'est la case qui pointe vers le 1ère element) avec un pointeur qui pointe vers le premier element
};
 
Liste *initialisation()                         // Fontion pour initialiser un premiere element et la case de controle liste//
{
Liste *liste = malloc(sizeof(*liste));              // on alloue de la memoire pour un element et pour une case liste (celui qui pointe vers le 1er element)
Element *element = malloc(sizeof(*element));
 
if (liste == NULL || element == NULL)               // on verifie que les alloc dyn on fonctionné//
{
exit(EXIT_FAILURE);
}
 
element->nombre=0;                                  // On attribue au champs nombre du 1er element la valeur 0, on fait pointer le pointeur suivant de l'element vers NULL//
element->suivant=NULL;                                          // On fait pointer le pointeur de la case liste vers le nouvel element //
liste->premier=element;
 
return liste;
}
 
void inssertiondebutdliste(Liste *liste,int nvnombre) // Fonction qui va inséré un nouvel élement en début de liste//
{
Element *nouvelelement = malloc(sizeof(*nouvelelement)); // on allou la memeoire pour le nouvel element//
if (liste == NULL || nouvelelement == NULL)
{
exit(EXIT_FAILURE);
}
 
nouvelelement->nombre=nvnombre; // on attribue au champs nombre la valeur nvnombre//
nouvelelement->suivant=liste->premier; // on fait pointer le pointeur suivant du nouvel ellement vers le meme endroit que le ponteur de la case liste(qui pointe vers le 1er element actuel//
liste->premier= nouvelelement; // et on fait pointer la case liste vers le nouveau premier element//
 
}
 
void suprimer1erelement(Liste *liste) // fonction qui supprime le 1er element de la liste//
{
if (liste == NULL)
{
exit(EXIT_FAILURE);
}
if (liste->premier != NULL) // si le 1er element n'est pas nul//
{
Element *asuprimer = liste->premier; // on cré un pointeur de type element qui va pointer la ou pointe la case liste qui est le 1er element actuel//
liste->premier=liste->premier->suivant; // on fait que le pointeur de la case liste ne pointe plus vers le 1er element actuel met l'elmenent vers lequel le 1er element pointe cad le 2eme element qui sera le nouveau premier element//
free(asuprimer); // on efface de la memoire ce que notre pointeur pointe cad le 1er element actuel//
}
}
 
void afficherlistechainer(Liste *liste) // fonction qui affiche la liste chainée //
{
if (liste == NULL)
{
exit(EXIT_FAILURE);
}
Element *actuel= liste->premier; // on crée un element appelé element actuel qui vaut le premier de la liste//
while(actuel != NULL) // on commence par afficher le nombre de l'element actuel qui est le 1er element, puis on passe a l'element suivant et on le parcours, on le fait tant qu'on est pas arriver a la fin de la liste chainé qui vaut NULL//
{
printf("%05d|",actuel->nombre);
actuel=actuel->suivant;
}
 
}
 
void initialisationgrille()
{
    Liste *malistedecolonne=initialisation();
inssertiondebutdliste(malistedecolonne,4);
inssertiondebutdliste(malistedecolonne,3);
inssertiondebutdliste(malistedecolonne,2);
inssertiondebutdliste(malistedecolonne,1);
inssertiondebutdliste(malistedecolonne,0);
malistedecolonne->premier->suivant->suivant->suivant->suivant->suivant->nombre=5;
 
Liste *maliste1=initialisation();
inssertiondebutdliste(maliste1,0000);
inssertiondebutdliste(maliste1,0000);
inssertiondebutdliste(maliste1,0000);
inssertiondebutdliste(maliste1,0000);
inssertiondebutdliste(maliste1,0000);
 
Liste *maliste2=initialisation();
inssertiondebutdliste(maliste2,0000);
inssertiondebutdliste(maliste2,0000);
inssertiondebutdliste(maliste2,0000);
inssertiondebutdliste(maliste2,0000);
inssertiondebutdliste(maliste2,0000);
Liste *maliste3=initialisation();
inssertiondebutdliste(maliste3,0000);
inssertiondebutdliste(maliste3,0000);
inssertiondebutdliste(maliste3,0000);
inssertiondebutdliste(maliste3,0000);
inssertiondebutdliste(maliste3,0000);
Liste *maliste4=initialisation();
inssertiondebutdliste(maliste4,0000);
inssertiondebutdliste(maliste4,0000);
inssertiondebutdliste(maliste4,0000);
inssertiondebutdliste(maliste4,0000);
inssertiondebutdliste(maliste4,0000);
Liste *maliste5=initialisation();
inssertiondebutdliste(maliste5,0000);
inssertiondebutdliste(maliste5,0000);
inssertiondebutdliste(maliste5,0000);
inssertiondebutdliste(maliste5,0000);
inssertiondebutdliste(maliste5,0000);
Liste *maliste6=initialisation();
inssertiondebutdliste(maliste6,0000);
inssertiondebutdliste(maliste6,0000);
inssertiondebutdliste(maliste6,0000);
inssertiondebutdliste(maliste6,0000);
inssertiondebutdliste(maliste6,0000);
Liste *maliste7=initialisation();
inssertiondebutdliste(maliste7,0000);
inssertiondebutdliste(maliste7,0000);
inssertiondebutdliste(maliste7,0000);
inssertiondebutdliste(maliste7,0000);
inssertiondebutdliste(maliste7,0000);
Liste *maliste8=initialisation();
inssertiondebutdliste(maliste8,0000);
inssertiondebutdliste(maliste8,0000);
inssertiondebutdliste(maliste8,0000);
inssertiondebutdliste(maliste8,0000);
inssertiondebutdliste(maliste8,0000);
Liste *maliste9=initialisation();
inssertiondebutdliste(maliste9,0000);
inssertiondebutdliste(maliste9,0000);
inssertiondebutdliste(maliste9,0000);
inssertiondebutdliste(maliste9,0000);
inssertiondebutdliste(maliste9,0000);
Liste *maliste10=initialisation();
inssertiondebutdliste(maliste10,0000);
inssertiondebutdliste(maliste10,0000);
inssertiondebutdliste(maliste10,0000);
inssertiondebutdliste(maliste10,0000);
inssertiondebutdliste(maliste10,0000);
 
printf("\nN: " );
afficherlistechainer(malistedecolonne);
printf("\na: " );
afficherlistechainer(maliste1);
printf("\nb: " );
afficherlistechainer(maliste2);
printf("\nc: " );
afficherlistechainer(maliste3);
printf("\nd: " );
afficherlistechainer(maliste4);
printf("\ne: " );
afficherlistechainer(maliste5);
printf("\nf: " );
afficherlistechainer(maliste6);
printf("\ng: " );
afficherlistechainer(maliste7);
printf("\nh: " );
afficherlistechainer(maliste8);
printf("\ni: " );
afficherlistechainer(maliste9);
printf("\nj: " );
afficherlistechainer(maliste10);
return 0;
}
 
 
 
 
 
 
 
 
int main()
{
initialisationgrille();
 
 
 
 
 
 
 
char caseselectionner[3];
printf("\n\nchoisissez une case :" );
scanf("%s",caseselectionner);
if(caseselectionner=="a1" ){printf("cava" );}
 
 
 
 
 
 
 
 
 
 
 
 
}

n°2263850
gilou
Modérateur
Modzilla
Posté le 03-08-2015 à 17:50:02  profilanswer
 

> j'en suis là dans mon code, j’essaie de réaliser le menu
 
C'est peut être prématuré, la tu es bien loin de gérer une structure grille, pour le moment, le bout de code que tu as donné ne sait que créer  une liste simplement chaînée et lui ajouter/supprimer un élément en tête.  
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2263865
joachimssj
Posté le 03-08-2015 à 18:53:14  profilanswer
 

Oui plutôt que de faire ce que comme prévue j'ai pris une facilité en faisant une série de liste chainée l'une en dessous de l'autre , je vais le présenter comme ça a mon professeur, si ça passe tant mieux et si ça passe pas j'aurai droit à une prolongation de session et là j'aurai bien le temps de le faire comme il faut.

 

Mais là je suis bloqué je n'arrive pas à faire une faire une condition avec une chaine de caractère.µ
Qu'est-ce qui ne va pas dans ce petit code??

 
Code :
  1. char caseselectionner[3];
  2. printf("\n\nchoisissez une case :" );
  3. scanf("%s",caseselectionner);
  4. if(caseselectionner=="a1" ){printf("cava" );}


Message édité par joachimssj le 03-08-2015 à 18:53:49
n°2263869
joachimssj
Posté le 03-08-2015 à 19:00:45  profilanswer
 

ah oui je pense que je dois utilisé la fonction strcmp, je vais essayer comme ça  
 

n°2263896
joachimssj
Posté le 04-08-2015 à 13:07:59  profilanswer
 

Bon voila j'ai terminer mon code, c'est un simple liste chainée mais bon au moins ça marche.
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. typedef struct Element Element; // Creation d'une structure Element qui possede un champs nombre et un pointeur vers l'element suivant //
  5. struct Element
  6. {
  7. int nombre;
  8. Element *suivant;
  9. };
  10. typedef struct Liste Liste;
  11. struct Liste
  12. {
  13. Element *premier;                               // une structure de type liste (C'est la case qui pointe vers le 1ère element) avec un pointeur qui pointe vers le premier element
  14. };
  15. Liste *initialisation()                         // Fontion pour initialiser un premiere element et la case de controle liste//
  16. {
  17. Liste *liste = malloc(sizeof(*liste));              // on alloue de la memoire pour un element et pour une case liste (celui qui pointe vers le 1er element)
  18. Element *element = malloc(sizeof(*element));
  19. if (liste == NULL || element == NULL)               // on verifie que les alloc dyn on fonctionné//
  20. {
  21. exit(EXIT_FAILURE);
  22. }
  23. element->nombre=0;                                  // On attribue au champs nombre du 1er element la valeur 0, on fait pointer le pointeur suivant de l'element vers NULL//
  24. element->suivant=NULL;                                          // On fait pointer le pointeur de la case liste vers le nouvel element //
  25. liste->premier=element;
  26. return liste;
  27. }
  28. void inssertiondebutdliste(Liste *liste,int nvnombre) // Fonction qui va inséré un nouvel élement en début de liste//
  29. {
  30. Element *nouvelelement = malloc(sizeof(*nouvelelement)); // on allou la memeoire pour le nouvel element//
  31. if (liste == NULL || nouvelelement == NULL)
  32. {
  33. exit(EXIT_FAILURE);
  34. }
  35. nouvelelement->nombre=nvnombre; // on attribue au champs nombre la valeur nvnombre//
  36. nouvelelement->suivant=liste->premier; // on fait pointer le pointeur suivant du nouvel ellement vers le meme endroit que le ponteur de la case liste(qui pointe vers le 1er element actuel//
  37. liste->premier= nouvelelement; // et on fait pointer la case liste vers le nouveau premier element//
  38. }
  39. void suprimer1erelement(Liste *liste) // fonction qui supprime le 1er element de la liste//
  40. {
  41. if (liste == NULL)
  42. {
  43. exit(EXIT_FAILURE);
  44. }
  45. if (liste->premier != NULL) // si le 1er element n'est pas nul//
  46. {
  47. Element *asuprimer = liste->premier; // on cré un pointeur de type element qui va pointer la ou pointe la case liste qui est le 1er element actuel//
  48. liste->premier=liste->premier->suivant; // on fait que le pointeur de la case liste ne pointe plus vers le 1er element actuel met l'elmenent vers lequel le 1er element pointe cad le 2eme element qui sera le nouveau premier element//
  49. free(asuprimer); // on efface de la memoire ce que notre pointeur pointe cad le 1er element actuel//
  50. }
  51. }
  52. void afficherlistechainer(Liste *liste) // fonction qui affiche la liste chainée //
  53. {
  54. if (liste == NULL)
  55. {
  56. exit(EXIT_FAILURE);
  57. }
  58. Element *actuel= liste->premier; // on crée un element appelé element actuel qui vaut le premier de la liste//
  59. while(actuel != NULL) // on commence par afficher le nombre de l'element actuel qui est le 1er element, puis on passe a l'element suivant et on le parcours, on le fait tant qu'on est pas arriver a la fin de la liste chainé qui vaut NULL//
  60. {
  61. printf("%05d|",actuel->nombre);
  62. actuel=actuel->suivant;
  63. }
  64. }
  65. void initialisationgrille()
  66. {
  67. Liste *malistedecolonne=initialisation();
  68. inssertiondebutdliste(malistedecolonne,4);
  69. inssertiondebutdliste(malistedecolonne,3);
  70. inssertiondebutdliste(malistedecolonne,2);
  71. inssertiondebutdliste(malistedecolonne,1);
  72. inssertiondebutdliste(malistedecolonne,0);
  73. malistedecolonne->premier->suivant->suivant->suivant->suivant->suivant->nombre=5;
  74. Liste *maliste1=initialisation();
  75. inssertiondebutdliste(maliste1,0000);
  76. inssertiondebutdliste(maliste1,0000);
  77. inssertiondebutdliste(maliste1,0000);
  78. inssertiondebutdliste(maliste1,0000);
  79. inssertiondebutdliste(maliste1,0000);
  80. Liste *maliste2=initialisation();
  81. inssertiondebutdliste(maliste2,0000);
  82. inssertiondebutdliste(maliste2,0000);
  83. inssertiondebutdliste(maliste2,0000);
  84. inssertiondebutdliste(maliste2,0000);
  85. inssertiondebutdliste(maliste2,0000);
  86. Liste *maliste3=initialisation();
  87. inssertiondebutdliste(maliste3,0000);
  88. inssertiondebutdliste(maliste3,0000);
  89. inssertiondebutdliste(maliste3,0000);
  90. inssertiondebutdliste(maliste3,0000);
  91. inssertiondebutdliste(maliste3,0000);
  92. Liste *maliste4=initialisation();
  93. inssertiondebutdliste(maliste4,0000);
  94. inssertiondebutdliste(maliste4,0000);
  95. inssertiondebutdliste(maliste4,0000);
  96. inssertiondebutdliste(maliste4,0000);
  97. inssertiondebutdliste(maliste4,0000);
  98. Liste *maliste5=initialisation();
  99. inssertiondebutdliste(maliste5,0000);
  100. inssertiondebutdliste(maliste5,0000);
  101. inssertiondebutdliste(maliste5,0000);
  102. inssertiondebutdliste(maliste5,0000);
  103. inssertiondebutdliste(maliste5,0000);
  104. Liste *maliste6=initialisation();
  105. inssertiondebutdliste(maliste6,0000);
  106. inssertiondebutdliste(maliste6,0000);
  107. inssertiondebutdliste(maliste6,0000);
  108. inssertiondebutdliste(maliste6,0000);
  109. inssertiondebutdliste(maliste6,0000);
  110. Liste *maliste7=initialisation();
  111. inssertiondebutdliste(maliste7,0000);
  112. inssertiondebutdliste(maliste7,0000);
  113. inssertiondebutdliste(maliste7,0000);
  114. inssertiondebutdliste(maliste7,0000);
  115. inssertiondebutdliste(maliste7,0000);
  116. Liste *maliste8=initialisation();
  117. inssertiondebutdliste(maliste8,0000);
  118. inssertiondebutdliste(maliste8,0000);
  119. inssertiondebutdliste(maliste8,0000);
  120. inssertiondebutdliste(maliste8,0000);
  121. inssertiondebutdliste(maliste8,0000);
  122. Liste *maliste9=initialisation();
  123. inssertiondebutdliste(maliste9,0000);
  124. inssertiondebutdliste(maliste9,0000);
  125. inssertiondebutdliste(maliste9,0000);
  126. inssertiondebutdliste(maliste9,0000);
  127. inssertiondebutdliste(maliste9,0000);
  128. Liste *maliste10=initialisation();
  129. inssertiondebutdliste(maliste10,0000);
  130. inssertiondebutdliste(maliste10,0000);
  131. inssertiondebutdliste(maliste10,0000);
  132. inssertiondebutdliste(maliste10,0000);
  133. inssertiondebutdliste(maliste10,0000);
  134. printf("\nN: " );
  135. afficherlistechainer(malistedecolonne);
  136. printf("\na: " );
  137. afficherlistechainer(maliste1);
  138. printf("\nb: " );
  139. afficherlistechainer(maliste2);
  140. printf("\nc: " );
  141. afficherlistechainer(maliste3);
  142. printf("\nd: " );
  143. afficherlistechainer(maliste4);
  144. printf("\ne: " );
  145. afficherlistechainer(maliste5);
  146. printf("\nf: " );
  147. afficherlistechainer(maliste6);
  148. printf("\ng: " );
  149. afficherlistechainer(maliste7);
  150. printf("\nh: " );
  151. afficherlistechainer(maliste8);
  152. printf("\ni: " );
  153. afficherlistechainer(maliste9);
  154. printf("\nj: " );
  155. afficherlistechainer(maliste10);
  156. }
  157. int main()
  158. {
  159. Liste *malistedecolonne=initialisation();
  160. inssertiondebutdliste(malistedecolonne,4);
  161. inssertiondebutdliste(malistedecolonne,3);
  162. inssertiondebutdliste(malistedecolonne,2);
  163. inssertiondebutdliste(malistedecolonne,1);
  164. inssertiondebutdliste(malistedecolonne,0);
  165. malistedecolonne->premier->suivant->suivant->suivant->suivant->suivant->nombre=5;
  166. Liste *maliste1=initialisation();
  167. inssertiondebutdliste(maliste1,0000);
  168. inssertiondebutdliste(maliste1,0000);
  169. inssertiondebutdliste(maliste1,0000);
  170. inssertiondebutdliste(maliste1,0000);
  171. inssertiondebutdliste(maliste1,0000);
  172. Liste *maliste2=initialisation();
  173. inssertiondebutdliste(maliste2,0000);
  174. inssertiondebutdliste(maliste2,0000);
  175. inssertiondebutdliste(maliste2,0000);
  176. inssertiondebutdliste(maliste2,0000);
  177. inssertiondebutdliste(maliste2,0000);
  178. Liste *maliste3=initialisation();
  179. inssertiondebutdliste(maliste3,0000);
  180. inssertiondebutdliste(maliste3,0000);
  181. inssertiondebutdliste(maliste3,0000);
  182. inssertiondebutdliste(maliste3,0000);
  183. inssertiondebutdliste(maliste3,0000);
  184. Liste *maliste4=initialisation();
  185. inssertiondebutdliste(maliste4,0000);
  186. inssertiondebutdliste(maliste4,0000);
  187. inssertiondebutdliste(maliste4,0000);
  188. inssertiondebutdliste(maliste4,0000);
  189. inssertiondebutdliste(maliste4,0000);
  190. Liste *maliste5=initialisation();
  191. inssertiondebutdliste(maliste5,0000);
  192. inssertiondebutdliste(maliste5,0000);
  193. inssertiondebutdliste(maliste5,0000);
  194. inssertiondebutdliste(maliste5,0000);
  195. inssertiondebutdliste(maliste5,0000);
  196. Liste *maliste6=initialisation();
  197. inssertiondebutdliste(maliste6,0000);
  198. inssertiondebutdliste(maliste6,0000);
  199. inssertiondebutdliste(maliste6,0000);
  200. inssertiondebutdliste(maliste6,0000);
  201. inssertiondebutdliste(maliste6,0000);
  202. Liste *maliste7=initialisation();
  203. inssertiondebutdliste(maliste7,0000);
  204. inssertiondebutdliste(maliste7,0000);
  205. inssertiondebutdliste(maliste7,0000);
  206. inssertiondebutdliste(maliste7,0000);
  207. inssertiondebutdliste(maliste7,0000);
  208. Liste *maliste8=initialisation();
  209. inssertiondebutdliste(maliste8,0000);
  210. inssertiondebutdliste(maliste8,0000);
  211. inssertiondebutdliste(maliste8,0000);
  212. inssertiondebutdliste(maliste8,0000);
  213. inssertiondebutdliste(maliste8,0000);
  214. Liste *maliste9=initialisation();
  215. inssertiondebutdliste(maliste9,0000);
  216. inssertiondebutdliste(maliste9,0000);
  217. inssertiondebutdliste(maliste9,0000);
  218. inssertiondebutdliste(maliste9,0000);
  219. inssertiondebutdliste(maliste9,0000);
  220. Liste *maliste10=initialisation();
  221. inssertiondebutdliste(maliste10,0000);
  222. inssertiondebutdliste(maliste10,0000);
  223. inssertiondebutdliste(maliste10,0000);
  224. inssertiondebutdliste(maliste10,0000);
  225. inssertiondebutdliste(maliste10,0000);
  226. int i=0;
  227. while (i<1000)
  228. {
  229.     printf("\nN: " );
  230. afficherlistechainer(malistedecolonne);
  231. printf("\na: " );
  232. afficherlistechainer(maliste1);
  233. printf("\nb: " );
  234. afficherlistechainer(maliste2);
  235. printf("\nc: " );
  236. afficherlistechainer(maliste3);
  237. printf("\nd: " );
  238. afficherlistechainer(maliste4);
  239. printf("\ne: " );
  240. afficherlistechainer(maliste5);
  241. printf("\nf: " );
  242. afficherlistechainer(maliste6);
  243. printf("\ng: " );
  244. afficherlistechainer(maliste7);
  245. printf("\nh: " );
  246. afficherlistechainer(maliste8);
  247. printf("\ni: " );
  248. afficherlistechainer(maliste9);
  249. printf("\nj: " );
  250. afficherlistechainer(maliste10);
  251.    i++;
  252.    char caseselectioner[3];
  253.    char caseciblera0[]="a0";
  254.    char caseciblera1[]="a1";
  255.    char caseciblera2[]="a2";
  256.    char caseciblera3[]="a3";
  257.    char caseciblera4[]="a4";
  258.    char caseciblera5[]="a5";
  259.    char caseciblerb0[]="b0";
  260.    char caseciblerb1[]="b1";
  261.    char caseciblerb2[]="b2";
  262.    char caseciblerb3[]="b3";
  263.    char caseciblerb4[]="b4";
  264.    char caseciblerb5[]="b5";
  265.    char caseciblerc0[]="c0";
  266.    char caseciblerc1[]="c1";
  267.    char caseciblerc2[]="c2";
  268.    char caseciblerc3[]="c3";
  269.    char caseciblerc4[]="c4";
  270.    char caseciblerc5[]="c5";
  271.    char caseciblerd0[]="d0";
  272.    char caseciblerd1[]="d1";
  273.    char caseciblerd2[]="d2";
  274.    char caseciblerd3[]="d3";
  275.    char caseciblerd4[]="d4";
  276.    char caseciblerd5[]="d5";
  277.    char caseciblere0[]="e0";
  278.    char caseciblere1[]="e1";
  279.    char caseciblere2[]="e2";
  280.    char caseciblere3[]="e3";
  281.    char caseciblere4[]="e4";
  282.    char caseciblere5[]="e5";
  283.    char caseciblerf0[]="f0";
  284.    char caseciblerf1[]="f1";
  285.    char caseciblerf2[]="f2";
  286.    char caseciblerf3[]="f3";
  287.    char caseciblerf4[]="f4";
  288.    char caseciblerf5[]="f5";
  289.    char caseciblerg0[]="g0";
  290.    char caseciblerg1[]="g1";
  291.    char caseciblerg2[]="g2";
  292.    char caseciblerg3[]="g3";
  293.    char caseciblerg4[]="g4";
  294.    char caseciblerg5[]="g5";
  295.    char caseciblerh0[]="h0";
  296.    char caseciblerh1[]="h1";
  297.    char caseciblerh2[]="h2";
  298.    char caseciblerh3[]="h3";
  299.    char caseciblerh4[]="h4";
  300.    char caseciblerh5[]="h5";
  301.    char casecibleri0[]="i0";
  302.    char casecibleri1[]="i1";
  303.    char casecibleri2[]="i2";
  304.    char casecibleri3[]="i3";
  305.    char casecibleri4[]="i4";
  306.    char casecibleri5[]="i5";
  307.    char caseciblerj0[]="j0";
  308.    char caseciblerj1[]="j1";
  309.    char caseciblerj2[]="j2";
  310.    char caseciblerj3[]="j3";
  311.    char caseciblerj4[]="j4";
  312.    char caseciblerj5[]="j5";
  313.    printf("\nentrer la case dont vous voulez changer la valeur :" );
  314.    scanf("%s",caseselectioner);
  315.    int comparaisona0=strcmp(caseselectioner,caseciblera0);
  316.    int comparaisona1=strcmp(caseselectioner,caseciblera1);
  317.    int comparaisona2=strcmp(caseselectioner,caseciblera2);
  318.    int comparaisona3=strcmp(caseselectioner,caseciblera3);
  319.    int comparaisona4=strcmp(caseselectioner,caseciblera4);
  320.    int comparaisona5=strcmp(caseselectioner,caseciblera5);
  321.    int comparaisonb0=strcmp(caseselectioner,caseciblerb0);
  322.    int comparaisonb1=strcmp(caseselectioner,caseciblerb1);
  323.    int comparaisonb2=strcmp(caseselectioner,caseciblerb2);
  324.    int comparaisonb3=strcmp(caseselectioner,caseciblerb3);
  325.    int comparaisonb4=strcmp(caseselectioner,caseciblerb4);
  326.    int comparaisonb5=strcmp(caseselectioner,caseciblerb5);
  327.    int comparaisonc0=strcmp(caseselectioner,caseciblerc0);
  328.    int comparaisonc1=strcmp(caseselectioner,caseciblerc1);
  329.    int comparaisonc2=strcmp(caseselectioner,caseciblerc2);
  330.    int comparaisonc3=strcmp(caseselectioner,caseciblerc3);
  331.    int comparaisonc4=strcmp(caseselectioner,caseciblerc4);
  332.    int comparaisonc5=strcmp(caseselectioner,caseciblerc5);
  333.    int comparaisond0=strcmp(caseselectioner,caseciblerd0);
  334.    int comparaisond1=strcmp(caseselectioner,caseciblerd1);
  335.    int comparaisond2=strcmp(caseselectioner,caseciblerd2);
  336.    int comparaisond3=strcmp(caseselectioner,caseciblerd3);
  337.    int comparaisond4=strcmp(caseselectioner,caseciblerd4);
  338.    int comparaisond5=strcmp(caseselectioner,caseciblerd5);
  339.    int comparaisone0=strcmp(caseselectioner,caseciblere0);
  340.    int comparaisone1=strcmp(caseselectioner,caseciblere1);
  341.    int comparaisone2=strcmp(caseselectioner,caseciblere2);
  342.    int comparaisone3=strcmp(caseselectioner,caseciblere3);
  343.    int comparaisone4=strcmp(caseselectioner,caseciblere4);
  344.    int comparaisone5=strcmp(caseselectioner,caseciblere5);
  345.    int comparaisonf0=strcmp(caseselectioner,caseciblerf0);
  346.    int comparaisonf1=strcmp(caseselectioner,caseciblerf1);
  347.    int comparaisonf2=strcmp(caseselectioner,caseciblerf2);
  348.    int comparaisonf3=strcmp(caseselectioner,caseciblerf3);
  349.    int comparaisonf4=strcmp(caseselectioner,caseciblerf4);
  350.    int comparaisonf5=strcmp(caseselectioner,caseciblerf5);
  351.    int comparaisong0=strcmp(caseselectioner,caseciblerg0);
  352.    int comparaisong1=strcmp(caseselectioner,caseciblerg1);
  353.    int comparaisong2=strcmp(caseselectioner,caseciblerg2);
  354.    int comparaisong3=strcmp(caseselectioner,caseciblerg3);
  355.    int comparaisong4=strcmp(caseselectioner,caseciblerg4);
  356.    int comparaisong5=strcmp(caseselectioner,caseciblerg5);
  357.    int comparaisonh0=strcmp(caseselectioner,caseciblerh0);
  358.    int comparaisonh1=strcmp(caseselectioner,caseciblerh1);
  359.    int comparaisonh2=strcmp(caseselectioner,caseciblerh2);
  360.    int comparaisonh3=strcmp(caseselectioner,caseciblerh3);
  361.    int comparaisonh4=strcmp(caseselectioner,caseciblerh4);
  362.    int comparaisonh5=strcmp(caseselectioner,caseciblerh5);
  363.    int comparaisoni0=strcmp(caseselectioner,casecibleri0);
  364.    int comparaisoni1=strcmp(caseselectioner,casecibleri1);
  365.    int comparaisoni2=strcmp(caseselectioner,casecibleri2);
  366.    int comparaisoni3=strcmp(caseselectioner,casecibleri3);
  367.    int comparaisoni4=strcmp(caseselectioner,casecibleri4);
  368.    int comparaisoni5=strcmp(caseselectioner,casecibleri5);
  369.    int comparaisonj0=strcmp(caseselectioner,caseciblerj0);
  370.    int comparaisonj1=strcmp(caseselectioner,caseciblerj1);
  371.    int comparaisonj2=strcmp(caseselectioner,caseciblerj2);
  372.    int comparaisonj3=strcmp(caseselectioner,caseciblerj3);
  373.    int comparaisonj4=strcmp(caseselectioner,caseciblerj4);
  374.    int comparaisonj5=strcmp(caseselectioner,caseciblerj5);
  375.    if(comparaisona0==0)
  376.    {int nvnombrea0;
  377.    printf("\nentrez votre nombre :" );
  378.    scanf("%d",&nvnombrea0);
  379.    maliste1->premier->nombre=nvnombrea0;}
  380.    if(comparaisona1==0)
  381.    {int nvnombrea1;
  382.    printf("\nentrez votre nombre :" );
  383.    scanf("%d",&nvnombrea1);
  384.    maliste1->premier->suivant->nombre=nvnombrea1;}
  385.    if(comparaisona2==0)
  386.    {int nvnombrea2;
  387.    printf("\nentrez votre nombre :" );
  388.    scanf("%d",&nvnombrea2);
  389.    maliste1->premier->suivant->suivant->nombre=nvnombrea2;}
  390.    if(comparaisona3==0)
  391.    {int nvnombrea3;
  392.    printf("\nentrez votre nombre :" );
  393.    scanf("%d",&nvnombrea3);
  394.    maliste1->premier->suivant->suivant->suivant->nombre=nvnombrea3;}
  395.    if(comparaisona4==0)
  396.    {int nvnombrea4;
  397.    printf("\nentrez votre nombre :" );
  398.    scanf("%d",&nvnombrea4);
  399.    maliste1->premier->suivant->suivant->suivant->suivant->nombre=nvnombrea4;}
  400.    if(comparaisona5==0)
  401.    {int nvnombrea5;
  402.    printf("\nentrez votre nombre :" );
  403.    scanf("%d",&nvnombrea5);
  404.    maliste1->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombrea5;}
  405.       if(comparaisonb0==0)
  406.    {int nvnombreb0;
  407.    printf("\nentrez votre nombre :" );
  408.    scanf("%d",&nvnombreb0);
  409.    maliste2->premier->nombre=nvnombreb0;}
  410.    if(comparaisonb1==0)
  411.    {int nvnombreb1;
  412.    printf("\nentrez votre nombre :" );
  413.    scanf("%d",&nvnombreb1);
  414.    maliste2->premier->suivant->nombre=nvnombreb1;}
  415.    if(comparaisonb2==0)
  416.    {int nvnombreb2;
  417.    printf("\nentrez votre nombre :" );
  418.    scanf("%d",&nvnombreb2);
  419.    maliste2->premier->suivant->suivant->nombre=nvnombreb2;}
  420.    if(comparaisonb3==0)
  421.    {int nvnombreb3;
  422.    printf("\nentrez votre nombre :" );
  423.    scanf("%d",&nvnombreb3);
  424.    maliste2->premier->suivant->suivant->suivant->nombre=nvnombreb3;}
  425.    if(comparaisonb4==0)
  426.    {int nvnombreb4;
  427.    printf("\nentrez votre nombre :" );
  428.    scanf("%d",&nvnombreb4);
  429.    maliste2->premier->suivant->suivant->suivant->suivant->nombre=nvnombreb4;}
  430.    if(comparaisonb5==0)
  431.    {int nvnombreb5;
  432.    printf("\nentrez votre nombre :" );
  433.    scanf("%d",&nvnombreb5);
  434.    maliste2->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombreb5;}
  435.       if(comparaisonc0==0)
  436.    {int nvnombrec0;
  437.    printf("\nentrez votre nombre :" );
  438.    scanf("%d",&nvnombrec0);
  439.    maliste3->premier->nombre=nvnombrec0;}
  440.    if(comparaisonc1==0)
  441.    {int nvnombrec1;
  442.    printf("\nentrez votre nombre :" );
  443.    scanf("%d",&nvnombrec1);
  444.    maliste3->premier->suivant->nombre=nvnombrec1;}
  445.    if(comparaisonc2==0)
  446.    {int nvnombrec2;
  447.    printf("\nentrez votre nombre :" );
  448.    scanf("%d",&nvnombrec2);
  449.    maliste3->premier->suivant->suivant->nombre=nvnombrec2;}
  450.    if(comparaisonc3==0)
  451.    {int nvnombrec3;
  452.    printf("\nentrez votre nombre :" );
  453.    scanf("%d",&nvnombrec3);
  454.    maliste3->premier->suivant->suivant->suivant->nombre=nvnombrec3;}
  455.    if(comparaisonc4==0)
  456.    {int nvnombrec4;
  457.    printf("\nentrez votre nombre :" );
  458.    scanf("%d",&nvnombrec4);
  459.    maliste3->premier->suivant->suivant->suivant->suivant->nombre=nvnombrec4;}
  460.    if(comparaisonc5==0)
  461.    {int nvnombrec5;
  462.    printf("\nentrez votre nombre :" );
  463.    scanf("%d",&nvnombrec5);
  464.    maliste3->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombrec5;}
  465.       if(comparaisond0==0)
  466.    {int nvnombred0;
  467.    printf("\nentrez votre nombre :" );
  468.    scanf("%d",&nvnombred0);
  469.    maliste4->premier->nombre=nvnombred0;}
  470.    if(comparaisond1==0)
  471.    {int nvnombred1;
  472.    printf("\nentrez votre nombre :" );
  473.    scanf("%d",&nvnombred1);
  474.    maliste4->premier->suivant->nombre=nvnombred1;}
  475.    if(comparaisond2==0)
  476.    {int nvnombred2;
  477.    printf("\nentrez votre nombre :" );
  478.    scanf("%d",&nvnombred2);
  479.    maliste4->premier->suivant->suivant->nombre=nvnombred2;}
  480.    if(comparaisond3==0)
  481.    {int nvnombred3;
  482.    printf("\nentrez votre nombre :" );
  483.    scanf("%d",&nvnombred3);
  484.    maliste4->premier->suivant->suivant->suivant->nombre=nvnombred3;}
  485.    if(comparaisond4==0)
  486.    {int nvnombred4;
  487.    printf("\nentrez votre nombre :" );
  488.    scanf("%d",&nvnombred4);
  489.    maliste4->premier->suivant->suivant->suivant->suivant->nombre=nvnombred4;}
  490.    if(comparaisond5==0)
  491.    {int nvnombred5;
  492.    printf("\nentrez votre nombre :" );
  493.    scanf("%d",&nvnombred5);
  494.    maliste4->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombred5;}
  495.       if(comparaisone0==0)
  496.    {int nvnombree0;
  497.    printf("\nentrez votre nombre :" );
  498.    scanf("%d",&nvnombree0);
  499.    maliste5->premier->nombre=nvnombree0;}
  500.    if(comparaisone1==0)
  501.    {int nvnombree1;
  502.    printf("\nentrez votre nombre :" );
  503.    scanf("%d",&nvnombree1);
  504.    maliste5->premier->suivant->nombre=nvnombree1;}
  505.    if(comparaisone2==0)
  506.    {int nvnombree2;
  507.    printf("\nentrez votre nombre :" );
  508.    scanf("%d",&nvnombree2);
  509.    maliste5->premier->suivant->suivant->nombre=nvnombree2;}
  510.    if(comparaisone3==0)
  511.    {int nvnombree3;
  512.    printf("\nentrez votre nombre :" );
  513.    scanf("%d",&nvnombree3);
  514.    maliste5->premier->suivant->suivant->suivant->nombre=nvnombree3;}
  515.    if(comparaisone4==0)
  516.    {int nvnombree4;
  517.    printf("\nentrez votre nombre :" );
  518.    scanf("%d",&nvnombree4);
  519.    maliste5->premier->suivant->suivant->suivant->suivant->nombre=nvnombree4;}
  520.    if(comparaisone5==0)
  521.    {int nvnombree5;
  522.    printf("\nentrez votre nombre :" );
  523.    scanf("%d",&nvnombree5);
  524.    maliste5->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombree5;}
  525.       if(comparaisonf0==0)
  526.    {int nvnombref0;
  527.    printf("\nentrez votre nombre :" );
  528.    scanf("%d",&nvnombref0);
  529.    maliste6->premier->nombre=nvnombref0;}
  530.    if(comparaisonf1==0)
  531.    {int nvnombref1;
  532.    printf("\nentrez votre nombre :" );
  533.    scanf("%d",&nvnombref1);
  534.    maliste6->premier->suivant->nombre=nvnombref1;}
  535.    if(comparaisonf2==0)
  536.    {int nvnombref2;
  537.    printf("\nentrez votre nombre :" );
  538.    scanf("%d",&nvnombref2);
  539.    maliste6->premier->suivant->suivant->nombre=nvnombref2;}
  540.    if(comparaisonf3==0)
  541.    {int nvnombref3;
  542.    printf("\nentrez votre nombre :" );
  543.    scanf("%d",&nvnombref3);
  544.    maliste6->premier->suivant->suivant->suivant->nombre=nvnombref3;}
  545.    if(comparaisonf4==0)
  546.    {int nvnombref4;
  547.    printf("\nentrez votre nombre :" );
  548.    scanf("%d",&nvnombref4);
  549.    maliste6->premier->suivant->suivant->suivant->suivant->nombre=nvnombref4;}
  550.    if(comparaisonf5==0)
  551.    {int nvnombref5;
  552.    printf("\nentrez votre nombre :" );
  553.    scanf("%d",&nvnombref5);
  554.    maliste6->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombref5;}
  555.       if(comparaisong0==0)
  556.    {int nvnombreg0;
  557.    printf("\nentrez votre nombre :" );
  558.    scanf("%d",&nvnombreg0);
  559.    maliste7->premier->nombre=nvnombreg0;}
  560.    if(comparaisong1==0)
  561.    {int nvnombreg1;
  562.    printf("\nentrez votre nombre :" );
  563.    scanf("%d",&nvnombreg1);
  564.    maliste7->premier->suivant->nombre=nvnombreg1;}
  565.    if(comparaisong2==0)
  566.    {int nvnombreg2;
  567.    printf("\nentrez votre nombre :" );
  568.    scanf("%d",&nvnombreg2);
  569.    maliste7->premier->suivant->suivant->nombre=nvnombreg2;}
  570.    if(comparaisong3==0)
  571.    {int nvnombreg3;
  572.    printf("\nentrez votre nombre :" );
  573.    scanf("%d",&nvnombreg3);
  574.    maliste7->premier->suivant->suivant->suivant->nombre=nvnombreg3;}
  575.    if(comparaisong4==0)
  576.    {int nvnombreg4;
  577.    printf("\nentrez votre nombre :" );
  578.    scanf("%d",&nvnombreg4);
  579.    maliste7->premier->suivant->suivant->suivant->suivant->nombre=nvnombreg4;}
  580.    if(comparaisong5==0)
  581.    {int nvnombreg5;
  582.    printf("\nentrez votre nombre :" );
  583.    scanf("%d",&nvnombreg5);
  584.    maliste7->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombreg5;}
  585.       if(comparaisonh0==0)
  586.    {int nvnombreh0;
  587.    printf("\nentrez votre nombre :" );
  588.    scanf("%d",&nvnombreh0);
  589.    maliste8->premier->nombre=nvnombreh0;}
  590.    if(comparaisonh1==0)
  591.    {int nvnombreh1;
  592.    printf("\nentrez votre nombre :" );
  593.    scanf("%d",&nvnombreh1);
  594.    maliste8->premier->suivant->nombre=nvnombreh1;}
  595.    if(comparaisonh2==0)
  596.    {int nvnombreh2;
  597.    printf("\nentrez votre nombre :" );
  598.    scanf("%d",&nvnombreh2);
  599.    maliste8->premier->suivant->suivant->nombre=nvnombreh2;}
  600.    if(comparaisonh3==0)
  601.    {int nvnombreh3;
  602.    printf("\nentrez votre nombre :" );
  603.    scanf("%d",&nvnombreh3);
  604.    maliste8->premier->suivant->suivant->suivant->nombre=nvnombreh3;}
  605.    if(comparaisonh4==0)
  606.    {int nvnombreh4;
  607.    printf("\nentrez votre nombre :" );
  608.    scanf("%d",&nvnombreh4);
  609.    maliste8->premier->suivant->suivant->suivant->suivant->nombre=nvnombreh4;}
  610.    if(comparaisonh5==0)
  611.    {int nvnombreh5;
  612.    printf("\nentrez votre nombre :" );
  613.    scanf("%d",&nvnombreh5);
  614.    maliste8->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombreh5;}
  615.       if(comparaisoni0==0)
  616.    {int nvnombrei0;
  617.    printf("\nentrez votre nombre :" );
  618.    scanf("%d",&nvnombrei0);
  619.    maliste9->premier->nombre=nvnombrei0;}
  620.    if(comparaisoni1==0)
  621.    {int nvnombrei1;
  622.    printf("\nentrez votre nombre :" );
  623.    scanf("%d",&nvnombrei1);
  624.    maliste9->premier->suivant->nombre=nvnombrei1;}
  625.    if(comparaisoni2==0)
  626.    {int nvnombrei2;
  627.    printf("\nentrez votre nombre :" );
  628.    scanf("%d",&nvnombrei2);
  629.    maliste9->premier->suivant->suivant->nombre=nvnombrei2;}
  630.    if(comparaisoni3==0)
  631.    {int nvnombrei3;
  632.    printf("\nentrez votre nombre :" );
  633.    scanf("%d",&nvnombrei3);
  634.    maliste9->premier->suivant->suivant->suivant->nombre=nvnombrei3;}
  635.    if(comparaisoni4==0)
  636.    {int nvnombrei4;
  637.    printf("\nentrez votre nombre :" );
  638.    scanf("%d",&nvnombrei4);
  639.    maliste9->premier->suivant->suivant->suivant->suivant->nombre=nvnombrei4;}
  640.    if(comparaisoni5==0)
  641.    {int nvnombrei5;
  642.    printf("\nentrez votre nombre :" );
  643.    scanf("%d",&nvnombrei5);
  644.    maliste9->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombrei5;}
  645.       if(comparaisonj0==0)
  646.    {int nvnombrej0;
  647.    printf("\nentrez votre nombre :" );
  648.    scanf("%d",&nvnombrej0);
  649.    maliste10->premier->nombre=nvnombrej0;}
  650.    if(comparaisonj1==0)
  651.    {int nvnombrej1;
  652.    printf("\nentrez votre nombre :" );
  653.    scanf("%d",&nvnombrej1);
  654.    maliste10->premier->suivant->nombre=nvnombrej1;}
  655.    if(comparaisonj2==0)
  656.    {int nvnombrej2;
  657.    printf("\nentrez votre nombre :" );
  658.    scanf("%d",&nvnombrej2);
  659.    maliste10->premier->suivant->suivant->nombre=nvnombrej2;}
  660.    if(comparaisonj3==0)
  661.    {int nvnombrej3;
  662.    printf("\nentrez votre nombre :" );
  663.    scanf("%d",&nvnombrej3);
  664.    maliste10->premier->suivant->suivant->suivant->nombre=nvnombrej3;}
  665.    if(comparaisonj4==0)
  666.    {int nvnombrej4;
  667.    printf("\nentrez votre nombre :" );
  668.    scanf("%d",&nvnombrej4);
  669.    maliste10->premier->suivant->suivant->suivant->suivant->nombre=nvnombrej4;}
  670.    if(comparaisonj5==0)
  671.    {int nvnombrej5;
  672.    printf("\nentrez votre nombre :" );
  673.    scanf("%d",&nvnombrej5);
  674.    maliste10->premier->suivant->suivant->suivant->suivant->suivant->nombre=nvnombrej5;}
  675. }
  676. }

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Mini Excel – système de donnée en grille

 

Sujets relatifs
Récupérer un élément dans la base de donnéeComment puis-je mettre en blanc une petie d'un texte ? excel
mini-projet à réaliserVBA sélectionner contenus de plusieurs fichiers excel
[c] l'affichage de ces mini programmesJe n'arrive pas à créer un graphique sous Excel
Excel : afficher le détail du calcul dans une autre celluleRemplir une map en java selon une logique donnee
Bug VBA : conversion .txt en .xlsx - Excel redémarreexportation de graphique d'excel à power point : ne fonctionne qu'une
Plus de sujets relatifs à : Mini Excel – système de donnée en grille


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR