À l'aide de Char dans une instruction if C++
Les gens, je suis en train d'utiliser un if avec une variable char, mais il ne semble pas s'apercevoir que le " oui " condition est remplie. Je ne sais pas si il existe un moyen de le faire sans le tableau. Voici mon code ci-dessous. Toute aide est très appréciée.
//Running times calculator
# include <iostream>
# include <math.h>
using namespace std;
int main ()
{
float cTime;
float gTime;
float cDist;
float gDist;
float min;
float sec;
float cMin;
float cSec;
float p1000;
char response[1];
int blank;
printf ("Welcome to the running times calculator.\n\nEnter your completed race distance in metres: \n");
scanf ("%f", &cDist);
printf("Enter your completed race time. Type minutes, hit enter. Type seconds, hit enter\n");
scanf ("%f" "%f", &cMin, &cSec);
cTime = cSec+(60*cMin);
p1000 = pow(1000/cDist,1.1)*cTime;
printf ("Would you like to enter another race time to improve prediction accuracy? \n");
scanf ("%s", &response);
if(response == "yes")
{
printf ("Enter your completed race distance in metres: \n");
scanf ("%f", &cDist);
printf("Enter your completed race time. Type minutes, hit enter. Type seconds, hit enter\n");
scanf ("%f" "%f", &cMin, &cSec);
cTime = cSec+(60*cMin);
p1000 = ((pow(1000/cDist,1.1)*cTime)+p1000)/2;
}
printf ("What is your goal race distance in metres? \n");
scanf ("%f", &gDist);
gTime = pow(gDist/1000, 1.1)*p1000;
min = gTime/60;
sec = remainder(gTime,60);
if (sec < 0)
{
sec = sec + 60;
min = min - 1;
}
printf ("Your predicted time for a race of %.0f metres is %.0f minutes and %.0f seconds", gDist, min, sec);
scanf("%f", &blank);
return 0;
}
- Inconnu identifiant
printf
. Vous avez oublié de#include <stdio.h>
(ou<cstdio>
) - C'est pas du C++.
- Pourquoi ce n'est pas du C++? Existe-il des déclarations qui ne sont pas dans le langage C++?
- printf, scanf, des tableaux de char. C'est du code C, et devrait donc être étiqueté comme C.
- Je peux le compiler en C++. Le C++ tag signifie que la question doit utiliser en C++ élément de langage qui n'est pas dans le langage C?
- je me demande pourquoi il a obtenu
iostream
inclus... - Cela signifie qu'il doit utiliser la syntaxe est idiomatique C++.
- Si votre code est destiné à être un code C++, utilisez le [c++] balise. Si c'est destiné à être le code en C, utilisez la touche [c] de la balise. Ne pas utiliser de balise juste parce qu'il arrive à compiler dans cette langue.
- Euh.. oui. Rien ici, c'est "C++". Remplacez #include <iostream>, avec #include <stdio.h> et de supprimer l'utilisation de l'espace de noms de la directive et de cette compile comme code C
- Merci pour les commentaires les gars. C'est mon premier code pour un compilateur C++. J'ai appris un peu de C il y a quelques années donc je suppose que j'ai été, je l'utilise juste par habitude ici
Vous devez vous connecter pour publier un commentaire.
Vous avez quelques problèmes avec la façon dont vous traitez votre char tableau.
char response[1];
Vous créez un tableau de char qui se compose d'un personnage ici, mais alors vous traiter comme une chaîne de caractères dans ces lignes:scanf ("%s", &response);
if(response == "yes")
notez également que vous ne pouvez pas il suffit de comparer un char tableau et un littéral de chaîne avec
==
tous vous ferais serait de comparer les adresses. Vous feriez soit utiliser strcmp() ou mieux utiliser std::string.scanf ("%s", &response)
appelle UB siresponse
est un tableau de char.N'ai pas regardé le code, mais vous utilisez un
qui ne fonctionne pas avec un char [], c'est pour la chaîne
utiliser strcmp à la place.