Ne lisez pas la suite, c'était juste un oubli d'include (<string>).
Si vous aviez commencé à lire n'hésitez pas à m'insulter je le mérite j'ai fait de la merde...
Bonjour, je suis entrain de faire une petite calculatrice. Voici le code :
#include <iostream>
#include <cmath>
#include "pch.h"
double add(double a, double b)
{
return a + b;
}
double subtract(double a, double b)
{
return a - b;
}
double multiply(double a, double b)
{
return a * b;
}
double divide(double a, double b)
{
return a / b;
}
int restCalculate(int a, int b)
{
return a % b;
}
int main()
{
std::cout << "Bienvenue dans la RCalculatrice !" << std::endl;
char restart('o');
while (restart == 'o')
{
std::cout << "Choisissez une operation (+, -, *, /)." << std::endl << "Pour calculer une racine caree tapez 'sqrt'." << std::endl << "Pour calculer une puissance tapez 'pow'." << std::endl << "Pour calculer un reste tapez 'r'" << std::endl;
std::string operationChoice;
std::cin >> operationChoice;
if (operationChoice == "+")
{
std::cout << "Vous avez choisi de faire une addition." << std::endl;
std::cout << "Entrez le premier nombre." << std::endl;
double a;
std::cin >> a;
std::cout << "Entrez le deuxieme nombre." << std::endl;
double b;
std::cin >> b;
double result;
result = add(a, b);
std::cout << a << " + " << b << " = " << result << std::endl;
}
if (operationChoice == "-")
{
std::cout << "Vous avez choisi de faire une soustraction." << std::endl;
std::cout << "Entrez le premier nombre." << std::endl;
double a;
std::cin >> a;
std::cout << "Entrez le nombre à soustraire." << std::endl;
double b;
std::cin >> b;
double result;
result = subtract(a, b);
std::cout << a << " - " << b << " = " << result << std::endl;
}
if (operationChoice == "*")
{
std::cout << "Vous avez choisi de faire une multiplication." << std::endl;
std::cout << "Entrez le premier nombre." << std::endl;
double a;
std::cin >> a;
std::cout << "Entrez le deuxieme nombre." << std::endl;
double b;
std::cin >> b;
double result;
result = multiply(a, b);
std::cout << a << " * " << b << " = " << result << std::endl;
}
if (operationChoice == "/")
{
std::cout << "Vous avez choisi de faire une division." << std::endl;
std::cout << "Entrez le nombre a diviser." << std::endl;
double a;
std::cin >> a;
std::cout << "Entrez le diviseur." << std::endl;
double b;
std::cin >> b;
double result;
result = divide(a, b);
std::cout << a << " / " << b << " = " << result << std::endl;
}
if (operationChoice == "sqrt")
{
std::cout << "Vous avez choisi de calculer une racine carree." << std::endl;
std::cout << "Entrez le nombre duquel il faut calculer la racine." << std::endl;
double a;
std::cin >> a;
double result;
result = std::sqrt(a);
std::cout << "La racine carree de " << a << " est " << result << std::endl;
}
if (operationChoice == "pow")
{
std::cout << "Vous avez choisi de calculer une puissance." << std::endl;
std::cout << "Entrez le nombre auquel sera applique la puissance." << std::endl;
double a;
std::cin >> a;
std::cout << "Entrez le nombre de la puissance." << std::endl;
double b;
std::cin >> b;
double result;
result = std::pow(a, b);
std::cout << a << " a la puissance " << b << " donne " << result << std::endl;
}
if (operationChoice == "r")
{
std::cout << "Vous avez choisi de calculer un reste." << std::endl;
std::cout << "Entrez le dividende." << std::endl;
int a;
std::cin >> a;
std::cout << "Entrez le diviseur." << std::endl;
int b;
std::cin >> b;
int result;
result = restCalculate(a, b);
std::cout << "Le reste de la division de " << a << " par " << b << " est " << result << std::endl;
}
std::cout << "Voulez vous faire un autre calcul ? (o / n)" << std::endl;
std::cin >> restart;
}
}
(pour info) Je commence sur Visual Studio donc je suis pas encore habitué à l'interface.
Quand je fais Ctrl + F5 ça ne marche pas mais je ne vois pas où se situe l'erreur et ne voit pas où sont les messages d'erreur dans Visual Studio.
J'en tire une conclusion hypothétique : Mon Visual Studio ne contient pas de compilateur ???
Sinon le seul endroit suspect dans mon code c'est à cette ligne :
std::cin >> operationChoice; //c'est ligne 38
-> les ">>" sont soulignés de vagues rouges et quand je passe ma souris dessus ça écrit : "aucun opérateur '>>' ne correspond à ces opérandes, les types d'opérandes sont : std::istream >> std::string"
Je ne comprends pas très bien ce message d'erreur mais j'ai quand même une petite idée. Cela signifie-t-il que je doit remplacer "std::cin" par "std::istream" ??
Pour résumer :
Pourquoi est-ce que cela ne marche pas ?
Mon VS ne contient-il vraiment pas de compilateur ?
Est-ce que remplacer "std::cin" par "std::istream" résolurait le problème ?
Merci d'avance pour vos réponses en espérant que je vous aurai pas trop embêter.
Edit : J'ai changer le #include "pch.h" de place pour le mettre en ligne 1 et cette fois les messages d'erreur se sont affichés. Les voici :
'>>' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'std::string' (ou il n'existe pas de conversion acceptable)
note: est peut-être 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_streambuf<char,std::char_traits<char>> *)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(void *&)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long double &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(double &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(float &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned __int64 &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(__int64 &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned long &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(long &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned int &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(int &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(unsigned short &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(short &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(bool &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::ios_base &(__cdecl *)(std::ios_base &))'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_ios<char,std::char_traits<char>> &(__cdecl *)(std::basic_ios<char,std::char_traits<char>> &))'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::basic_istream<char,std::char_traits<char>>::operator >>(std::basic_istream<char,std::char_traits<char>> &(__cdecl *)(std::basic_istream<char,std::char_traits<char>> &))'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,signed char *)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,signed char &)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,unsigned char *)'
note: ou 'std::basic_istream<char,std::char_traits<char>> &std::operator >><std::char_traits<char>>(std::basic_istream<char,std::char_traits<char>> &,unsigned char &)'
note: lors de la tentative de mise en correspondance de la liste des arguments '(std::istream, std::string)'
Encore désolé de vous faire subir mon incompétence...
- Edité par RomainBricout 26 octobre 2018 à 21:48:40
C++ à la vie à la mort. (Le python c'est bien aussi) || Rejoignez : https://discord.gg/9r3zqgg
* un include manquant peut provoquer des erreurs difficiles à interpréter. Il manque l'include <string>. * Ton VS a bien un compilateur, c'est lui qui indique cette erreur interminable. * c'est std::string le problème pas std::cin.
En recherche d'emploi.
Calculatrice et visual studio
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
C++ à la vie à la mort. (Le python c'est bien aussi) || Rejoignez : https://discord.gg/9r3zqgg
En recherche d'emploi.