Bonjour, j'ai un problème. En fait je fais en ce moment un programme en c++ (évidemment) qui permet de calculer des équation a une inconnue ainsi que des polynômes du second degrés. le problème est que l'ont doit saisir l'équation avec une variable string mais lorsque je cherche a faire une division avec deux valeurs de cette string et voila ce que sa donne ici le résultat est censé être -2 (-6/3) mais comme vous le voyez sa affiche -1.
voici le code en entier
#include <iostream>
#include <string>
using namespace std;
int main(){
int x;
int y, z;
string equa;
cin >> equa;
if (equa[5] == false){//equation type x+a=0 ou x-a=0
if (equa[1] == '-'){
cout << "x=";
cout << equa[2];
}else{
cout << "x=-";
cout << equa[2];
}
}else if(equa[6] == false){
if (equa[1] == 'x'){//equation type ax+b=0 ou ax+b=0
if (equa[2] == '-'){
cout << "x=";
cout << equa[3]/equa[0];
}else{
cout << "x=-";
cout << equa[3]/equa[0];
}
}
}
return 0;
}
Tu ne t'y prends pas bien pour ce qui t'est demandé.
Déjà, tu effectues tes opérations arithmétique depuis l'entrée utilisateur, depuis une chaine de caractère.
Si tu fais :
std::string a = "abc";
std::string b = "abc";
a[2] / b[0]
Tu effectues une opération sur les nombres ASCII correspondant aux caractères, donc c'est comme si tu fessais :
a[2] / b[0]
=
'c' / 'a'
=
99 / 97
Et ce n'est pas ce qui est attendu
Tu dois bien faire la part des choses entre IO (Input / Output => interactions avec l'utilisateur) et ce que ton programmes est censé faire. L'IO d'un côté, et les instructions pour obtenir le résultat d'un autre.
Il y a trop d'erreur, et de semblants d’incompréhensions que pour pouvoir corriger ton programme.
Renseignes-toi sur la manipulation de chaines de caractères, ainsi que sur le lexing et le parsing. Tu ne pourras pas créer ton solveur d'équation avec quelque chose qui ressemble à ce que tu as fait.
Essayes déjà de créer une petite calculatrice, sans inconnue.
Bonne fin de journée.
- Edité par vanaur 26 janvier 2019 à 21:35:04
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
× 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.
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...