Probleme programme C++
Résolu
gotrunks39
Messages postés
38
Date d'inscription
Statut
Membre
Dernière intervention
-
overcode Messages postés 119 Date d'inscription Statut Membre Dernière intervention -
overcode Messages postés 119 Date d'inscription Statut Membre Dernière intervention -
Salut!
Je dois faire un exercice un c++ mais je bloque ....
Je doit demander le prenom, le sexe et l'année de naissance de l'utilisateur, donc voici mon code :
#include <iostream>
#include <cmath>
using namespace std;
#include <ctime>
int anneeCourante()
{
time_t date = time(0);
return 1900 + localtime(&date)->tm_year;
}
int main()
{
string prenom;
int annee_naissance;
char sexe;
cout <<"Quel est votre prenom??" << endl;
cin >> prenom;
cout <<"Quelle est votre annee de naissance??" << endl;
cin >> annee_naissance;
cout <<"Quel est votre sexe??" << endl;
cin >> sexe;
cout << "Bonjour " << prenom << " tu es agé" << (sexe == 'F')?'e':"" << " de " << anneeCourante()-annee_naissance << " ans." << endl;
}
Dans l'exercice je doit tenir compte si c'est une fille ou un garcon en mettant un 'e' à 'agé' puis un 's' ou non à 'an'
Mais le probleme c'est mon (sexe == 'F')?'e':""
Quand j'essaye d ele compiler il me dit: "error: invalid operands of types `const char [1]' and `const char [5]' to binary `operator<<'"
Pouvez vous m'aider?? Je pense que c'est simplement une erreur de syntaxe mais je suis pas sur
Je n'ose pas le faire pour le 's' de 'an' j'attend vos reponse ;)
Merci :)
Je dois faire un exercice un c++ mais je bloque ....
Je doit demander le prenom, le sexe et l'année de naissance de l'utilisateur, donc voici mon code :
#include <iostream>
#include <cmath>
using namespace std;
#include <ctime>
int anneeCourante()
{
time_t date = time(0);
return 1900 + localtime(&date)->tm_year;
}
int main()
{
string prenom;
int annee_naissance;
char sexe;
cout <<"Quel est votre prenom??" << endl;
cin >> prenom;
cout <<"Quelle est votre annee de naissance??" << endl;
cin >> annee_naissance;
cout <<"Quel est votre sexe??" << endl;
cin >> sexe;
cout << "Bonjour " << prenom << " tu es agé" << (sexe == 'F')?'e':"" << " de " << anneeCourante()-annee_naissance << " ans." << endl;
}
Dans l'exercice je doit tenir compte si c'est une fille ou un garcon en mettant un 'e' à 'agé' puis un 's' ou non à 'an'
Mais le probleme c'est mon (sexe == 'F')?'e':""
Quand j'essaye d ele compiler il me dit: "error: invalid operands of types `const char [1]' and `const char [5]' to binary `operator<<'"
Pouvez vous m'aider?? Je pense que c'est simplement une erreur de syntaxe mais je suis pas sur
Je n'ose pas le faire pour le 's' de 'an' j'attend vos reponse ;)
Merci :)
A voir également:
- Probleme programme C++
- Programme demarrage windows - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
Bonsoir,
Comme tu le dis, c'est juste un problème de syntaxe :)
Y a comme une légère embrouille au niveau des priorités des opérateurs : le ternaire et <<. Ca se résoud avec des parenthèses.
Remarque qu'il y avait une autre erreur :
Les deux choix doivent être du même type, ce qui n'est pas le cas de ton ancien code. D'un côté tu mets un char, de l'autre une chaîne de caractère.
Au passage, pour ne plus être limité à des prénoms sans espaces, tu peux mettre :
au lieu de :
Citation :
Je n'ose pas le faire pour le 's' de 'an' j'attend vos reponse ;)
Tu comptais traiter le cas où l'utilsateur aurait moins de deux ans ?! XD
Comme tu le dis, c'est juste un problème de syntaxe :)
Y a comme une légère embrouille au niveau des priorités des opérateurs : le ternaire et <<. Ca se résoud avec des parenthèses.
cout << "Bonjour " << prenom << ", tu es agé" << ( sexe == 'F' ? "e" : "" ) << " de " << anneeCourante()-annee_naissance << " ans." << endl ;
Remarque qu'il y avait une autre erreur :
(sexe == 'F')?'e':""
Les deux choix doivent être du même type, ce qui n'est pas le cas de ton ancien code. D'un côté tu mets un char, de l'autre une chaîne de caractère.
Au passage, pour ne plus être limité à des prénoms sans espaces, tu peux mettre :
getline(cin, prenom) ;
au lieu de :
cin >> prenom ;
Citation :
Je n'ose pas le faire pour le 's' de 'an' j'attend vos reponse ;)
Tu comptais traiter le cas où l'utilsateur aurait moins de deux ans ?! XD
Oui effectivement ca fonctionne bien merci ^^
Et oui il faut traiter le cas où l'utilisateur a moins de 2 ans xD (meme si c'est un peu cucul dans l'idée ^^)
Par contre a quoi sert getline ??
Sinon merci à toi de ton aide
Et oui il faut traiter le cas où l'utilisateur a moins de 2 ans xD (meme si c'est un peu cucul dans l'idée ^^)
Par contre a quoi sert getline ??
Sinon merci à toi de ton aide
getline sert à lire une ligne entière à partir d'un flux (comme cin ou un fichier).
Avec le cin >> variable, la lecture ne prendra que le premier mot. au premier espace ou tabulation, la lecture du flux s'arrêtera pour cette variable.
Avec le getline, c'est le flux jusqu'à ce que tu tape "Enter" qui sera lu.
Avec le cin >> variable, la lecture ne prendra que le premier mot. au premier espace ou tabulation, la lecture du flux s'arrêtera pour cette variable.
Avec le getline, c'est le flux jusqu'à ce que tu tape "Enter" qui sera lu.