Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Laser

jouku [07.07.2003 15:01:31]

#

char koodi[10000];
cin >> koodi;
if(koodi=="word")

cout <<"Kirjoitappa printattava teksti\n";
cin >> koodi;
cout << koodi<<".\n";

probleema on siinä kun mä oon tekemässä Laseria niin kun kirjoittaa word niin tulis teksti Kirjoitappa printattava teksti ja sit kun kirjoittais tätä en osaa ja kirjoittais sen jälkeen run niin kaikki häviäisi ja tulis kirjoitettu printtaus tämän osaan. C++ kielenä

vipemype [07.07.2003 15:20:50]

#

Olis ihan kiva jos olis pisteitä ja pilkkuja. Enkä tajunnut muutenkaan: "kirjottas tätä en osaa" "tulis kirjoitettu printtaus tämän osaan".

Tajusinko oikein, että tuo koodi=="word" ei toimi?

Merkkijonoja ei voi verrata noin. Pitää käyttää strcmp-funktiota.

// #include <stdio.h>
// strcmp löytyy tuolta

if(strcmp(koodi,"word")==0) // palauttaa nollan jos on samat
{
    // tähän omaa soodia
}

odys [07.07.2003 15:40:20]

#

kannattaa mielummin laittaa se:

do // Kysytään niin kauan kun käyttäjä antaa jotain muuta kuin 'word'
    cout << "Anna tekstiä";
    cin >> koodi;
while (strcmp(koodi, "word") == 0);
cout << koodi << endl;

thefox [07.07.2003 17:21:42]

#

Kun nyt C++:sta oli kyse niin voit toki käyttää std::string-luokkaa, silloin vertaaminen operaattoreiden ylikuormituksen ansiosta onnistuu suoraan:

#include <iostream>
#include <string>

int main()
{
  std::string foo;
  std::cout << "hei! kirjo jotain:" << std::endl;
  std::cin >> foo;
  if(foo == "bar") std::cout << "foo oli 'bar'" << std::endl;
    else std::cout << "foo ei ollut 'bar' :(" << std::endl;
  return 0;
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta