Ou est l'errreur - C - Programmation
Marsh Posté le 03-01-2007 à 20:25:50
Une petite erreur qui saute aux yeux :
if((c[i]>='A')&&('Z'<=c[i])) |
est équivalent à
if((c[i]>='A')&&(c[i]>='Z')) |
alors que cela devrait être
if((c[i]>='A')&&(c[i]<='Z')) |
Marsh Posté le 03-01-2007 à 20:31:28
Alors voila faut pas chercher loin :
L'idée est bonne mais pas approfondie :
Si au lieu de faire :
Code :
|
Tu fesais :
Code :
|
ca marcherai...
Autre solution : utilise les fonctions de String.h pour mettre en minuscule... elles existent !
Edit : olivthill tu as raison, il y avait un autre probleme ici aussi mais ca marche quand meme our les lettres
Marsh Posté le 03-01-2007 à 21:29:16
Ange_blond a écrit : Si au lieu de faire :
|
Si on omet les fonctions de <string.h>, c'est encore plus parlant d'écrire :
Code :
|
samos38 a écrit :
|
Personnellement je quitte une fonction dès que sa raison d'être n'existe plus.
Code :
|
Mais cette façon d'écrire est contraire aux principes de la prog structurée et certains (profs ???) peuvent ne pas l'apprécier...
Marsh Posté le 03-01-2007 à 22:02:56
Ben plusieurs return dans une même fonction peut etre considéré comme une erreur de programmation voire algorithmique même... mais bon, chacun ses preferences...
Marsh Posté le 03-01-2007 à 22:59:47
Ange_blond a écrit : Ben plusieurs return dans une même fonction peut etre considéré comme une erreur de programmation voire algorithmique même... |
C'est là qu'il faut se montrer très prudent et ne pas tomber dans le... fanatisme.
Pour moi, les règles c'est bien "en général". Ensuite, tout en connaissant les règles et le danger associé, on peut, parfois, s'en affranchir (comme dans mon exemple concernant "control()" )...
Marsh Posté le 04-01-2007 à 01:25:59
Ange_blond a écrit : Autre solution : utilise les fonctions de String.h pour mettre en minuscule... elles existent ! |
Montre les !
Par contre, je peux te montrer celles de <ctype.h>...
Marsh Posté le 04-01-2007 à 10:53:18
Ange_blond a écrit : Ben plusieurs return dans une même fonction peut etre considéré comme une erreur de programmation voire algorithmique même... mais bon, chacun ses preferences... |
ben suffit de remplacer le for par un while(con == 0) {} et comme ça, on a plus qu'un seul return...
par ailleurs, moi, j'ai toujours appris qu'il fallait mettre des () autour de chaque condition (je fais référence à la ligne 14 du code initial).
Marsh Posté le 04-01-2007 à 12:54:28
rufo a écrit : ben suffit de remplacer le for par un while(con == 0) {} et comme ça, on plus qu'un seul return... |
Joli !!!
rufo a écrit : par ailleurs, moi, j'ai toujours appris qu'il fallait mettre des () autour de chaque condition (je fais référence à la ligne 14 du code initial). |
C'est le problème de l'apprentissage. Tu subis obligatoirement les habitudes de ton mentor. Moi, le mien me disait "mettre des parenthèses ne fait que montrer que tu ne connais pas les priorités des opérateurs"
Ensuite, entre le "toujours" et le "jamais" on peut arriver à trouver un juste milieu qu'on finalise avec ses propres expèriences du C...
Marsh Posté le 04-01-2007 à 13:01:06
Sve@r a écrit : Joli !!! |
quand je parlais du while, on est bien d'accord que la condition n'était pas complète, hein. C'était pour l'idée. Il est bien évidement qu'il faut tenir compte de la longueur de la chaîne Sinon, on va avoir un petit pb si "con" ne passe jamais à 1...
Marsh Posté le 04-01-2007 à 13:13:45
rufo a écrit : quand je parlais du while, on est bien d'accord que la condition n'était pas complète, hein. C'était pour l'idée. Il est bien évidement qu'il faut tenir compte de la longueur de la chaîne |
Aucun sous-entendu - J'ai réellement trouvé ton idée jolie. Tu as réussi à trouver un juste milieu entre la fonction originelle qui faisait du traitement inutile et la mienne qui ne respectait pas les standards conventionnels d'une fonction...
Pour le pb, c'est du détail...
Marsh Posté le 04-01-2007 à 14:17:45
Sve@r a écrit : C'est le problème de l'apprentissage. Tu subis obligatoirement les habitudes de ton mentor. Moi, le mien me disait "mettre des parenthèses ne fait que montrer que tu ne connais pas les priorités des opérateurs" |
+1
Citation : Ensuite, entre le "toujours" et le "jamais" on peut arriver à trouver un juste milieu qu'on finalise avec ses propres expèriences du C... |
+1
Marsh Posté le 03-01-2007 à 19:13:45
bonjour tout le monde et bonne année !
voila le programme que je réalise :
Ce programme est sencé mettre nom et prénom en minuscule , même si on les a donné avec des majuscules .
Mais ca ne marche pas ca me met n'importe quoi pour les minuscules et je n'arrive pas à retrouver l'erreur.
Merci d'avance pour votre aide.
Message édité par samos38 le 03-01-2007 à 19:14:23
---------------
débute en C