Forum: C++, loop och struct problem

Forum huvudsida -> Programmering -> C++, loop och struct problem

Sidor: 1

Till botten

nathler 22:41 - 1:a Juli 2006 | Post #1
Medlem
Inlägg: 6


Skicka PM
Hej. Varför ändras inte värdet på hondai.price när man skriver in motor och sedan zebra? det borde ju öka med 10000.
samma fel på hondai.nitro när man ändrar det till noz.

  1.  
  2. #include <iostream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. ///////////////////////////////////////////////////////////////
  8.  
  9. bool loop = 1;
  10. string val;
  11.  
  12. struct bil
  13. {
  14. unsigned int price;
  15. char motor[20];
  16. char light[20];
  17. char nitro[20];
  18. char spolier[20];
  19. char neon[20];
  20. };
  21.  
  22. bil hondai =
  23. {
  24. 150000,
  25. "gnu",
  26. "xenon",
  27. "venom",
  28. "L-style",
  29. "blue-sky"
  30. };
  31.  
  32. //////////////////////////////////////////////////////////////////////
  33.  
  34. int main()
  35. {
  36. while (loop == 1)
  37. {
  38. cout << "Du har valt bilen hondai. F'o'r: " << hondai.price << " i bilen finns nu. motor: " << hondai.motor << ", "
  39. << endl << "light: " << hondai.light << ", nitro: " << hondai.nitro << ", spoiler: " << hondai.spolier << ", neon: " << hondai.neon << ". \n";
  40. cout << "Vill du 'a'ndra nAt skriv dA vad du vill 'a'ndra. \nVal: _____\b\b\b\b\b";
  41. cin >> val;
  42. if (val == "motor")
  43. {
  44. cout << "Du kan 'a'ndra motor till zebra: \n";
  45. cin.get ();
  46. cin.get (hondai.motor, 20);
  47. if (hondai.motor == "zebra")
  48. {
  49. hondai.price = hondai.price + 10000;
  50. }
  51. }
  52. else if (val == "nitro")
  53. {
  54. cout << "Du kan 'a'ndra nitro till noz \n";
  55. cin.get ();
  56. cin.get (hondai.nitro, 20);
  57. if (hondai.nitro == "noz")
  58. {
  59. hondai.price = hondai.price + 7500;
  60. }
  61.  
  62. }
  63. else
  64. {
  65. }
  66. }
  67.  
  68. cin.get();
  69. cin.get();
  70. return 0;
  71. }
  72.  


-------------------------
Nothing on earth takes forever, but none of your deeds where in vain.



Nissebosselasse 11:33 - 2:a Juli 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Det är för att du inte kan använda jämföringsoperanden (dubbla likamedtecken, ==) på en char * (du måste använda strcmp).
Det som händer är att C/C++ jämför pekaradresserna istället.

Anledningen till att det fungerar första gången (rad 42, inläsning till variabeln val) är för att den är av klassen std::string, vilken överlagrar just jämförelseoperanden (==).

,,ndra alla char i strukturen till string så går det bättre. Det vill säga:
  1.  
  2. struct bil {
  3. unsigned int price;
  4. string motor;
  5. string light;
  6. string nitro;
  7. string spolier;
  8. string neon;
  9. };

Vid inläsningen/inläsningarna längre ner, byt ut cin.get (..., 20) till:
  1.  
  2. // På rad 47 & 48
  3. cin >> hondai.motor;
  4.  
  5. // På rad 57 & 58
  6. cin >> hondai.nitro;


-------------------------
http://pushingcows.se
Gula Nallen



Sidor: 1

Forum huvudsida -> Programmering -> C++, loop och struct problem
Atom feed

Du får inte posta i den här tråden | Till toppen