Hjælp med at compare

Tags:    c++

<< < 12 > >>
Hej

Jeg håber virkelig i kan hjælpe mig med denne her hårknude.. jeg har brugt en hel del tid, men det er som om det bare ikke -vil- fungere...

Jeg vil lige sige at jeg er absolut nybegynder, så bær venligst over med mig

Fold kodeboks ind/udKode 


Hvis i er interesteret i koden til hele programmet, kommer den her:

Fold kodeboks ind/udKode 


på forhånd tak =)



Hvad er der galt?



jeg bruger getch(); til at få et bogstav fra tastaturet, som bliver gemt i henholdsvis valg1 og valg2

Jeg skal sammenligne indholdet af valg1 med et bogstav, som f.eks. A

så hvis brugeren trykker "a", så bliver "slutvaerdi" reguleret efter det... men det fungerer bare overhovedet ikke

Switch kan åbenbart kun bruges med integerer, så jeg går ud fra at jeg skal bruge "if" statements, til at sammenligne med.. jeg har forsøgt, som i eksemplet ovenover, men det virker overhovedet ikke =(



switch er kun for heltal

Du skal bruge strcmp for at sammenligne to strenge:

char str[10] = "Hello";
if(strcmp(str, "Hello") == 0)
std::cout << "str is Hello" << std::endl;



kan jeg i mit tilfælde så godt sige:

char valg1[6];
cout << "Hvilke sider/vinkler kender du? ( det lille bogstav foerst! )\\n";
valg1[] = getch();

bliver inholdet af valg1 så keyboard inputtet?



Glem lige det forrige, det er std::string du arbejder med, så det er ikke der problemet er.

Du har
valg2[6] = getch();

Hvor valg2 er:
string valg2[6];

Dvs. du skriver ud over enden på valg2, du har kun lov til at bruge valg2[0] - valg2[5]

Hvis du kun skal bruge én karakter var det nok bedre at bruge:

char valg2 = getch();

og
if(valg2 == 'A')

Senere har du:
if(valg1[6] == "a")(
if(valg2[6] == "A") slutvaerdi = 1;)
...
)

Det skal vist være:
if(valg1[6] == "a"){
{if(valg2[6] == "A") slutvaerdi = 1;}
}

Dvs {} omkring blokke, ikke ()



Nej man kan ikke sige:
valg1[] = getch();

Stadig, du har så vidt jeg kan se kun brug for ét tegn, og ikke et array af strenge, så det er nok med én char.

Og man kan godt lave switch på en char.



Dvs:

Fold kodeboks ind/udKode 


Osv.



Iøvrigt er der sjældent grund til at bruge float, brug double.
double er mere nøjagtige, og på moderne computere hurtigere end float.



Takker, det hjalp en del =)

nu giver den bare et underligt compilerings problem ved linie 195:

Hvis jeg "kommenterer" case '4' og '5' så vil den gerne compilerer.. jeg kan bare ikke se forskellen på case '3' og '4':

"break;

case '3':
cout << "b = ";
cin >> b;
cout << "B = ";
cin >> B;
cout << "\\n";
x = sin(B);
c = b / x;
cout << "Siden c = " << c << "\\n\\n"; //c = b / sin(B)

break;

case: '4':
cout << "a = ";
cin >> a;
cout << "A = ";
cin >> A;
cout << "\\n";
x = sin(A);
c = a / x;
cout << "Siden c = " << c << "\\n\\n"; //c = a / sin(A)

break;"

195 expected primary-expression before ':' token
195 expected `;' before ':' token

Det samme gør sig gældende for case: '5' .. but why?

efter at have omklamret blokkene med {} istedetfor (), ville den gerne kompilere.. mit problem er bare, at den tilsynladende ikke retunerer nogen somhelst værdi =( ( udvalg() ) .. nogle der ved hvad der er gået galt der?



Der står:
case: '4':

Der er et : for meget, det skal være:

case '4':



<< < 12 > >>
t