de minuscule à majuscule

de minuscule à majuscule - C - Programmation

Marsh Posté le 27-03-2005 à 01:01:25    

Bonsoir,
 
Je dois écrire un programme qui convertit une entrée en minuscule en majuscule.
 
Le problème est que je ne sais pas comment faire !
 
Je voudrais savoir quelle est la différence entre un caractère minuscule et un caractère majuscule (est-ce un paramètre ?).
 
En cours nous utilisons C++ Builder 6.
 
Merci de votre aide.

Reply

Marsh Posté le 27-03-2005 à 01:01:25   

Reply

Marsh Posté le 27-03-2005 à 01:38:41    

La différence entre une majuscule et une minuscule?

Code :
  1. char diff = 'A' - 'a';

[:spamafote]

Reply

Marsh Posté le 27-03-2005 à 05:01:50    

TOUPPER(3)                 Linux Programmer's Manual                TOUPPER(3)
 
 
 
NAME
       toupper, tolower - convert letter to upper or lower case
 
SYNOPSIS
       #include <ctype.h>
 
       int toupper(int c);
       int tolower(int c);
 
DESCRIPTION
       toupper() converts the letter c to upper case, if possible.
 
       tolower() converts the letter c to lower case, if possible.
 
       If  c  is  not  an  unsigned char value, or EOF, the behaviour of these
       functions is undefined.
 
RETURN VALUE
       The value returned is that of the converted letter, or c if the conver-
       sion was not possible.
 
CONFORMING TO
       ANSI C, BSD 4.3
 
BUGS
       The details of what constitutes an uppercase or lowercase letter depend
       on the current locale.  For example, the default "C"  locale  does  not
       know about umlauts, so no conversion is done for them.
 
       In some non - English locales, there are lowercase letters with no cor-
       responding uppercase equivalent; the German sharp s is one example.
 
SEE ALSO
       isalpha(3), setlocale(3), locale(7)
 
 
 
GNU                               1993-04-04                        TOUPPER(3)

Reply

Marsh Posté le 27-03-2005 à 10:14:16    

Pillow a écrit :

La différence entre une majuscule et une minuscule?

Code :
  1. char diff = 'A' - 'a';

[:spamafote]


pas portable.
 
Il faut utiliser tolower() / toupper() de <ctype.h>
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 27-03-2005 à 14:58:36    

Merci de vos réponses.
 
En réponse à annadivx, j'avais vu ce post mais j'ai rien compris à la réponse.
 
J'ai essayé un programme avec ctype.h
 
Voila le code :
 

Code :
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <ctype.h>
  4. void main()
  5. {
  6. char C;
  7. cin>>C;
  8. C=toupper(C);
  9. cout<<C;
  10. getch();
  11. }


 
Le problème c'est que lors de l'éxécution, le programme ne me donne que la première lettre de la chaîne de caractère. Je voudrais qu'il me convertisse toute la chaîne.   :??:  
 
Que faut-il corriger ?
 

Reply

Marsh Posté le 27-03-2005 à 15:03:59    

Choisis ton langage camarade. C != C++...
 

jayibee a écrit :


Code :
  1. #include <iostream.h>
  2. /* -ed- pas du C... et du mauvais C++... */
  3. #include <conio.h>
  4. /* -ed- Quelle salade! Mauvais C++  */
  5. #include <ctype.h>
  6. void main()
  7. /* -ed- [C] main() retourne int. */
  8. {
  9. char C;
  10. cin>>C;
  11. /* -ed- pas du C... */
  12. C=toupper(C);
  13. cout<<C;
  14. /* -ed- pas du C... */
  15. getch();
  16. }


Le problème c'est que lors de l'éxécution, le programme ne me donne que la première lettre de la chaîne de caractère. Je voudrais qu'il me convertisse toute la chaîne.   :??:  
 
Que faut-il corriger ?


 
Il faut écrire la fonction qui traite tous les caractères de la chaine (while...).


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 27-03-2005 à 15:14:27    

Je débute en programation et le langage que j'ai utilisé est celui que nous utilisons pour tous nos exercices et exemples...
 
A propos de ta fonction, tu peux m'en dire plus ?

Reply

Marsh Posté le 27-03-2005 à 15:24:44    

jayibee a écrit :

Je débute en programation et le langage que j'ai utilisé est celui que nous utilisons pour tous nos exercices et exemples...


Alors C ou C++ ? C'est pas le même langage, c'est pas les même balises.

Citation :

A propos de ta fonction, tu peux m'en dire plus ?


Ben  

  • Parcourir la chaine (qui est terminée par un 0, je le rappelle au cas où...)
  • Convertir chaque caractère avec tolower()

Evidemment, la chaine doit être modifiable...
 
Fait de ton mieux et poste ton code...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 27-03-2005 à 15:38:39    

ok je comprend l'idée, mais je ne sais pas comment on fait pour parcourir la chaine ...

Reply

Marsh Posté le 27-03-2005 à 17:03:25    

Emmanuel t'a déjà tout dit ...
Truc du genre :

Code :
  1. char *pChaine = MaChaineAconvertir;
  2. while ( *pChaine) { /* test fin de chaine = 0 */
  3.    *pChaine = tolower( *pChaine);
  4.    pChaine++;
  5. }


Message édité par cricri_ le 27-03-2005 à 17:09:16
Reply

Marsh Posté le 27-03-2005 à 17:03:25   

Reply

Marsh Posté le 27-03-2005 à 20:49:40    

Merci de votre aide, mais je suis complètement perdu.
 
Voila le code que j'ai écrit :
 

Code :
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <ctype.h>
  4. void main()
  5. {char MaChaineAconvertir;
  6. cin>>MaChaineAconvertir;
  7. char *pChaine=  MaChaineAconvertir;
  8. while ( *pChaine) { /* test fin de chaine = 0 */
  9.    *pChaine = toupper( *pChaine);
  10.    pChaine++;
  11. }
  12. }


 
Y a des erreurs partout mais je ne sais pas quoi faire de plus.
 
Bonne soirée
 
Edit : ca veut dire quoi le "*" dans *pChaine ?


Message édité par jayibee le 27-03-2005 à 20:50:43
Reply

Marsh Posté le 27-03-2005 à 20:54:28    

heu il serait peut etre temps d'acheter un bouquin non ??


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 27-03-2005 à 21:07:12    

ouais ... J'ai déja fait un tour de différents tutoriaux en ligne mais j'y comprend rien. Je ne retrouve rien de ce que j'ai appris dans mon cours.

Reply

Marsh Posté le 27-03-2005 à 21:59:25    

le * apres un type c'est pour indiquer un pointeur vers ce type (contient l'adresse de ton element)
si tu n'as pas vu les poointeurs, ca devient :
 
for(int i=0;i<strlen(MaChaine);i++)//strlen renvoie la longueur de l'argument  
    MaChaine[i]=toupper(MaChaine[i]);
 
mais c'est quand meme bizarre de vous enseigner le C++ sans les bases du C....

Reply

Marsh Posté le 27-03-2005 à 22:28:39    

ok, mon code devient :
 

Code :
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <ctype.h>
  4. void main()
  5. {char C;
  6. cin>>C;
  7. for(int i=0;i<strlen(C);i++)
  8.     {C[i]=toupper(C[i]);}
  9. cout<<C;
  10. }


 
Mais le compilateur me surligne la ligne 8 et me met : Impossible de convertir 'int' en 'const char *'
 
 :??:

Reply

Marsh Posté le 27-03-2005 à 23:17:10    

C'est mal, je sais, mais j'ai que ça à faire :

Code :
  1. #include <ctype.h>
  2. #include <stdio.h>
  3. int
  4. main()
  5. {
  6.         char *p;
  7.         char str[1024];
  8.         /* Lit stdin par blocs, tant qu'il y a quelque chose a lire */
  9.         while (fgets(str, sizeof str, stdin)) {
  10.                 /* Passe chaque caractere lu en majuscule */
  11.                 for (p = str; *p != '\0'; p++) {
  12.                         *p = toupper(*p);
  13.                 }
  14.                 /* Affiche la chaine ainsi convertie */
  15.                 fputs(str, stdout);
  16.         }
  17.         return 0;
  18. }

Reply

Marsh Posté le 27-03-2005 à 23:26:24    

Merci ça marche, je vais essayer de le refaire en utilisant la syntaxe qu'on a l'habitude d'utiliser.


Message édité par jayibee le 27-03-2005 à 23:28:50
Reply

Marsh Posté le 27-03-2005 à 23:40:09    

jayibee a écrit :

Merci ça marche, je vais essayer de le refaire en utilisant la syntaxe qu'on a l'habitude d'utiliser.


Cette 'syntaxe' dont tu parles ressemble fort à du (mauvais) C++.
 
Si c'est ça, balise [C++] dans le titre au lieu de [C]
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 28-03-2005 à 01:33:06    

dark86 a écrit :

...
...mais c'est quand meme bizarre de vous enseigner le C++ sans les bases du C....


 
:lol: c'est pas vraiment nécessaire avec des support de cours corrects,
puisque C++ inclus parfaitement le C.
 
D'un point de vue linguistique, le 'C' reste comme le Cobol:
ça existera tant qu'il y aura encore des Mohicans pour le faire survivre.
(et Je sais que les librairies de base, sont futilement différentes, merci)
 
Longue vie aux Mohicans !
 
 
 
P.S.
Je suis parfois « le grain de sel de la vie »

Reply

Marsh Posté le 28-03-2005 à 08:50:22    

vi, mais il y a encore beaucoup de systèmes embarqués où l'on ne peut faire que du C .. ;)

Reply

Marsh Posté le 28-03-2005 à 09:59:01    

Oui mais bon, apprendre le C++ sans voir le C ca se fait trés bien. Le C++ n'a AUCUN rapport avec le C a part des keywords/structures qui se ressemblent.  
 
Tu prends un novice en programmation, tu lui apprends l'algorithmie et le C++ DIRECTEMNT en utilsiant STL/BOOST , il est plus vite operationnel et fait moins de caca dans son code.
 
Par contre les profs débiles qui mélangent C,C++,truc spécifiques IDE moisis (vc < 7) etc ...
euh merite le pal !
 
 


Message édité par Joel F le 28-03-2005 à 09:59:42
Reply

Marsh Posté le 28-03-2005 à 10:47:36    

jayibee a écrit :

ok, mon code devient :
 

Code :
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #include <ctype.h>
  4. void main()
  5. {char C;
  6. cin>>C;
  7. for(int i=0;i<strlen(C);i++)
  8.     {C[i]=toupper(C[i]);}
  9. cout<<C;
  10. }


 
Mais le compilateur me surligne la ligne 8 et me met : Impossible de convertir 'int' en 'const char *'
 
 :??:


 
c'est parceque C est un caractere (char) et non une chaine de carracteres (char* ou string) donc il faut lui donner ta chaine complette, mais comme MaChaine a été créée en C++, elle n'a pas forcément le bon type, donc on enregistre ta chaine (son adresse en fait) dans le bon type, à savoir un char* --> char* chaine=MaChaine

Reply

Marsh Posté le 28-03-2005 à 12:19:10    

annadivx a écrit :

:lol: c'est pas vraiment nécessaire avec des support de cours corrects,
puisque C++ inclus parfaitement le C.


Non.
 
http://david.tribble.com/text/cdiffs.htm


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 28-03-2005 à 12:20:09    

Joel F a écrit :

Par contre les profs débiles qui mélangent C,C++,truc spécifiques IDE moisis (vc < 7) etc ...
euh merite le pal !


Le miel et les fourmis rouges.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 28-03-2005 à 13:15:37    


 
Comme diraient certain(e)s de tes ami(e)s: ce ne sont que "des points de détails"...
(voyant que tu es passé du côté "obscure" de la force...)
 
Par contre, si tu avais suivi hônnetement tes cours de GL (Génie Logiciel),
tu saurais évaluer, au niveau des outils linguistiques qu'implémentent
ces deux langages (pris séparément) QUE, l'accessibilité aux objets manipulés
(soit les resources de la machine au sens physique) admettent une relation
assez simple à comprendre malgré ton age presque aussi mure que le miens:
 

Citation :

OLs(C) est inclus dans OLs(C++)
OLs(L) signifiant: " L'ensemble des outils linguistiques pour le langage (L) "
 
Les concepts ci-dessous sont des objets linguistiques:
- les structures de contrôles
- les scalaires
- les structures de données
- la généricité
- les classes
etc.


 
(et sachant que l'ensemble peut être "plus granulaire"
que ce que l'on perçoit de cette mince liste.)
 
Mais pour être plus précise sur le message que je livre:
 
Je maintient FERMEMENT que pour enseigner les outils linguistique qu'implémente le C++ et le C, Il n'est PAS nécessaire de commencer par le langage C. Le langage 'C' n'est encore valable aujourd'hui que dans la mesure où il existe encore des micro-systèmes qui évoluent plus vers des tâches de microtechniciens et microtechniciennes, que vers des tâches d'informaticiens et informaticiennes de haut niveau.
 
...dommage pour tes fourmis, je vois qu'elle ton déjà beaucoup rongé avec le temps ;)
...mais le miel je le garde volontier pour m'endormir le soir, avec ma Verveine.
 
merci.


Message édité par annadivx le 28-03-2005 à 17:42:48
Reply

Marsh Posté le 28-03-2005 à 13:27:38    

Emmanuel Delahaye a écrit :

Le miel et les fourmis rouges.


Chacun son trip  :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed