pacpis Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 Salut à tous, je suis débutant en langage C et j'aimerai avoir votre aide svp, j'ai besoin de savoir comment avoir ces programmes : -Recherche d’un nom dans un tableau -Tri par ordre alphabétique -Recherche du minimum et du maximum d’un tableau - Insertion d’un élément dans un tableau ordonné. J'aimerai les avoir séparemment, donc si l'un de vous trouve un il me le poste. Lien vers le commentaire Partager sur d’autres sites More sharing options...
tsubasaleguedin Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 Salut à tous, je suis débutant en langage C et j'aimerai avoir votre aide svp, j'ai besoin de savoir comment avoir ces programmes : -Recherche d’un nom dans un tableau -Tri par ordre alphabétique -Recherche du minimum et du maximum d’un tableau - Insertion d’un élément dans un tableau ordonné. J'aimerai les avoir séparemment, donc si l'un de vous trouve un il me le poste. 1- Voir boucle for/while afin de parcourir les entrées du tableau et de comparé avec ta clef/chaine 2- Voir algo de tri ( sequentiel, dicho etc .. ) 3- Voir 2 4- Allocation et creation du nouveau tableau, suppression de l'ancien. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Soulfly_tribe90 Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 Comment avoir ce type de programme... Très simplement en se servant de son cerveau et en regardant les indices de tsubasa. C'est plutôt de l'algo qui n'utilise pas des choses très compliqué en C. Bonne chance et si tu as encore du mal,poste du code au lieu de demander que l'on te ponde un code entier Lien vers le commentaire Partager sur d’autres sites More sharing options...
astero-H Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 Comment avoir ces programmes ? en buchant tes cours surement... en tout cas pas en attendant ici qu'une bonne poire veuille bien faire tes devoirs à ta place... lol Et tes programmes c'est genre 3 lignes chacun, pas de quoi casser 3 pattes à un canard Encore si y'avais du challenge je veux bien mais là Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dush Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 Par rapport au trie d'un tableau par ordre alphabétique, y'a une fonction qui permet de comparer au moins 2 lettres? Lien vers le commentaire Partager sur d’autres sites More sharing options...
astero-H Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 http://www.cppreference.com/ ça peut aider au passage, si je me souviens bien en C tu peux faire : if ('a' > 'b') // faux if ('a' < 'b') // vrai je crois qu'il compare le code ascii... à vérifier ça fait des années que j'ai pas fait de C Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 1 février 2007 Auteur Partager Posté(e) le 1 février 2007 Merci pour vos reponses, je vais suivre vos conseils puis je vous informe du reste Lien vers le commentaire Partager sur d’autres sites More sharing options...
Soulfly_tribe90 Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 Ouai tu verras ce que tu demande c'est vraiment pas compliqué et je dirais que c'est des bases donc tu as quand même meilleur temps de bosser dessus seul et si tu coince vraiment a un endroit tu post ton code et on pourra t'aider. Te donner le code tout fait ne t'aiderais pas du tout a comprendre les mécanismes Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 1 février 2007 Partager Posté(e) le 1 février 2007 alors franchement pour les algo, et bien sers toi de tes neurones, tu verras, ça te seras utile par la suite. Si tu as des problèmes à retranscrire tes algo en C, poste les nous en français/pseudocode/meta-langage et on t'aidera sur la syntaxe. au passage, pour comparer deux chaine de caractère, il existe strncmp(), à regarder dans le man Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 4 février 2007 Auteur Partager Posté(e) le 4 février 2007 J'ai commencé par le premier mais la compilation est impossible :j'ai des erreurs, voici mon code source #include<stdio.h> #include<string.h> main() { int nbr_mot, i; char tab[nbr_mot], mot; /*Remplissage du tableau*/ printf("Saisir le nombre de mots du tableau: \n"); scanf("%d\n", &nbr_mot); for(i=1, i=nbr_mot, i++) scanf("%c", &tab[i]); /*Recherche d'un mot dans un tableau*/ printf("\n Saisir le mot à rechercher dans le tableau : "); scanf("%c\n", &mot); for(i=1, i=nbr_mot, i++); while(mot!=tab[i]); strcmp(mot, tab[i]); printf("Le mot cherché est à la ligne %d", i); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
windu.2b Posté(e) le 4 février 2007 Partager Posté(e) le 4 février 2007 Tu nous laches un code comme ca, sans même préciser d'où vient le problème de compilation! Tu pourrais au moins indiquer la ligne et le message d'erreur, ca ferait gagner du temps à tout le monde... Ah, une petite remarque au passage: les titres de topic dans le genre de celui-ci, évite parce que c'est super-chiant de voir marqué "urgent" "need help pliz!!!" "svp, aidez-moi" et autres conneries du même tonneau edit: après avoir lu rapidement ton code, l'erreur semble venir des boucles 'for', non? Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 4 février 2007 Auteur Partager Posté(e) le 4 février 2007 Pour remarque, tu n'es pas forcé de répondre. J'ai pas besoin de me faire sermoner par quelqu'un comme toi donc ............. Voici les codes d'erreurs que j'ai recu: recherchenom.c: In function ‘main’: recherchenom.c:13: error: expected ‘;’ before ‘)’ token recherchenom.c:13: error: expected expression before ‘)’ token recherchenom.c:19: error: expected ‘;’ before ‘)’ token recherchenom.c:19: error: expected expression before ‘)’ token recherchenom.c:21: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast recherchenom.c:21: warning: passing argument 2 of ‘strcmp’ makes pointer from integer without a cast Merci pour ceux qui pouront m'aider Lien vers le commentaire Partager sur d’autres sites More sharing options...
mogwai93 Posté(e) le 4 février 2007 Partager Posté(e) le 4 février 2007 dans le "for", il faut mettre des ; au lieu , !!! pour l'algo de recherche : trouve = NON index_tableau = 1 tant que ( (trouve = NON) ET (index_tableau < taille_tableau)) faire debut si (tableau [index_tableau] == mot_a_chercher alors trouve = OUI sinon incremente de 1 index_tableau fin si (trouve = OUI) alors afficher tableau [index_tableau] Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dush Posté(e) le 4 février 2007 Partager Posté(e) le 4 février 2007 main() // <= Il ne faut pas préciser 'void main(void)' ? { int nbr_mot, i; char tab[nbr_mot], mot; // <= En C ou peux pas créer de tableau d'une valeur non fixe... /*Remplissage du tableau*/ printf("Saisir le nombre de mots du tableau: \n"); scanf("%d\n", &nbr_mot); for(i=1, i=nbr_mot, i++) // <= C'est des ';' à la place des ',' scanf("%c", &tab[i]); // C'est pas '%s' pour une chaine et '%c' pour un seul caractère? /*Recherche d'un mot dans un tableau*/ printf("\n Saisir le mot à rechercher dans le tableau : "); scanf("%c\n", &mot); for(i=1, i=nbr_mot, i++); while(mot!=tab[i]); strcmp(mot, tab[i]); // Il doit manquer des '*' avant les 2 arguments: c'est des pointeur... (je pense :D) printf("Le mot cherché est à la ligne %d", i); } Je reviens sur la définition des caractères: il te faudrai un '#define nbr_mot 500' en haut (500 pour être sur que ça ne dépasse pas). Et oubli le 'int nbr_mot' et la demande du nombre ainsi que la question pour le redéfinir . Pour définir le mot, je pense que tu est obligé de faire un : char mot[nbLettre], tab[nbr_mot][nbLettre]; // faut un #define pour nbLettre char étant un caractère, il te faut un tableau de caractères pour avoir un mot et un tableau de mot pour tab. Dans ce cas, tu ne devrai plus avoir besoin des '*' dans le strmp. PS: je n'ai encore jamais manipulé de chaines de caractères, merci de me corriger et/ou de donner le résultat PS2: Un changement du nom du sujets serai le bien venue... "urgent" ne veux rien dire :s Pense à ceux qui sont là tout le temps et l'état du forum si tout le monde fesait comme toi. Wii: Il en faut pour tout le monde Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 4 février 2007 Auteur Partager Posté(e) le 4 février 2007 Merci pour ceux qui veulent bien m'aider, je vais suivre tous vos conseils. Pour commencer, j''éditer le titre du Topic. Je vais faire les modifications necessaires et je vous poste le résultat. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 4 février 2007 Auteur Partager Posté(e) le 4 février 2007 Salut j'ai suivi vos deux conseils, mais je commence à m'embrouiller car j'ai plus d'erreur encore voici le code : #include<stdio.h> #include<string.h> main(void) { #define nbr_mot 50; #define nbLettre; int i; char tab[nbr_mot]; char mot, trouve=NON; int index_tab=1; /*Remplissage du tableau*/ char mot[nbLettre], tab[nbr_mot][nbLettre]; for(i=1; i=nbr_mot; i++) scanf("%s", &tab[i]); /*Recherche d'un mot dans un tableau*/ printf("\n Saisir le mot à rechercher dans le tableau : "); scanf("%c\n", &mot); while(trouve=NON && index_tab<nbr_mot); { if(tab[index_tab]==mot); trouve=OUI; else index_tab++ } if(trouve=OUI) printf("Le mot cherché est à la ligne %d", index_tab); } voici les erreurs que j'ai obtenu : recherchenom.c:7:19: warning: missing whitespace after the macro name recherchenom.c: In function ‘main’: recherchenom.c:9: error: expected ‘]’ before ‘;’ token recherchenom.c:10: error: ‘NON’ undeclared (first use in this function) recherchenom.c:10: error: (Each undeclared identifier is reported only once recherchenom.c:10: error: for each function it appears in.) recherchenom.c:14: error: expected expression before ‘;’ token recherchenom.c:14: error: expected statement before ‘]’ token recherchenom.c:14: error: expected expression before ‘[’ token recherchenom.c:15: error: expected expression before ‘;’ token recherchenom.c:16: error: ‘tab’ undeclared (first use in this function) recherchenom.c:21: error: expected ‘)’ before ‘;’ token recherchenom.c:24: error: ‘OUI’ undeclared (first use in this function) recherchenom.c:25: error: expected expression before ‘else’ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dush Posté(e) le 4 février 2007 Partager Posté(e) le 4 février 2007 #include<stdio.h> #include<string.h> #define nbr_mot 50 // Les define sont avec les #include et il n'y a pas de ';' à la fin. #define nbLettre 20 // Il faut définir un nombre main(void) { int i; char tab[nbr_mot]; // Tu créer 2 fois tes variables? char mot, trouve=NON; // considère plutôt que trouve est un int : 0 quand c'est "non" et 1 quand c'est oui;) int index_tab=1; /*Remplissage du tableau*/ char mot[nbLettre], tab[nbr_mot][nbLettre]; // Tu crée 2 fois tes varialbles? for(i=1; i=nbr_mot; i++) scanf("%s", &tab[i]); // Je ne pense pas qu'il faille le '&' /*Recherche d'un mot dans un tableau*/ printf("\n Saisir le mot à rechercher dans le tableau : "); scanf("%c\n", &mot); // Je ne pense pas qu'il faille le '&' et ne met pas de '\n' dans un scanf while(trouve=NON && index_tab<nbr_mot); // pour tester une variable (int) il faut faire '==' { if(tab[index_tab]==mot) { // pas de ';' après un if trouve=OUI; } else { // moi j'ai tendance à mettre des accolade partout :D index_tab++ } } if(trouve=OUI) printf("Le mot cherché est à la ligne %d", index_tab); } Tu devrai aller voir sur Le site du zéro. Ils ont un cours sur le C pas mal du tout... Et pour info, si tu fait #define toto titi, c'est comme si tu remplacais tout les 'toto' en 'titi' dans tn code Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 4 février 2007 Auteur Partager Posté(e) le 4 février 2007 Merci pour cette aide Dush (Tu es un génie en C ou quoi?) , tout se passe bien sauf au niveau de l'exécution, voici mon code final: #include<stdio.h> #include<string.h> #define nbr_mot 50 #define nbLettre 20 main(void) { int i; char tab[nbr_mot], mot; int trouve=0, index_tab=1; /*Remplissage du tableau*/ printf("Saisir les mots du tableau: "); for(i=1; i=nbr_mot; i++) scanf("%s", tab[i]); /*Recherche d'un mot dans un tableau*/ printf("\n Saisir le mot à rechercher dans le tableau : "); scanf("%c", mot); while(trouve==0 && index_tab<nbr_mot); { if(tab[index_tab]==mot) trouve=1; else { index_tab++; } } if(trouve=1) printf("Le mot cherché est à la ligne %d", index_tab); } en executant j'obtiens ceci apres avoir saisi: Erreur de segmentation ???? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Quarky Posté(e) le 4 février 2007 Partager Posté(e) le 4 février 2007 pacpis : d'utiliser la balise code. Et rappelles toi que toute remarque est bonne à prendre surtout venant de quelqu'un qui peut t'aider. Dans le cas présent, windu faisait la démarche mais il lui manquait de quoi apporter un élément de réponse. Par contre ces mots étaient peut être fort. Ils ont du dépasser sa pensée. PS : un conseil : tu devrais peut être chercher tout seul à présent. Cela te permettrait très certainement de progresser car on apprend toujours plus par soi-même plutôt que lorsque quelqu'un te dit on sont les erreurs. Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 4 février 2007 Auteur Partager Posté(e) le 4 février 2007 Merci pour tes conseils Quarky, j'avais pas vu la balise code, mais je vais éditer. Le problème est que je n'ai jamais rencontré d'erreur à propos de la segmentation. J'ai essayé de modifier mon code autant que possible, mais rien (Bizarre) Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 4 février 2007 Auteur Partager Posté(e) le 4 février 2007 Quelqu'un pourrait il me dire ce qui entraine l'erreur de segmentation.? . J'ai essayé help et man mais rien Lien vers le commentaire Partager sur d’autres sites More sharing options...
Soulfly_tribe90 Posté(e) le 4 février 2007 Partager Posté(e) le 4 février 2007 En fait je comprend pas vraiment ou tu veux en venir --> Au départ tu veux récupérer une chaine de caractère ? printf("Saisir les mots du tableau: "); for(i=1; i=nbr_mot; i++) scanf("%s", tab[i]); Si tu veux récupérer une chaine de caractère qu'un utilisateur tape dans la console je te conseil plutôt cette manière : char* string; printf("Saisir un mot: "); fgets(string,1024,stdin); printf("Mot : %s",string); Après le reste ca découle vachement me semble t'il que tu n'utilise pas les chaine de caractère correctement (char *) Par contre si tu voulais faire un tableau qui contient plusieurs mots dans ce cas tu devrais utiliser un tableau destring donc un char** et c'est là que ca commence a être interressant Lien vers le commentaire Partager sur d’autres sites More sharing options...
pacpis Posté(e) le 5 février 2007 Auteur Partager Posté(e) le 5 février 2007 Enfin un qui comprend mon problème, Je veux créer un tablleu contenant des mots, puis ensuite rechecher un mot dans ce tableau. suis -je clair à présent? Lien vers le commentaire Partager sur d’autres sites More sharing options...
woodystable Posté(e) le 5 février 2007 Partager Posté(e) le 5 février 2007 1/ for(i=1; i=nbr_mot; i++) Comparaison toujours fausse sauf pour nbr_mot à 1. 2/ scanf("%s", tab[i]); incohérence. tab est un string et pas un trableau de string. 3/ scanf("%c", mot); Mauvaise idée d'appeller mot un caractère 4/ while(trouve==0 && index_tab<nbr_mot); { if(tab[index_tab]==mot) trouve=1; else { index_tab++; } } Trop compliqué. Plus simple : while (tab[index_tab++]!=mot && index_tab<nbr_mot); 5/ Évite de mettre des cartons rouges à quelqu'un qui te fais remarquer une erreur, ça ne donne pas envie d'aider... Lien vers le commentaire Partager sur d’autres sites More sharing options...
mogwai93 Posté(e) le 5 février 2007 Partager Posté(e) le 5 février 2007 sauf que en C/C++, on ne peut pas comparer 2 strings de cette facon : tab[index_tab++] != mot il faut passer par strcmp et/ou les variantes !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.