Permalänk

C++ Igen!!

cin >>answ;
if(answ == yes)
{
cout <<"It works!" <<endl;
}
else if(answ == no)
{
cout <<"It doesnt!" <<endl;
}
else
{
cout <<"[GAME OVER]" <<endl;
}

Ser någon något fel?
jag får bara upp "It works!" vad jag än skriver.
PS: har "int main()" o.s.v ovanför

snälla rädda mig !

Visa signatur

Våga inte ens prata filosofi med mig...

Permalänk
Medlem

cin >> answ; if (answ == "yes") cout << "It Works" << endl; else if(answ == "no") cout << "It Doesn't" << endl; else cout << "[Game Over]" << endl;

Visa signatur

"`F' is group reply. This is because `G' is for sort and `g' is for get new mail. And `G' is for sort because `sort' used be called `group', and anyway `S' is for save mailbox and `s' is for file message in folder, because `f' is group reply and `F' is group reply including original text."

Permalänk

Tack för tipset!
Men tyvärr så buggade detta ut mer.
Jag har provat med "yes" men det funkar inte, varför vet jag inte...

tack ändå!

Visa signatur

Våga inte ens prata filosofi med mig...

Permalänk
Medlem

Är inte detta exakt samma fråga som i http://sweclockers.com/forum/showthread.php?s=&threadid=84945 ?
Där du fick svaret att du kan inte använda
char t[5];
t == yes utan måste använda
strcmp(t, "yes") == 0 ??

Visa signatur

"Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief."
-Tim O'Reilly "http://iiice.net/~ice/stuff/secret_msg.wav" - who?

Permalänk
Medlem

Om det här vore java skulle jag sagt såhär:
== operatorn fungerar bara mellan primitiva datatyper.
En sträng är ingen primitiv datatyp.
Tecknen i strängen däremot är det, så man jämföra tecken för tecken.
Detta har man redan färdiga metoder för.
Nåt liknande gäller även för C++.
Därför måste du använda strcmp() som IcE säger.

Visa signatur

[zux]

Permalänk
Medlem

#include <iostream> #include <stdlib.h> int main(int argc, char *argv[]) { char answ[3]; cin >>answ; if(strcmp(answ, "yes") == 0) { cout <<"It works!" <<endl; } else if(strcmp(answ, "no") == 0) { cout <<"It doesnt!" <<endl; } else { cout <<"[GAME OVER]" <<endl; } system("PAUSE"); return 0; }

Edit: Doh, nån hade redan svarat :]

Permalänk
Hedersmedlem

== 0 är ju fult.. ! är mycket finare

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Medlem

jo, vet men för tydlighetens skulle så

Visa signatur

"Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief."
-Tim O'Reilly "http://iiice.net/~ice/stuff/secret_msg.wav" - who?

Permalänk

Error = cannot convert parameter 1 from int to const char

Visa signatur

Våga inte ens prata filosofi med mig...

Permalänk
Hedersmedlem

Vilken rad var "errorn" på, och motsvarade KOOD

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk

char answ[3];

Visa signatur

Våga inte ens prata filosofi med mig...

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Thomas

== 0 är ju fult.. ! är mycket finare

Det är lite av en dålig ovana dock. När man t.ex. går över till Java eller C# kommer det inte gå hem. Dessa språk kräver nämligen att villkor är riktiga booleanska uttryck. 0 eller 1 är inte det.

Permalänk

om jag ersätter 0 med ! kommer det en hel bunke fel... bara så ni vet...

Visa signatur

Våga inte ens prata filosofi med mig...

Permalänk

Tack allihopa! Jag har lagt till er i min tack lista, nu har jag äntligen fått rätt på det....

tusen tack allesammans!

Visa signatur

Våga inte ens prata filosofi med mig...

Permalänk
Medlem

Självklart menade Thomas att jag skulle ersätta
strcmp(t, "yes") == 0 / strcmp(t, "yes") är lika med 0 med:
!strcmp(t, "yes") / not strcmp(t, "yes")
inte strcmp(t, "yes") == ! / strcmp(t, "yes") lika med not SYNTAX ERROR.

Snälla du titta lite på www.gametutorials.com där finns det lite bra tutorials.

Visa signatur

"Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief."
-Tim O'Reilly "http://iiice.net/~ice/stuff/secret_msg.wav" - who?

Permalänk

tack IcE !
nu har jag hela sajten på hårddisken...

Visa signatur

Våga inte ens prata filosofi med mig...

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Thomas
== 0 är ju fult.. ! är mycket finare

Jag ogillar egentligen att diskutera vad som är fint och fult, men här vill jag nog hävda att ! är otroligt fult.

if ( !strcmp(...)) utläser jag som [om inte strcmp så...] Total rappakalja m.a.o.
if (strcmp(...) == 0) kan man kanske med lite god vilja utläsa som [om skillnaden är noll så...].

Hur som helst så finns det ingen anledning att använda den funktionen ändå.

   string answ;    cin >> answ;    if (answ == "yes")       cout << "It works, and the code is readable!" << endl;

Permalänk
Medlem

man kan väl använda char * också?

char *answ;
osv som i malas exempel...

Visa signatur

"`F' is group reply. This is because `G' is for sort and `g' is for get new mail. And `G' is for sort because `sort' used be called `group', and anyway `S' is for save mailbox and `s' is for file message in folder, because `f' is group reply and `F' is group reply including original text."

Permalänk
Medlem

K-Force: nej, då får man göra på sättet Jonte beskrev.

Visa signatur

//cykze