Comment faire ceci svp???

Comment faire ceci svp??? - C++ - Programmation

Marsh Posté le 30-10-2005 à 21:04:07    

http://www.jeuxvideo.com/cgi-bin/j [...] _while.cpp
Je voudrais faire la même chose, mais pour que le code soit "oui" j´ai essayé en remplacant 23 par "oui" mais ça marche pas
Comment faire svp?
Merci!

Reply

Marsh Posté le 30-10-2005 à 21:04:07   

Reply

Marsh Posté le 30-10-2005 à 21:28:22    

"oui" est une chaine de caractères, tu ne peux donc pas utiliser les opérateurs mathématiques pour comparer deux chaines de caractères entre elles. Il existe des fonctions spéciales pour cela, en particulier strcmp().

Reply

Marsh Posté le 30-10-2005 à 21:33:57    

Tu pourrais me donner un exemple stp?
Merci :)

Reply

Marsh Posté le 30-10-2005 à 22:19:52    

post_it : strcmp() c'est du C, ici on est en C++
 

Code :
  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6. string code;
  7. cout << "entrez le code : le code est oui, tant que vous ne le rentrez pas, on redemande." << endl;
  8. while(code != "oui" )
  9. {
  10.  cout << "code ?" << endl;
  11.  cin >> code;
  12. }
  13. cout << "code correct, bonne journée" << endl;
  14. system("PAUSE" ); // pas portable ce truc, éviter les system("clear" ) et autres...
  15. return 0; // sert à rien, return 0 est automatique dans le main
  16. }


Reply

Marsh Posté le 31-10-2005 à 07:27:02    

jesus_christ a écrit :

post_it : strcmp() c'est du C, ici on est en C++


C'est vrai, mais  C++ est une extension du langage C, donc tout ce qui est valide en C est valide en C++.
D'ailleurs, on n'est même pas obligé de faire de l'objet pour faire du C++ !
C'est un peu bête, je sais ! :pt1cable:  

Reply

Marsh Posté le 31-10-2005 à 10:01:58    

post_it a écrit :

C'est vrai, mais  C++ est une extension du langage C, donc tout ce qui est valide en C est valide en C++.
D'ailleurs, on n'est même pas obligé de faire de l'objet pour faire du C++ !
C'est un peu bête, je sais ! :pt1cable:


 
C'est toi qui est un peu bête ... du C++ sans objet est une connerie sans nom, tout comme utiliser l'API C sur des types commes les chaines de caractéres ...

Reply

Marsh Posté le 03-11-2005 à 12:09:51    

ptain quand les gens comprendront que le c++ n'est pas qu'une 'extension' du c ...


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 03-11-2005 à 13:45:06    

L'objet n'est pas lié au langage. On peut faire de l'objet en C. C'est moins pratique c'est tout.
A la base le C++ voulait être un meilleur C, mais on est arrivé à un autre langage, réellement à part, qui est compatible avec le C dans une certaine mesure, mais qui n'est pas une extension du C.
Le C++ a ses propres méthodes de manipulation des chaines de carcatères. Il faut oublier les char*.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 03-11-2005 à 13:47:46    

HelloWorld a écrit :

L'objet n'est pas lié au langage. On peut faire de l'objet en C. C'est moins pratique c'est tout.


 
"moins pratique", je reve, l'objet en C c'est un truc a se jeter par la fenetre [:pingouino]

Reply

Marsh Posté le 03-11-2005 à 21:46:05    

blackgoddess a écrit :

ptain quand les gens comprendront que le c++ n'est pas qu'une 'extension' du c ...


mais le C, à quelques détails près, est un sous ensemble du C++
tout bon prog C est un prog C++ comme dit stoustrup :D
 
celà dit même si je trouve qu'un petit printf parfois est + simple qu'un formattage de cout, pour presque tout coder comme en C, autant faire du vrai C. Un projet C++ peut très bien comporter des partie en C. C'est conçu pour, faut juste penser à utiliser extern "C".
 

Citation :

"moins pratique", je reve, l'objet en C c'est un truc a se jeter par la fenetre


je suis complétement d'accord. Même si ça peut parraître simpliste, pour moi C + objet = C++. C'est une des raisons pour lesquels je n'aime pas Objective C.
Coder en objet avec du C c'est faire le boulot de CFront : convertir du C++ en C, c'est à dire passer this à la main en paramètre des méthodes etc. Inutile et fastidieux.

Message cité 3 fois
Message édité par jesus_christ le 03-11-2005 à 21:49:47
Reply

Marsh Posté le 03-11-2005 à 21:46:05   

Reply

Marsh Posté le 03-11-2005 à 22:00:02    

jesus_christ a écrit :


C'est conçu pour, faut juste penser à utiliser extern "C".


 
De mon temps, on en fusillé pour moi que ça  [:gara]

Message cité 1 fois
Message édité par Joel F le 03-11-2005 à 22:00:12
Reply

Marsh Posté le 03-11-2005 à 22:08:40    

je ne vois pas en quoi extern "C" est mal. C'est standard et portable, ce qui deviens rare de nos jour avec la mode du .Net et du managed. Je trouve assez élégant de faire qlq partie d'un projet en C pur, pour optimiser. L'opti me semble plus naturelle en C qu'en C++.

Reply

Marsh Posté le 03-11-2005 à 22:14:51    

jesus_christ a écrit :

je ne vois pas en quoi extern "C" est mal. C'est standard et portable, ce qui deviens rare de nos jour avec la mode du .Net et du managed.


 
.net est standart, a sa facon, et portable oué, assurément [:pingouino]
mais c'est pas le sujet, revenons donc au techno paleolithique. Extern "c" c'est bien, pour dire au compilo "degage avec ta décoration de noms" et c'est tout [:el g]

Reply

Marsh Posté le 03-11-2005 à 22:33:37    

.net il est standard avec lui-même et avec sa version actuelle.
Voir les progs java qui ne sont ni bytecode-compatible ni code-compatible avec la JVM java 5. Des progs qui ne peuvent plus s'exécuter ni se recompiler sans mise à jour :sarcastic: Alors la notion de standard chez java/.net... :non:

Reply

Marsh Posté le 03-11-2005 à 22:43:58    

jesus_christ a écrit :

.net il est standard avec lui-même et avec sa version actuelle.
Voir les progs java qui ne sont ni bytecode-compatible ni code-compatible avec la JVM java 5. Des progs qui ne peuvent plus s'exécuter ni se recompiler sans mise à jour :sarcastic: Alors la notion de standard chez java/.net... :non:


 
OSEF en fait, c'est pas le sujet. En C++ on utilise string, faut être masochiste pour en rester aux char*.
C'est tout, y a pas à chercher plus loin.

Reply

Marsh Posté le 03-11-2005 à 23:08:49    

L'évolution des langages est quelque chose de normal. Même maintenant écrire un prog C++ (d'une taille minimale) qui compile sous plusieurs compilos c'est pas évident. Alors prend un prog C++ écrit il y a 5 ans, et recompile le avec le même compilo dans sa version récente.  
Pour la version compilée c'est pareil, pour peu que la libc a changé badaboum. Ah non, pas sous Windows, où un prog compilé il y a 20 ans tourne toujours 8)

Reply

Marsh Posté le 03-11-2005 à 23:23:14    

jesus_christ a écrit :

.net il est standard avec lui-même et avec sa version actuelle.
Voir les progs java qui ne sont ni bytecode-compatible ni code-compatible avec la JVM java 5. Des progs qui ne peuvent plus s'exécuter ni se recompiler sans mise à jour :sarcastic: Alors la notion de standard chez java/.net... :non:


 
(.net est standardisé iso/ecma je crois bien)

Reply

Marsh Posté le 04-11-2005 à 01:00:29    

HelloWorld a écrit :

Ah non, pas sous Windows, où un prog compilé il y a 20 ans tourne toujours 8)


Ah ? J'aurai dit un peu moins :)

Reply

Marsh Posté le 04-11-2005 à 08:21:27    

Joel F a écrit :

De mon temps, on en fusillé pour moi que ça  [:gara]


Pareillement.

Reply

Marsh Posté le 04-11-2005 à 09:50:12    

jesus_christ a écrit :

tout bon prog C est un prog C++ comme dit stoustrup :D


 

Code :
  1. void f(void *a)
  2. {
  3.    int *i = a;
  4. }


 
mais bien sûr.


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 04-11-2005 à 10:43:12    

++fab a écrit :

Ah ? J'aurai dit un peu moins :)


Dans 15 jours, Windows a 20 ans :)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 04-11-2005 à 20:28:56    

jesus_christ a écrit :

tout bon prog C est un prog C++ comme dit stoustrup :D


Utiliser void* sans cast c'est légal mais crade.
Tous les exemple du K&R ANSI (qui date de 89) compilent en C++.
Et puis remet pas en cause les paroles de stroustrup ou je m'énerve :fou:

Reply

Marsh Posté le 04-11-2005 à 20:32:20    

jesus_christ a écrit :

Utiliser void* sans cast c'est légal mais crade.


 
Crade ?! [:mlc]
C'est dans la norme, ce n'est pas "crade", et c'est même un soulagement que d'écrire des malloc() à peu près lisibles  [:petrus75]  

jesus_christ a écrit :

Tous les exemple du K&R ANSI (qui date de 89) compilent en C++.


 
Je sais pas si tu es au courant, mais on en est au C99 et au C++98 maintenant [:mlc]
 
Genre je doute que tu puisses compiler un prog C avec VLA en C++  [:itm]  
 
http://david.tribble.com/text/cdiffs.htm#C99-vs-CPP98


Message édité par Elmoricq le 04-11-2005 à 20:34:16
Reply

Marsh Posté le 04-11-2005 à 20:37:55    

chrisbk a écrit :

(.net est standardisé iso/ecma je crois bien)


oui


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 04-11-2005 à 20:44:53    

Citation :

In C, character literals such as 'a' have type int, and thus sizeof('a') is equal to sizeof(int).
 
In C++, character literals have type char, and thus sizeof('a') is equal to sizeof(char).


 
[:le kneu] jsavais pas

Reply

Marsh Posté le 04-11-2005 à 20:44:58    

merci mais je connais le C99
pour être puriste je répète que tout bon programme C (sous entendu C89, le C99 reste peu employé) est un prog C++, en particulier les exemples du K&R. (citation page 16 du stroustrup 3e edition française) :fou:
 
cela dit pour le malloc je suis d'accord, moi-même je ne mets pas de cast, mais dans le K&R ils en mettent toujours.

Reply

Marsh Posté le 04-11-2005 à 20:47:36    

chrisbk a écrit :

Citation :

In C, character literals such as 'a' have type int, and thus sizeof('a') is equal to sizeof(int).
 
In C++, character literals have type char, and thus sizeof('a') is equal to sizeof(char).


 
[:le kneu] jsavais pas


Une des rares différences silencieuses. Ca compile des deux cotés sans warning mais le comportement est différent. En C toute constante entière littérale (non typée explicitement) est un entier. C'est le cas des enum (alors que c'est faux en C++)
 
enum truc { TOTO };
sizeof(TOTO) == sizeof(int) en C. Pas forcément en C++.

Reply

Marsh Posté le 04-11-2005 à 20:49:33    

chrisbk a écrit :

[:le kneu] jsavais pas


 
Regarde le prototype de fonctions qui acceptent un caractère, strchr() par exemple ;)
 

jesus_christ a écrit :

pour être puriste je répète que tout bon programme C (sous entendu C89, le C99 reste peu employé)


 
Mais même avec le C89 il y a des incompatibilités avec le C++ [:spamafote]

Reply

Marsh Posté le 04-11-2005 à 20:52:01    

Elmoricq a écrit :

Regarde le prototype de fonctions qui acceptent un caractère, strchr() par exemple ;)
 


ouais ca je sais, mais j'etais pas allé au dela en fait :d
 

Reply

Marsh Posté le 04-11-2005 à 21:42:34    

Elmoricq a écrit :

Mais même avec le C89 il y a des incompatibilités avec le C++ [:spamafote]


J'ai pas dit qu'il y avait pas d'incompatibilité, j'ai dit que du C bien écrit c'est aussi du C++ au sens ou ça compile en mode C++.


Message édité par jesus_christ le 04-11-2005 à 21:42:49
Reply

Marsh Posté le 04-11-2005 à 21:50:39    

bin pour moi ca reste du C meme si ca compile en c++, paske faire du C en C++ c'est cretin, enfin, voila quoi  [:el g]
 
(quel fin debat)
 
(on s'en fout)

Reply

Marsh Posté le 04-11-2005 à 21:56:52    

bidon
 
while(cin >> ligne && ligne != "oui" )
{
 
}

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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