[C/C++][Débutant] Bloc conditionnel If

Bloc conditionnel If [C/C++][Débutant] - Programmation

Marsh Posté le 08-11-2001 à 00:25:34    

Voila je viens de debuter le C++
voici le probleme que notre prof nous a demandé de traiter :
 
programme a créer
Créer un programme qui permet de savoir si le caractere que l on a entré est une voyelle ou une consonne.
 
Il faut utiliser le bloc conditionnel if/else
Mais mon soucis est que j ai imbriqué 1 bloc par voyelle, c fastidieux et pas tres jolie a mon avis, donc ma question est :
y a t il moyen de mettre dans l expression du if plusieurs valeurs pour tester le caractere tapé au clavier?  
du style (si a=='a' ou a=='e'......)
 
merci de m eclairer sur ce point  :)  
 
code source
 
#include <iostream.h>
#include <conio.h>
 
main()
{
char a;
 
clrscr();
 
cout<<"Veuillez taper un caratère : \n";
cin>>a;
 
if (a=='a';)
    {
     cout<<"Le caractère est une voyelle !";
    }
else
    {
     if (a=='e';)
         {
          cout<<"Le caractère est une voyelle !";
         }
      else
         {
          if (a=='i';)
              {
               cout<<"Le caractère est une voyelle !";
               }
           else
              {  
               if (a=='o';)
                   {
                    cout<<"Le caractère est une voyelle !";
                   }
                else
                   {
                    if (a=='u';)
                        {
                         cout<<"Le caractère est une voyelle !";
                        }
                     else
                        {
                         cout<<"Le caractère est une consonne !";
                        }
                   }
              }
         }
     };
 
getch();
 
return(0);
}

 

[edtdd]--Message édité par cowabunga--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 00:25:34   

Reply

Marsh Posté le 08-11-2001 à 00:36:24    

tu fait un
 
int main()
{
char a;  
 
clrscr();  
 
cout<<"Veuillez taper un caratère : \n";  
cin>>a;  
if((a == 'a';) || (a == 'e';) || (a == 'i';) || (a == 'o';) || (a == 'u';) || (a == 'y';))
 cout <<"voyelle";
else
 cout << "consonne";
 
getch();  
 
return(0);
}
 
programme finit

 

[edtdd]--Message édité par koulip31--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 00:37:25    

merci beaucoup  :wahoo:
et puis merci pour le y que j avais oublie dans les voyelles :)

 

[edtdd]--Message édité par cowabunga--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 00:46:21    

koulip31 a écrit a écrit :

tu fait un
 
int main()
{
char a;  
 
clrscr();  
 
cout<<"Veuillez taper un caratère : \n";  
cin>>a;  
if((a == 'a';) || (a == 'e';) || (a == 'i';) || (a == 'o';) || (a == 'u';) || (a == 'y';))
 cout <<"voyelle";
else
 cout << "consonne";
 
getch();  
 
return(0);
}
 
programme finit  
 
 




 
 
 
Ouais mais un caractère  c pas forcément une lettre...
'2' c pas un consonne... et '&' non plus... :sol:

Reply

Marsh Posté le 08-11-2001 à 01:07:14    

tu fait un
 
if ((a >= 'a';) && (a <= 'Z';))
 
aant et basta
voir tab de code ascii avant je suis plus sur si c'est lalphabet en min avant celui en maj ou inversement

Reply

Marsh Posté le 08-11-2001 à 01:09:04    

kwiky a écrit a écrit :

 
 
Ouais mais un caractère  c pas forcément une lettre...
'2' c pas un consonne... et '&' non plus... :sol:  




 
très juste, du coup tu rajoute une condition:
 
if((a == 'a';) || (a == 'e';) || (a == 'i';) || (a == 'o';) || (a == 'u';) || (a == 'y';))  
cout <<"voyelle";  
else if( c > 'a' && c<='z';)
cout << "consonne";  
else  
cout << "autre caractère";
 
et ne pas oublier q les codes ASCII des minuscules ne sont pas les meme q les majuscules...


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:10:34    

koulip31 a écrit a écrit :

tu fait un
 
if ((a >= 'a';) && (a <= 'Z';))
 
aant et basta
voir tab de code ascii avant je suis plus sur si c'est lalphabet en min avant celui en maj ou inversement  




 
on a posté en meme temps,  :D .
mais t'as été plus rapide, respect. :jap:
 
d'abord les MAJ et ensuite les min

 

[edtdd]--Message édité par xmulder--[/edtdd]


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:15:20    

xmulder a écrit a écrit :

 
 
très juste, du coup tu rajoute une condition:
 
if(a =='a' || a=='e' || a=='i' || a=='o' || a=='u' || a=='y' || a =='A' || a=='E' || a=='I' || a=='O' || a=='U' || a=='Y';)  
cout <<"voyelle";  
else if( a > 'a' && a <='z' || a > 'A' && a <='Z' )
cout << "consonne";  
else  
cout << "autre caractère";
 
et ne pas oublier q les codes ASCII des minuscules ne sont pas les meme q les majuscules...  



 

[edtdd]--Message édité par xmulder--[/edtdd]


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:17:19    

sauf ke toi ta oublie le maj  :D  :D  
et moi tu rajoute cette ligne au debut du prog donc 1line de + toi 2  :sol:  :sol:  
 
i am the best :lol: sur un prog comme ca jai honte  :sweat:  :p

Reply

Marsh Posté le 08-11-2001 à 01:20:46    

koulip31 a écrit a écrit :

sauf ke toi ta oublie le maj  :D  :D  
et moi tu rajoute cette ligne au debut du prog donc 1line de + toi 2  :sol:  :sol:  
 
i am the best :lol: sur un prog comme ca jai honte  :sweat:  :p  




 
permets moi de te corriger, prends ta table ASCII et regarde ce q'il y a entre 'Z' et 'a'... pas mal de chose.
donc ton a>'a' && a<='Z' est faux. :D  
 
j'ai édité mon message pour donner la soluce complete.
 
allez, sans rancune  :D  :sol:  :hello:  
 
et en tte modestie, je suis pas le moins bon...


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:20:46   

Reply

Marsh Posté le 08-11-2001 à 01:24:13    

Citation :

else if( a > 'a' && a <='z' || a > 'A' && a <='Z' )


hihi je te corrige  
 
if ((a >='a') && (a <='z') || (a >= 'A') && (a <='Z'))
 
bizar les = se mettent pas en gras je les ais soulignés

 

[edtdd]--Message édité par koulip31--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 01:25:19    

koulip31 a écrit a écrit :

Citation :

else if( a > 'a' && a <='z' || a > 'A' && a <='Z' )


hihi je te corrige  
 
if ((a >='a') && (a <='z') || (a >= 'A') && (a <='Z'))  
 
 




 
bonne reponse :D
 
vous y etes enfin arrivés
j'hallucine :D

Reply

Marsh Posté le 08-11-2001 à 01:25:49    

enfin il mank encore un truc :D

Reply

Marsh Posté le 08-11-2001 à 01:26:28    

Skylight a écrit a écrit :

enfin il mank encore un truc :D  




2 paire de parenthese en fonction des prioritees
 
les lettres accentue si on est en france
le elset si on est en allemagne
les lettre tilde si on est enespagne

 

[edtdd]--Message édité par koulip31--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 01:26:45    

koulip31 a écrit a écrit :

Citation :

else if( a > 'a' && a <='z' || a > 'A' && a <='Z' )


hihi je te corrige  
 
if (((a >='a') && (a <='z') )|| ((a >= 'A') && (a <='Z')))
 
bizar les = se mettent pas en gras je les ais soulignés  
 
 



 

[edtdd]--Message édité par Skylight--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 01:28:38    

enfin le a > 'a' c juste car le a est une voyelle dc pa bezoin de l'inclure ds la condition

Reply

Marsh Posté le 08-11-2001 à 01:30:21    

le && nest pas prioritaire sur le || ? si oui tes parentheses ne servent a rien  :??:  
 
moi je place cette condition en 1er (avan la serie de ||) donc le A je le verifie aussi

 

[edtdd]--Message édité par koulip31--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 01:32:00    

koulip31 a écrit a écrit :

le && nest pas prioritaire sur le || ? si oui tes parentheses ne servent a rien  :??:  
 
moi je place cette condition en 1er (avan la serie de ||) donc le A je le verifie aussi  
 
 




oui mais bon pour un effet de clarté vo mieu les mettre enfin moi je les mets tjs, c'est + clair

Reply

Marsh Posté le 08-11-2001 à 01:32:03    

koulip31 a écrit a écrit :

Citation :

else if( a > 'a' && a <='z' || a > 'A' && a <='Z' )


hihi je te corrige  
 
if ((a >='a') && (a <='z') || (a >= 'A') && (a <='Z'))
 
bizar les = se mettent pas en gras je les ais soulignés  
 
 




 
d'une part, les parenthèses en sont pas obligatoires car les opérateurs de comparaisons sont prioritaires sur les opérateurs logique
(d'abord les > et ensuite les &&)
 
d'autre part, on peut se contenter d'un a>'a'plutot q d'un a>='a' (mais pas pour le Z) car on ne veut pas d'une voyelle... :D  
 
donc g encore raison, comme d'hab.
 :sol:


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:33:15    

comment perfectionner son C en un post :D

Reply

Marsh Posté le 08-11-2001 à 01:34:54    

http://www.multimania.com/muldux/images/prior.jpg

 

[edtdd]--Message édité par xmulder--[/edtdd]


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:36:22    

xmulder a écrit a écrit :

 
c dans les vieux pots q'on fait les meilleures soupes  :lol:  
 




---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:40:21    

arff c'est zarb kar sans les parenthese il m'est deja arrive des trucs zarbs :/ comme koi :)  
 
voyelle ou consonne men fout car je met ca avant tout au debut en gros je teste mon interval avant de determiner si c'est une voyelle ou une consonne :) donc besoin autan du a que du z :)

Reply

Marsh Posté le 08-11-2001 à 01:42:59    

koulip31 a écrit a écrit :

arff c'est zarb kar sans les parenthese il m'est deja arrive des trucs zarbs :/ comme koi :)  
 
voyelle ou consonne men fout car je met ca avant tout au debut en gros je teste mon interval avant de determiner si c'est une voyelle ou une consonne :) donc besoin autan du a que du z :)  




 
ql genre de truc bizarr?
tu utilises ql compilateur?


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 01:52:07    

en ce momen VC++ et defois gcc
 
ben les condition ki se fesaient pas dans le bon ordre ou ki chiaent tout bonnement :/ deouis je fout des parentheses partout ca gonfle le code betement mais au moin ca me chie pas dans les ailes
 
sous gcc ca arrive + ou - souvent ce genre de truc vais essayer de te trouver un eexemple

Reply

Marsh Posté le 08-11-2001 à 08:35:35    

ouais,
 
c'est pas encore ça. vous êtes Anglais ? nan, bon ben é c'est une voyelle non ! me dites pas que c'est pas la peine de le prendre en compte, c'est avec des truc comme ça qu'on oublie les accent sur les noms propre. Au fait pour les majuscules aussi, je rappelle que pour les noms propres les accents sur majuscule sont a respecter. MALLARMÉ, AYMÉ, ... É est une voyelle.
 
p'tit coup main, dans windows appeler la table des caractères. il s'agit de tous les carac > 191.

 

[edtdd]--Message édité par Barbarella--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 10:02:08    

:ouch:  c tres gentil d avoir grandement ameliore mon programme, mais j ai commence le C il y a quelques jours, mon prof va se poser des questions  ;) ,je vais garder la premiere version de Koulip31 car elle doit se rapprocher des souhaits du prof  
Mais aumoins j ai appris quelquechose, merci a tous  ;)

Reply

Marsh Posté le 08-11-2001 à 10:23:35    

réponse incomplete,
 
mais bon raissonement. Je suppose que si tu prenais en compte les accents ton prof te prendrait pour un p'tit génie qui pense a tout ou ... a une grosse aide provenant de l'espace intersidérale :D
 
Mais si un jour tu as un prog pro a faire pense a ces accents. Il est inadmissble que l'informatique d'aujourd'hui ne les prenne en comtpe.

Reply

Marsh Posté le 08-11-2001 à 10:32:55    

et tant qu'on y est, ne pas oublier les cédilles ! ç et Ç, les ligatures æ, œ ...
 
:D

Reply

Marsh Posté le 08-11-2001 à 10:38:18    

eh oui,
 
tous ces caratères sont situés au-dessus des ascii > 191. C'est très important pour le tri des base de données. Ca ne concerne pas seulement la France, mais toutes les langues qui utilisent des accents.

Reply

Marsh Posté le 08-11-2001 à 11:00:04    

boarf les accent moi clavier qwerty pb regle

Reply

Marsh Posté le 08-11-2001 à 11:30:43    

Cool,
 
la mentalité ...

Reply

Marsh Posté le 08-11-2001 à 11:42:17    

hihi mais bon en informatique l'anglais est la referance donc les accent tu peux les jartter sans probleme  
 
essaye de compile des lettre accentuées tu vas bien te marrer :p
 
et si tu met les accents pkoi pas aussi le elset allemand et les letres tilde espagnoles ?  :pt1cable:  :pt1cable:  
 
serrieux tu code en anglais tu programme doit sortir de langlais ton programme traite de l'anglais les autres langues on s'en ...bip... ptet ke ca plais pas aux anglophobes ca mais bon en info c'est comme ca et pas autrement et les anglophobes a l'heure actuel non rien a foutre en informatique  :na:

 

[edtdd]--Message édité par koulip31--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 12:14:20    

koulip31 a écrit a écrit :

hihi mais bon en informatique l'anglais est la referance donc les accent tu peux les jartter sans probleme  
 
essaye de compile des lettre accentuées tu vas bien te marrer :p
 
et si tu met les accents pkoi pas aussi le elset allemand et les letres tilde espagnoles ?  :pt1cable:  :pt1cable:  
 
serrieux tu code en anglais tu programme doit sortir de langlais ton programme traite de l'anglais les autres langues on s'en ...bip... ptet ke ca plais pas aux anglophobes ca mais bon en info c'est comme ca et pas autrement et les anglophobes a l'heure actuel non rien a foutre en informatique  :na:  
 
 




 
 :non:  
 
Meme si il faut bien admettre q l'anglais est incontournable dans le monde de l'info, il ne faut pas tomber dans la modialisation.  
Je fais mes etudes d'info en Finlande et je peux te dire q cote programmation ils develloppent pas mal de choses et c pas tt en anglais (ds des domaines comme JAVA Cpp, surtout chz Nokia, pareil de l'autre cote de la Baltique chz Ericson)
 
mais c vrai q gérer les accents est assez chiant car les codes ASCII dependent de la langue installée sur ta machine donc c pas tres portable, mais c un point à ne pas négliger...


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 12:15:03    

et je parle pas des asiatiques  :D


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 14:51:31    

ils on un clavier latin he ouais  :o (pas de chti ideogramme sur le clavier mais bien de lettres)  
mais bon jaimmerais bien ovir des source asiatiques ca doit etre cocasse ou en anglais pas le choix

Reply

Marsh Posté le 08-11-2001 à 15:06:47    

et alors tu crois que ça justifie de ne pas prendre en comtpe  
les accents ...
 
Ca me parait tellement evident de devoir prendre en compte les accents pour les langues qui les utilises que je ne vois pas trop le sens de tes remarques koulip. Pas d'accent pour les anglais oui, mais tu souhaiterais généraliser à tout le monde ? (on parle des données que manipule un programme, pas des commandes de prog)

 

[edtdd]--Message édité par Barbarella--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 15:17:34    

Barbarella a écrit a écrit :

et alors tu crois que ça justifie de ne pas prendre en comtpe  
les accents ...
 
Ca me parait tellement evident de devoir prendre en compte les accents pour les langues qui les utilises que je ne vois pas trop le sens de tes remarques koupil. Pas d'accent pour les anglais oui, mais tu souhaiterais généraliser à tout le monde ? (on parle des données que manipule un programme, pas des commandes de prog)  




 
ben certe pour ce ke manipule les prog mais bon kan on te demande un prog generale tu le develope pour traiter de l'info angalise non?  
 
je bosse actuellement dans un SSII francaises toute la doc est en anglais je doit developper un outis de test interne kin ne sortiras pas du labo a cote de mon bureau donc resterras en france ici bien on ma demande explicitement de tout mettre en anglais donc dans le cadre scolaire ou en entreprise mainpuler des donne francaises rete une utopie a part si c'est une chtite entreprise  ;)  
 
mais bon dans le cadre scolaire si tu gere pas les accent rien a battre les profs  :ange:  :ange:  
 
remarque que dans tout les book de prog les chaines traites sont anglaise exemple le HELLO WORLD donc   :sweat:  :sweat:  ede refuser cela au nom de la difference  :o

Reply

Marsh Posté le 08-11-2001 à 15:32:21    

ok,
 
je comprends ta position, en ce sens que j'ai deja eu l'occasion de rencontrer des collègues qui penses un peu comme toi. Toutefois permets moi de te dire que la différenciation culturel/respect des langues est une richesse intellectuelle.
 
Le nivellement par l'homogénisation, est un appauvrissement intellectuel. C'est une des raisons qui font que bcp de personnes ne suivent pas (et ne le feront pas) la démarche que tu adoptes.
 
Sur le terme d'utopie pour l'utilisation dans les boites, je te renvois au terme de 'je m'en foustisme' de certaines boites, vu que la mise en place de cette prise en compte est facilement intégrable. Le plus long c'est encore le temps qu'il faut pour l'écrire dans le cahier des charges :D
 
Mais bon ...

 

[edtdd]--Message édité par Barbarella--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 15:47:20    

moi je dirais:
 
bool c_une_voyelle=false;
switch(char moncara){
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'Y':
 c_une_voyelle = true;
break;
}
 
 
en pensant biensûr à passer en majuscule le caractère à tester...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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