Futura Sciences
Image de la rubrique en cours

Forum FS Generation

Précédent   Vous êtes ici : Forum FS Generation » Informatique » Logiciel - Software - Open Source

Découvrir d'autres sujets sur ces thèmes : ,


Réponse
Vieux 20/07/2007, 20h01   Sujet programmer en C++ - Message #1
loulou40
 
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 :

Citation:
#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
loulou40 est déconnecté   Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

   
Vieux 21/07/2007, 14h31   Sujet programmer en C++ - Message #2
Crashnix
 
Date d'inscription: juillet 2007
Messages: 41
Re : programmer en C++
Salut,

http://c.developpez.com/tutcpp/x3604.php#AEN3643
Crashnix est déconnecté   Réponse avec citation
Vieux 22/07/2007, 19h47   Sujet programmer en C++ - Message #3
loulou40
 
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 ??

Citation:
#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
loulou40 est déconnecté   Réponse avec citation
Vieux 22/07/2007, 20h23   Sujet programmer en C++ - Message #4
skydancer
 
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
skydancer est déconnecté   Réponse avec citation
Vieux 22/07/2007, 20h30   Sujet programmer en C++ - Message #5
Crashnix
 
Date d'inscription: juillet 2007
Messages: 41
Re : programmer en C++
ton programme fonctionne bien ouvre ton exe avec invite de commande
Crashnix est déconnecté   Réponse avec citation
Vieux 23/07/2007, 07h18   Sujet programmer en C++ - Message #6
Gre
 
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 à
Code:
#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)
Gre est déconnecté   Réponse avec citation
Vieux 23/07/2007, 10h12   Sujet programmer en C++ - Message #7
r0d
 
Date d'inscription: décembre 2005
Messages: 62
Re : programmer en C++
Juste histoire de pinailler, je préfère
Code:
cin.get();
que
Code:
system("pause");
Car portable et conforme au standard c++.

Mais bon, c'est vraiment histoire de dire quelque chose
r0d est déconnecté   Réponse avec citation
Vieux 23/07/2007, 11h06   Sujet programmer en C++ - Message #8
jobherzt
 
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

Code:
cout << x e<<endl;
jobherzt est déconnecté   Réponse avec citation
Vieux 23/07/2007, 13h17   Sujet programmer en C++ - Message #9
Memnon
 
Date d'inscription: mars 2007
Âge: 19
Messages: 143
Re : programmer en C++
essaye avec printf("%id",x) pour afficher la valeur de x
Memnon est déconnecté   Réponse avec citation
Vieux 23/07/2007, 13h18   Sujet programmer en C++ - Message #10
jobherzt
 
Date d'inscription: janvier 2005
Messages: 665
Re : programmer en C++
Citation:
Posté par Memnon Voir le message
essaye avec printf("%id",x) pour afficher la valeur de x

sacrilege !!!!!!!!!! printf c'est du C. pas du C++.
jobherzt est déconnecté   Réponse avec citation
Vieux 23/07/2007, 13h30   Sujet programmer en C++ - Message #11
Memnon
 
Date d'inscription: mars 2007
Âge: 19
Messages: 143
Re : programmer en C++
Citation:
Posté par jobherzt Voir le message
sacrilege !!!!!!!!!! printf c'est du C. pas du C++.

désolé j'avais pas fait gaffe
dans ce cas j'ai rien dit...
Memnon est déconnecté   Réponse avec citation
Vieux 23/07/2007, 17h15   Sujet programmer en C++ - Message #12
Gre
 
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
Re : programmer en C++
Citation:
Posté par r0d Voir le message
Juste histoire de pinailler, je préfère
Code:
cin.get();
que
Code:
system("pause");
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)
Gre est déconnecté   Réponse avec citation
Vieux 23/07/2007, 17h17   Sujet programmer en C++ - Message #13
Gre
 
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
Re : programmer en C++
Citation:
Posté par jobherzt Voir le message
cout n'affiche rien tant que tu n'as pas mis un endl (ou un flush). essaie avec

Code:
cout << x e<<endl;

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)
Gre est déconnecté   Réponse avec citation
Vieux 23/07/2007, 18h20   Sujet programmer en C++ - Message #14
loulou40
 
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.

Citation:
#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...
loulou40 est déconnecté   Réponse avec citation
Vieux 24/07/2007, 04h49   Sujet programmer en C++ - Message #15
Gre
 
Date d'inscription: juin 2005
Localisation: Sherbrooke (Canada)
Âge: 33
Messages: 489
Re : programmer en C++
Citation:
Posté par loulou40 Voir le message
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.

Citation:
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)
Gre est déconnecté   Réponse avec citation
Vieux 24/07/2007, 09h52   Sujet programmer en C++ - Message #16
r0d
 
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.
r0d est déconnecté   Réponse avec citation
Vieux 24/07/2007, 17h29   Sujet programmer en C++ - Message #17
loulou40
 
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?
loulou40 est déconnecté   Réponse avec citation
Vieux 24/07/2007, 17h36   Sujet programmer en C++ - Message #18
skydancer
 
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.
skydancer est déconnecté   Réponse avec citation
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é

A voir aussi
[Thermique] programmer un thermostat (Forum Dépannage)
Comment programmer? (Forum Logiciel - Software - Open Source)
programmer en math ? (Forum Mathématiques du supérieur)
programmer un pic (Forum Électronique)