Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [C++] Zmienna zależna od innej
Forum PHP.pl > Inne > Hydepark
toaspzoo
Witam, jak zrobić, aby wywoływać zmienną q1 gdy wartość zmiennej nr wynosi 1

Mam zmienne q1, q2, q3 i chciałbym wywołać zależnie od wprowadzonego numeru

czyli

kawałek...
Kod
q1 = "123";
q2 = "321";
cin >> nr;
cout << q + nr // ?
Crozin
C++ nie jest tak dynamiczny jak PHP, nie ma w nim czegoś takiego jak zmienne zmiennych. Użyj zwykłego IF-a:
  1. if (nr == "1") { // czy jak tam się w C++ porównuje tekst.
  2. cout << q1;
  3. } else {
  4. cout << q2;
  5. }
Jeżeli tych zmiennych "q" masz więcej rozważ wykorzystanie tablicy.
Fifi209
Co do porównywania stringów w C++

http://www.cplusplus.com/reference/string/string/compare/
rzymek01
jeśli to ma być tylko i wyłącznie numer to użyj tablicy:
Kod
q[0], q[1] itd.


jeśli chcesz osiągnąć przyjazność/trohcę dynamiczności to musisz już korzystać z m.in. map i szablonów smile.gif
toaspzoo
Kod całego badziewia ;)

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <windows.h>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int nr = 1, good = 0, bad = 0, end = 0;

string

Kod całego badziewia ;)

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <windows.h>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int nr = 1, good = 0, bad = 0, end = 0;
  9.  
  10. string pow = "Witamy w quizie \n \n \n";
  11.  
  12. int imie()
  13. {
  14. if(pow != "")
  15. {
  16. string nick;
  17. cout << "Wpisz swoj nick: ";
  18. cin >> nick;
  19. cout << "Witaj, " << nick << " oto pierwsze pytanie \n \n \n";
  20. }
  21. }
  22.  
  23. int main()
  24. {
  25.  
  26. cout << pow;
  27. imie();
  28.  
  29. pow = "";
  30.  
  31.  
  32.  
  33.  
  34. string q[15];
  35. string a[15];
  36.  
  37.  
  38.  
  39. q[1] = "Co zrobi zuzia, gdy nie bedzie jej taty ? \n 1. Rozplacze sie \n 2. Zasnie \n";
  40. a[1] = "1";
  41.  
  42. q[2]= "Co Ala robi najczesciej na swoim laptopie ? \n 1. Siedzi na nk.pl \n 2. Gra w Pet Party \n 3. Wszystkie odpowiedzi sa prawidlowe \n";
  43. a[2] = "3";
  44.  
  45. q[3] = "Jaka jest ulubiona gra Kacpra ? \n 1. Counter-Strike \n 2. Half-Life \n 3. Minecraft \n 4. Metin2 \n";
  46. a[3] = "4";
  47.  
  48. q[4]= "Co teraz robisz? \n 1. Siedze i czytam quiza \n 2. Nic nie robie \n 3. Wysilam mozgownice \n 4. Nudze sie \n 5. Robie wszystko naraz \n";
  49. a[4] = "3";
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. string answer;
  59.  
  60.  
  61. cout << q[nr];
  62. cout << "ODPOWIEDZ: ";
  63. cin >> answer;
  64.  
  65. string ca = a[nr];
  66. if(answer == ca)
  67. {
  68.  
  69. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  70.  
  71. cout << "\n Poprawna odpowiedz! \n \n";
Fifi209
Kod Ci się chyba rozwalił.

Dawno nie pisałem w C++ ale pytania i odpowiedzi możesz zrobić w tablicy wielowymiarowej.

string questions[15][2] o ile dobrze pamiętam
Teraz w questions[0][0] przypiszesz pytanie a w questions[0][1] poprawną odpowiedź

To:
string nick;
cout << "Wpisz swoj nick: ";
cin >> nick;

Nie pobierze np. takiego nicku: Jacek Kowalski
toaspzoo
Jak zrobić, aby przyjął z odstępami ?

Teraz mam problem, ponieważ do skryptu php przez curl'a nie przekazuje liczby tylko krzaka ;(

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <windows.h>
  4. #include <curl/curl.h>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. int nr = 1, good = 0, bad = 0, end = 0;
  10.  
  11. string pow = "Witamy w quizie \n \n \n";
  12. string nick;
  13.  
  14.  
  15. int imie()
  16. {
  17. if(pow != "")
  18. {
  19.  
  20. cout << "Wpisz swoj nick: ";
  21. cin >> nick;
  22. cout << "Witaj, " << nick << " oto pierwsze pytanie \n \n \n";
  23.  
  24. }
  25. }
  26.  
  27. int main()
  28. {
  29.  
  30. cout << pow;
  31.  
  32. imie();
  33.  
  34. pow = "";
  35.  
  36.  
  37.  
  38.  
  39. string q[15];
  40. string a[15];
  41.  
  42.  
  43.  
  44. q[1] = "Co zrobi zuzia, gdy nie bedzie jej taty ? \n 1. Rozplacze sie \n 2. Zasnie \n";
  45. a[1] = "1";
  46.  
  47. q[2]= "Co Ala robi najczesciej na swoim laptopie ? \n 1. Siedzi na nk.pl \n 2. Gra w Pet Party \n 3. Wszystkie odpowiedzi sa prawidlowe \n";
  48. a[2] = "3";
  49.  
  50. q[3] = "Jaka jest ulubiona gra Kacpra ? \n 1. Counter-Strike \n 2. Half-Life \n 3. Minecraft \n 4. Metin2 \n";
  51. a[3] = "4";
  52.  
  53. q[4]= "Co teraz robisz? \n 1. Siedze i czytam quiza \n 2. Nic nie robie \n 3. Wysilam mozgownice \n 4. Nudze sie \n 5. Robie wszystko naraz \n";
  54. a[4] = "3";
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. string answer;
  64.  
  65.  
  66. cout << q[nr];
  67. cout << "ODPOWIEDZ: ";
  68. cin >> answer;
  69.  
  70. string ca = a[nr];
  71. if(answer == ca)
  72. {
  73.  
  74. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  75.  
  76. cout << "\n Poprawna odpowiedz! \n \n";
  77. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
  78. FOREGROUND_INTENSITY | FOREGROUND_RED |
  79. FOREGROUND_GREEN | FOREGROUND_BLUE);
  80.  
  81. good = good + 1;
  82. }
  83. else
  84. {
  85. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
  86. cout << "\n Bledna odpowiedz! \n \n";
  87. bad = bad + 1;
  88.  
  89. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
  90. FOREGROUND_INTENSITY | FOREGROUND_RED |
  91. FOREGROUND_GREEN | FOREGROUND_BLUE);
  92.  
  93. }
  94. nr = nr+ 1;
  95.  
  96. cout <<endl;
  97.  
  98.  
  99.  
  100. if((q[nr]) == "")
  101. {
  102. system("cls");
  103.  
  104. //not
  105.  
  106. if(good > bad)
  107. {
  108. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  109. cout << "Gratulacje, zdales test ! \n Zapisze twoj wynik na stronie internetowej";
  110. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
  111. FOREGROUND_INTENSITY | FOREGROUND_RED |
  112. FOREGROUND_GREEN | FOREGROUND_BLUE);
  113.  
  114.  
  115. string n;
  116.  
  117. cin >> n;
  118.  
  119.  
  120. string dane;
  121.  
  122. dane = "nick=";
  123. dane +=n;
  124. dane +="&good=";
  125. dane += good;
  126. dane +="&bad=";
  127. dane += bad;
  128.  
  129. CURL *curl;
  130. CURLcode res;
  131.  
  132. curl = curl_easy_init();
  133.  
  134.  
  135.  
  136.  
  137. if(curl) {
  138. curl_easy_setopt(curl, CURLOPT_URL, "http://znajomek.unixstorm.org/quiz/index.php");
  139. curl_easy_setopt(curl, CURLOPT_POST, 1);
  140. curl_easy_setopt(curl, CURLOPT_POSTFIELDS, dane.c_str());
  141. res = curl_easy_perform(curl);
  142. curl_easy_cleanup(curl);
  143. } else { cout << "Blad zapisywania wyniku!";}
  144.  
  145. }
  146. else
  147. {
  148.  
  149. cout << "Przykro mi, oblales test;( \n Twoj ranking nie zostal zapisany";
  150. }
  151.  
  152. cout << "\n\n Poprawnych: " << good << "\n Blednych: " << bad << "\n\n\n";
  153. system("PAUSE");
  154. return 0;
  155.  
  156. end = 1;
  157. }
  158.  
  159.  
  160. if(end == 0)
  161. {
  162. main();
  163. }
  164.  
  165. }


i Kod dodawania

  1. <?php
  2. include('../db.php');
  3.  
  4.  
  5. if($_POST['nick'] <> '')
  6. {
  7. $nick = $_POST['nick'];
  8. $good = $_POST['good'];
  9. $bad = $_POST['bad'];
  10. $ip = $_SERVER['REMOTE_ADDR'];
  11.  
  12. $wynik = zapytaj("INSERT INTO `quiz_wygrane` SET `nick` = '$nick', `good` = '$good', `bad` = '$bad', `ip` = '$ip';")or die(mysql_error());
  13. echo "\n Zapisano wynik jako $good poprawnych i $bad blednych ($_POST[good])";
  14. }
Fifi209
Po 1.
  1. if($_POST['nick'] <> '')

Co to jest?
Raczej
!= jak dla mnie

A tutaj działający poprawiony kod:
  1.  
  2. #define CURL_STATICLIB
  3. #include <cstdlib>
  4. #include <iostream>
  5. #include <windows.h>
  6. #include <curl/curl.h>
  7. #include <string.h>
  8.  
  9. using namespace std;
  10.  
  11. int nr = 0, good = 0, bad = 0, end = 0;
  12. string q[15][2];
  13.  
  14. string pow = "Witamy w quizie \n \n \n";
  15. string nick;
  16. string answer;
  17.  
  18. string convertInt(int number)
  19. {
  20. if (number == 0)
  21. return "0";
  22. string temp="";
  23. string returnvalue="";
  24. while (number>0)
  25. {
  26. temp+=number%10+48;
  27. number/=10;
  28. }
  29. for (int i=0;i<temp.length();i++)
  30. returnvalue+=temp[temp.length()-i-1];
  31. return returnvalue;
  32. }
  33.  
  34. int imie()
  35. {
  36. if(pow != "")
  37. {
  38.  
  39. cout << "Wpisz swoj nick: ";
  40. cin >> nick;
  41. cout << "Witaj, " << nick << " oto pierwsze pytanie \n \n \n";
  42.  
  43. }
  44. }
  45.  
  46. int main()
  47. {
  48.  
  49. cout << pow;
  50.  
  51. imie();
  52.  
  53. pow = "";
  54.  
  55. q[0][0] = "Co zrobi zuzia, gdy nie bedzie jej taty ? \n 1. Rozplacze sie \n 2. Zasnie \n";
  56. q[0][1] = "1";
  57.  
  58. q[1][0]= "Co Ala robi najczesciej na swoim laptopie ? \n 1. Siedzi na nk.pl \n 2. Gra w Pet Party \n 3. Wszystkie odpowiedzi sa prawidlowe \n";
  59. q[1][1] = "3";
  60.  
  61. q[2][0] = "Jaka jest ulubiona gra Kacpra ? \n 1. Counter-Strike \n 2. Half-Life \n 3. Minecraft \n 4. Metin2 \n";
  62. q[2][1] = "4";
  63.  
  64. q[3][0]= "Co teraz robisz? \n 1. Siedze i czytam quiza \n 2. Nic nie robie \n 3. Wysilam mozgownice \n 4. Nudze sie \n 5. Robie wszystko naraz \n";
  65. q[3][1] = "3";
  66.  
  67. cout << q[nr][0];
  68. cout << "ODPOWIEDZ: ";
  69. cin >> answer;
  70.  
  71. string ca = q[nr][1];
  72. if(answer == ca)
  73. {
  74.  
  75. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  76.  
  77. cout << "\n Poprawna odpowiedz! \n \n";
  78. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
  79. FOREGROUND_INTENSITY | FOREGROUND_RED |
  80. FOREGROUND_GREEN | FOREGROUND_BLUE);
  81.  
  82. good++;
  83. }
  84. else
  85. {
  86. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
  87. cout << "\n Bledna odpowiedz! \n \n";
  88. bad++;
  89.  
  90. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
  91. FOREGROUND_INTENSITY | FOREGROUND_RED |
  92. FOREGROUND_GREEN | FOREGROUND_BLUE);
  93.  
  94. }
  95. nr = nr+ 1;
  96.  
  97. cout <<endl;
  98.  
  99.  
  100.  
  101. if((q[nr][0]) == "")
  102. {
  103. system("cls");
  104.  
  105. //not
  106.  
  107. if(good > bad)
  108. {
  109. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  110. cout << "Gratulacje, zdales test ! \n Zapisze twoj wynik na stronie internetowej";
  111. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
  112.  
  113. string dane;
  114.  
  115. dane = "nick=";
  116. dane +=nick;
  117. dane +="&good=";
  118. dane += convertInt(good);
  119. dane +="&bad=";
  120. dane += convertInt(bad);
  121.  
  122. CURL *curl;
  123. CURLcode res;
  124.  
  125. curl = curl_easy_init();
  126.  
  127. if(curl) {
  128. curl_easy_setopt(curl, CURLOPT_URL, "http://znajomek.unixstorm.org/quiz/index.php");
  129. curl_easy_setopt(curl, CURLOPT_POST, 1);
  130. curl_easy_setopt(curl, CURLOPT_POSTFIELDS, dane.c_str());
  131. res = curl_easy_perform(curl);
  132. curl_easy_cleanup(curl);
  133. } else { cout << "Blad zapisywania wyniku!";}
  134.  
  135. }
  136. else
  137. {
  138.  
  139. cout << "Przykro mi, oblales test;( \n Twoj ranking nie zostal zapisany";
  140. }
  141.  
  142. cout << "\n\n Poprawnych: " << good << "\n Blednych: " << bad << "\n\n\n";
  143. system("PAUSE");
  144. return 0;
  145.  
  146. end = 1;
  147. }
  148.  
  149.  
  150. if(end == 0)
  151. {
  152. main();
  153. }
  154.  
  155. }

toaspzoo
Dzięki, działa

Do zamknięcia
Fifi209
Nic do zamknięcia, mimo że znam troszkę c++ pierwszy raz widzę coś takiego bez pętli, jak one się wyświetlają bez pętli?
toaspzoo
Co się wyświetla bez pętli ?
Na razie są zapisywane tylko w bazie

Twoje wyniki wink.gif
Fifi209
Patrz, masz kod:
  1. cout << q[nr][0];
  2. cout << "ODPOWIEDZ: ";
  3. cin >> answer;


Który występuje tylko RAZ i nie jest w pętli, więc jakim prawem wyświetlają się wszystkie pytania? tongue.gif Wybacz ale nie kumam zbytnio.

@edit
Dobra zrozumiałem, wieczorem poprawie Ci kod bo odpalanie ciągle main() nie wygląda ładnie smile.gif
rzymek01
hehe
1. kod jest nieczytelny
2. rekurencja nie jest najlepszym sposobem pętli
3. rekurencja odkłada na stosie zmienne, także już przy niewielkiej liczbie pytań program by Ci się wysypał
toaspzoo
  1. cout << q[nr][0];

Bo zmienna nr się inkrementuje z każdym pytaniem wink.gif
nasty
Panowie.... Pisząc kod natywny w C/C++ nie starajcie się przenosić myślenia z PHP do niego.
toaspzoo
A kto twoim zdaniem przenosi ? ""
rzymek01
Cytat(nasty @ 22.07.2011, 15:07:32 ) *
Pisząc kod natywny w C/C++ nie starajcie się przenosić myślenia z PHP do niego.

Ale myślenie z C/C++ już można przenosić, jednak często w PHP jest to nieadekwatne smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.