20/07/2007, 20h01
|
Sujet programmer en C++ - Message #1
|
Date d'inscription: juillet 2006
Âge: 23
Messages: 202
|
programmer en C++
Bonjour!
J'essaie de me mettre au C++ en autodidacte, et je ne fais vraiment que débuter, donc...soyez indulgents  svp
J'essaie d'écrire un petit programme qui, (c'est ce que je veux) m'affiche le résultat de différentes opérations. La compilation fonctionne, mais à l'exécution, rien ne se passe... et je vois pas pourquoi 
Voici ce que j'ai écris :
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(int nnum)
{
int x,y,z,u;
x=15 % 4;
cout <<x;
y=15- (15/4) * 4;
cout<<y;
z=15-3*4;
cout<<z;
u=15-12;
cout<<u;
}
je sais pas si dans int main (), je dois ou non mettre quelque chose dans les parenthèses.
Merci d'avance
|
|
|
|
Aujourd'hui
|
|
|
|
Liens sponsorisés
|
|
|
|
|
21/07/2007, 14h31
|
Sujet programmer en C++ - Message #2
|
Date d'inscription: juillet 2007
Messages: 41
|
Re : programmer en C++
|
|
|
|
22/07/2007, 19h47
|
Sujet programmer en C++ - Message #3
|
Date d'inscription: juillet 2006
Âge: 23
Messages: 202
|
Re : programmer en C++
Merci pour le lien, mais je n'y arrive toujours pas... 
Bon, j'ai simpliflié mon pb : je veux juste afficher le résultat d'une opération. Quelqu'un peut-il me dire pourquoi ça marche pas ??
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int main()
{
int x;
x=15 / 5;
cout<<x;
}
Je pense que c'est le "cout<<x" qui va pas, mais je sais pas comment faire 
|
|
|
|
22/07/2007, 20h23
|
Sujet programmer en C++ - Message #4
|
Date d'inscription: juillet 2006
Localisation: Fontainebleau
Messages: 200
|
Re : programmer en C++
bonjour,
Comme le nom de ton programme l'indiue (int main), ildevrait renvoyer un entier. Don à la fin de ton programme il manque un return. A joute par exmple la ligne suivante:
return 0
|
|
|
|
22/07/2007, 20h30
|
Sujet programmer en C++ - Message #5
|
Date d'inscription: juillet 2007
Messages: 41
|
Re : programmer en C++
ton programme fonctionne bien ouvre ton exe avec invite de commande
|
|
|
|
23/07/2007, 07h18
|
Sujet programmer en C++ - Message #6
|
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
|
Re : programmer en C++
Bon plusieurs choses : - La remarque de Skydancer est pertinente pour ta compréhension d'une fonction, mais par défaut si tu ne mets pas « return 0; » à la fin du « main » un 0 sera renvoyé. Ce n'est pas ça qui te pose problème ici.
- Comme l'indique Crashnix ton programme devrait fonctionner. Qu'utilises tu comme environnement de développement ? Si c'est DevC++ sous windows, il est connu que DevC++ ferme les fenêtres du terminal avant que tu ais le temps de lire ce qu'elle contient. Il y a dans la documentation de DevC++ le « truc » pour éviter ça (ajoute un « system("pause"); » juste avant le « return 0; ».
- Attention à penser à faire des retours de lignes. Ceci ce fait avec « endl » (qui veut dire "end of line"). C'est important d'utiliser « endl » plutôt que d'afficher un "\n".
- Tu fais du C++ alors ne mets pas les deux premières bibliothèques: cstdio et cstdlib. Comme leurs noms l'indique ce sont des bibliothèques pour C et si tu n'en as pas besoin, il ne faut pas les mettre dans les includes. Ce n'est pas un problème, mais c'est une bonne habitude.
- Finalement fais un effort pour faire un code présentable ET mettre des commentaires. Ça s'apprend dès le début sinon c'est difficile de le faire convenablement.
Ton programme devrait ressembler à
#include<iostream> // bibliothèque pour la gestion des flux d'entrée/sortie
using namespace std; // utilisation de l'espace de nom standard par défaut
/** fonction main
effectue une simple opération arithmétique et affiche le résultat.
Il n'y a pas d'entrée à ce programme.
*/
int main()
{
int x; // déclaration de la variable utilisée pour le calcul
x = 15 / 5; // on effectue le calcul voulu puis on l'affecte à x
cout << x << endl; // on affiche le contenu de la variable x
system("pause"); // permet d'empêcher le terminal de se fermer tout seul
return 0 ; // le programme termine correctement: on renvoit 0
}
Bon ici j'ai abusé sur les commentaires (on ne met pas les évidences quand même), mais l'idée est là.
__________________
War does not decide who's right, but who's left. (Bertrand Russell)
|
|
|
|
23/07/2007, 10h12
|
Sujet programmer en C++ - Message #7
|
Date d'inscription: décembre 2005
Messages: 62
|
Re : programmer en C++
Juste histoire de pinailler, je préfère
que
Car portable et conforme au standard c++.
Mais bon, c'est vraiment histoire de dire quelque chose 
|
|
|
|
23/07/2007, 11h06
|
Sujet programmer en C++ - Message #8
|
Date d'inscription: janvier 2005
Messages: 665
|
Re : programmer en C++
cout n'affiche rien tant que tu n'as pas mis un endl (ou un flush). essaie avec
|
|
|
|
23/07/2007, 13h17
|
Sujet programmer en C++ - Message #9
|
Date d'inscription: mars 2007
Âge: 19
Messages: 143
|
Re : programmer en C++
essaye avec printf("%id",x) pour afficher la valeur de x
|
|
|
|
23/07/2007, 13h18
|
Sujet programmer en C++ - Message #10
|
Date d'inscription: janvier 2005
Messages: 665
|
Re : programmer en C++
Posté par Memnon
essaye avec printf("%id",x) pour afficher la valeur de x
sacrilege !!!!!!!!!! printf c'est du C. pas du C++.
|
|
|
|
23/07/2007, 13h30
|
Sujet programmer en C++ - Message #11
|
Date d'inscription: mars 2007
Âge: 19
Messages: 143
|
Re : programmer en C++
Posté par jobherzt
sacrilege !!!!!!!!!! printf c'est du C. pas du C++.
désolé j'avais pas fait gaffe
dans ce cas j'ai rien dit...
|
|
|
|
23/07/2007, 17h15
|
Sujet programmer en C++ - Message #12
|
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
|
Re : programmer en C++
Posté par r0d
Juste histoire de pinailler, je préfère
que
Car portable et conforme au standard c++.
Mais bon, c'est vraiment histoire de dire quelque chose 
Je suis d'accord pour la portabilité.
Mais quand tu es sous Windaube, «system("pause")» fourni un message indiquant d'appuyer sur entrée, alors qu'il faut le faire à la main avec «cin.get».
Hors quand tu vas vouloir supprimer cette partie (pour respecter un format d'E/S par exemple), il est plus intéressant d'avoir une commande spécifique (un simple find&replace suffit à tout retirer proprement) alors que «cin.get» risque d'être utilisé ailleurs.
Un autre argument serait que cin.get c'est de l'OO. Et quand tu commences à apprendre le C++, tu ne sautes pas tout de suite dans le bain OO. Mais ça se discute plus qu'un problème de maintenabilité.
__________________
War does not decide who's right, but who's left. (Bertrand Russell)
|
|
|
|
23/07/2007, 17h17
|
Sujet programmer en C++ - Message #13
|
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
|
Re : programmer en C++
Posté par jobherzt
cout n'affiche rien tant que tu n'as pas mis un endl (ou un flush). essaie avec
Non ce n'est pas ça.
quand tu ne mets pas le «endl» la valeur est mise dans un flot ( stream, d'où «iostream») en attendant le meilleur moment pour afficher. Le «endl» force de vider le flot. Mais cependant, la fin d'un programme force aussi à vider un flot.
Ce n'est donc pas là d'où venait l'erreur.
Bien sûr tu avais remarqué que je l'avais déjà mentionné dans ma réponse précédente...
__________________
War does not decide who's right, but who's left. (Bertrand Russell)
|
|
|
|
23/07/2007, 18h20
|
Sujet programmer en C++ - Message #14
|
Date d'inscription: juillet 2006
Âge: 23
Messages: 202
|
Re : programmer en C++
Merci à tous, ça y est ça marche  , ça venait du fait que j'avais pas mis system("pause").
Gre, J'ai remarqué que mon programme marche aussi bien avec "return 0" que sans...et ne me renvoie pas de 0...
[quote=Gre;1205886]Bon plusieurs choses : - La remarque de Skydancer est pertinente pour ta compréhension d'une fonction, mais par défaut si tu ne mets pas « return 0; » à la fin du « main » un 0 sera renvoyé. Ce n'est pas ça qui te pose problème ici.
- Comme l'indique Crashnix ton programme devrait fonctionner. Qu'utilises tu comme environnement de développement ? Si c'est DevC++ sous windows, il est connu que DevC++ ferme les fenêtres du terminal avant que tu ais le temps de lire ce qu'elle contient. Il y a dans la documentation de DevC++ le « truc » pour éviter ça (ajoute un « system("pause"); » juste avant le « return 0; ».
- Tu fais du C++ alors ne mets pas les deux premières bibliothèques: cstdio et cstdlib. Comme leurs noms l'indique ce sont des bibliothèques pour C et si tu n'en as pas besoin, il ne faut pas les mettre dans les includes. Ce n'est pas un problème, mais c'est une bonne habitude.
[quote]
Oui, j'utilise Dev C++ sous Windows.
Concernant les bibliothèques cstdio et cstdlib et # include, en fait, je les ai mises car j'ai fait un exemple extrait de "C++ pour les Nuls" qui les utilisait.
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int main(int nNumberofArgs, char* pszArgs[])
{
//saisie de la température en celsius
int celsius;
cout <<"Entrez la temp en celsius : ";
cin >> celsius;
//calcul du facteur de conversion de celsius,en fahrenheit
int factor;
factor=212-32;
//applique ce facteur
int fahrenheit;
fahrenheit=factor*celsius/100+32;
//affiche résultats
cout <<"Valeur en degrés Fahrenheit :";
cout <<fahrenheit<<endl;
system("PAUSE");
return 0;
}
Donc je sais pas trop quand il faut les mettre, et je ne suis pas obligée de mettre #include? C'est peut-être expliqué plus loin dans le bouquin...
|
|
|
|
24/07/2007, 04h49
|
Sujet programmer en C++ - Message #15
|
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
|
Re : programmer en C++
Posté par loulou40
Merci à tous, ça y est ça marche  , ça venait du fait que j'avais pas mis system("pause").
Gre, J'ai remarqué que mon programme marche aussi bien avec "return 0" que sans...et ne me renvoie pas de 0... [...]
Si si ça renvoie 0.. mais ça ne l'affiche pas. La valeur de retour est utilisée pour qu'un programme subséquent sache que le précedent a bien terminé.
Quand il y a une erreur, le code est, par convention, différent de 0.
Concernant les bibliothèques cstdio et cstdlib et # include, en fait, je les ai mises car j'ai fait un exemple extrait de "C++ pour les Nuls" qui les utilisait.
[...]
Donc je sais pas trop quand il faut les mettre, et je ne suis pas obligée de mettre #include? C'est peut-être expliqué plus loin dans le bouquin...
Ça ne provoque pas d'erreurs en général de mettre des bibliothèques en plus. Mais il faut apprendre à ne déclarer que celles que tu vas utiliser.
La bibliothèque cstdio permet d'utiliser le système d'entrée/sortie de C. C'est-à-dire les printf et autre scanf. Ici tu utilises (et c'est bien ainsi) le système d'entrée/sortie de C++ et c'est pour cela que tu déclares iostream.
Ça permet d'utiliser les cout et cin. (un peu d'info sur cstdio)
La bibliothèque cstdlib contient plusieurs fonctions utilitaires comme les célèbres atoi, malloc, free... tu n'en as pas pour l'instant besoins.
(un peu d'info sur cstdlib)
__________________
War does not decide who's right, but who's left. (Bertrand Russell)
|
|
|
|
24/07/2007, 09h52
|
Sujet programmer en C++ - Message #16
|
Date d'inscription: décembre 2005
Messages: 62
|
Re : programmer en C++
D'autant plus qu'en c++, il est fortement déconseillé d'utiliser les malloc, free and co.
Les conversions de chaines de caractères se font plutôt (et de façon plus générique) avec les flux de la STL.
Les fonctions d'environnement (exit, abort...) sont la plupart du temps le résultat d'une mauvaise conception.
Et le reste est implémenté également dans la STL.
Pour résumer, si l'on fait du C++ (par opposition au C), la cstdlib est inutile.
|
|
|
|
24/07/2007, 17h29
|
Sujet programmer en C++ - Message #17
|
Date d'inscription: juillet 2006
Âge: 23
Messages: 202
|
Re : programmer en C++
D'accord, merci.
Je voudrais savoir quelles sont les différences entre le Java et le C++, qui sont tous les deux des langages objet. Je sais que le Java n'est pas bon pour effectuer des calculs ; je suppose que c'est également le cas du C++.
Dans quels cas utiliser l'un plutôt que l'autre?
|
|
|
|
24/07/2007, 17h36
|
Sujet programmer en C++ - Message #18
|
Date d'inscription: juillet 2006
Localisation: Fontainebleau
Messages: 200
|
Re : programmer en C++
Bonjour,
Le java est un langage interpreté, qui est executé par une machine virtuelle d'où ses médiocres capacité en terme de calcul lourd. Ce n'est pas le cas du C++ qui est compilé directement dans un langage machine, le C++ est d'ailleurs assez utilisé pour des codes de calculs.
En gros le java simplifie unpeu la vie du développeur, mais on le paie en terme de performance.
|
|
|
|
|
 |
Bienvenue |
 |
Si ceci est votre première visite, vous devez vous inscrire avant de pouvoir envoyer des messages. En étant inscrit vous pourrez poster votre question, participer aux débats, joindre vos images... alors n'attendez-plus, cela vous prendra 1 minute !
Pour commencer à lire les messages, depuis la page d'accueil des forums, sélectionnez le forum qui vous tente et partez ensuite à sa découverte...
|
 |
Publicité |
 |
|