invisiblekid Temat założony przez niniejszego użytkownika |
Moja głupia funkcja » 2008-08-04 19:31:20 Napisałem program o dość głupiej tematyce, ale nawet taki głupi program nie chce mi zadziałać. Dlatego potrzebuje pomocy przy tej funkcji, która się nie kompiluje: void Dyscyplina( bool & pomoc, string & sport ) { cout << "Podaj dyscypline: "; cin >> sport; if( sport == "koszykowka" ) { cout << "Tak, to jest koszykowka." << endl; pomoc = true; } else cout << "Nie, to nie jest " << sport << "." << endl; return; } Podczas kompilacji pojawia się błąd, że zdefiniowałem za mało argumentów. Za bardzo tego nie rozumiem pomieważ wydaje mi się, iż zdefiniowałem wszytko czego używam w tej funkcj. BTW: Mam jeszcze teoretyczne pytanko czy w parametrach tej funkcji przy zmiennej "sport" potrzebuje ten znaczek "&", czy tylko dodałem go przez swoją nadgorliwość? TIA. |
|
jimmye |
» 2008-08-04 19:48:50 Proponuję takie rozwiązanie: #include <iostream> #include <conio.h> #include <string> using namespace std;
int main() { int dyscyplina; string sport; string pomoc; cout << "Podaj dyscypline: "; cin >> sport; if( sport == "koszykowka" ) { cout << "Tak, to jest koszykowka." << endl; pomoc = true; } else cout << "Nie, to nie jest " << sport << "." << endl; getch(); return( 0 ); } U Ciebie zamiast return(0); było return; i juz masz 1 błąd. Naucz się rozpoznawać błędy, ktore wskazuje ci kompilator. Przejżyj mój kod i zobacz co zrobiłeś źle. |
|
invisiblekid Temat założony przez niniejszego użytkownika |
» 2008-08-04 20:14:45 Nie za bardzo o to mi chodziło. W całym programie funkcję main mam inną, chodziło mi o to, że to co cytowałem nie działa jako odrębna funkcja. Ale dzięki za chęć pomocy :D A tak poza tym raczej umiem rozpoznawać komunikaty (może nie wszystkie, ale po angielsku rozumiem i głupi nie jestem- przynajmniej tak myślę :P) BTW: zmienna "pomoc" ma mieć charakter logiczny, a nie słowny (czy whateva jaki) |
|
DejaVu |
» 2008-08-04 21:05:50 Wklej cały kod - moim zdaniem na początku programu nie masz napisanego: void Dyscyplina( bool & pomoc, string & sport ); Tylko jakąś inną linijkę, której nie zmodyfikowałeś później dodając parametr. Z tego co wkleiłeś nic nie wywnioskujemy bo wygląda na to że składniowo funkcja jest napisana poprawnie. /edit: Poniższy przykład mi działa: #include <iostream> #include <conio.h> using namespace std;
void Dyscyplina( bool & pomoc, string & sport );
int main() { bool tPomoc; string tSport; Dyscyplina( tPomoc, tSport ); getch(); return 0; }
void Dyscyplina( bool & pomoc, string & sport ) { cout << "Podaj dyscypline: "; cin >> sport; if( sport == "koszykowka" ) { cout << "Tak, to jest koszykowka." << endl; pomoc = true; } else cout << "Nie, to nie jest " << sport << "." << endl; return; }
|
|
invisiblekid Temat założony przez niniejszego użytkownika |
» 2008-08-05 14:23:56 Ok, ten błąd mi się wyjaśnił (zapomniałem dodać parametry do funkcji wewnątrz kodu- moja głupota jednak nie zna granic), ale mam inny problem: funkcja się kompiluje ale nie wyświetla się okno programu gdy włączam uruchom :(. Zamieszczam kod programu (jest nieskończenie głupi, a w dodatku trochę zrzynałem z kursu- lekcji o strukturach- ale jak widać nie umiem nawet zrzynać): #include <iostream> #include <conio.h> #include "materialy/console.ddt"
using namespace std; using namespace ddt::console;
void WyswietlKomunikaty() { gotoxy( 1, 25 ); cout << "Aby komtynuowac wcisnij dowolny klawisz "; cout << "[ESC] Wyjscie "; return; } void Dyscyplina( bool & pomoc, string & sport ) { cout << "Podaj dyscypline: "; cin >> sport; if( sport == "koszykowka" ) { cout << "Tak, to jest koszykowka." << endl; pomoc = true; } else cout << "Nie, to nie jest" << sport << "." << endl; return; }
int main() { string sport; bool koniec = false; bool pomoc = false; while( koniec != false ) { clrscr(); textcolor( 12 ); cout << "Witaj. Twoim zadaniem jest zgadniecie ulubionego sportowca autora tego programu." << endl; if( pomoc = true ) cout << "Dyscyplina: " << sport << endl; cout << "Podaj sportowca: " << endl; string nazwa; cin >> nazwa; cin.ignore(); if( nazwa == "Bryant" ) { cout << "Tak, moim ulubionym sportowcem tez jest Kobe" << endl; } else { if( nazwa == "Malysz" ) { cout << "Nie to nie Adam, to tez nie ta dyscyplina sportu." << endl; if( pomoc != true ) Dyscyplina( pomoc, sport ); } else { if( nazwa == "Kubica" ) { cout << "Nie to nie Robert, choc jego tez lubie." << endl; if( pomoc != true ) Dyscyplina( pomoc, sport ); } else { cout << "Nie trafiles w mojego ulubionego sportowca" << endl; if( pomoc != true ) Dyscyplina( pomoc, sport ); WyswietlKomunikaty(); } } } unsigned char znak = getch(); switch( znak ) { case 27: koniec = true; break; } } return( 0 ); } Jakbyście mi mogli powiedzieć co robię źle, byłbym wdzięczny. Mam wrażenie, że to coś z funkcją getch(), ale nie wiem jak sobie z tym poradzić. |
|
DejaVu |
» 2008-08-05 18:08:58 Hm... konsola wogóle Ci się nie wyświetla? Zapewne masz utworzony projekt. Prawy klawisz na projekcie/ properties i tam powinno być wybrane zamiast GUI to Console (czy coś takiego) => z pamięci piszę więc nazwy mogą być trochę inne. Niemniej jednak tam jest lista z czterema pozycjami i jedna z nich to Console, którą powinieneś zaznaczyć. |
|
invisiblekid Temat założony przez niniejszego użytkownika |
» 2008-08-05 21:13:24 Tylko, że ja nie tworzyłem żadnego projektu, wiec nie wiem co zmieniać. A czy panu ten program działa? |
|
DejaVu |
» 2008-08-05 22:54:39 Popraw warunek pętli while na: while( koniec == false ) |
|
« 1 » 2 |