fafa16 utworzono 26 lutego 2018 utworzono 26 lutego 2018 Witam, piszę program do obsługi pubu (stoły, klienci, produkty itp...) . Oto menu główne: void menu(string nick) { char scegli; cout << "Benvenuta " << nick << endl; cout << "1. Apri conto" << endl; cout << "2. Attuali" << endl; cout << "3. Chiusura fiscale" << endl; cout << "Scegli:"; cin >> scegli; switch (scegli) { case '1': apriConto(); case '2': attuali(); } } no i mam następnie dwie funkcje. jedną otwieramy nowy rachunek a drugą sprawdzamy aktualne ale pojawia sie problem przy przejściu z "nowego rachunku" z powrotem do głównego menu. void apriConto() { int nrTavolo, nrPersone; char Back; cout << " Nr Tavolo: "; cin >> nrTavolo; system("CLS"); cout << "Tavolo nr:" << nrTavolo << endl; cout << "Nr Persone: "; cin >> nrPersone; fstream plik; plik.open("Tavolo.txt", ios::out | ios::app); plik << "Tavolo nr:" << nrTavolo << endl; plik << "Nr Persone: " << nrPersone << endl; plik << "----CONTO----"; plik.close(); cout << "OK \n" << "Premi 9 per tornare"; cin >> Back; if (Back==9) { menu(); } } A mianowicie: C:\Users\Fafa\Desktop\CPP\simplesystem\main.cpp|34|error: 'menu' was not declared in this scope|
pestka12 komentarz 26 lutego 2018 komentarz 26 lutego 2018 Witam. Czy można zobaczyć cały program bo wtedy go przeanalizuje ? i mam pytanie to są funkcje lokalne czy globalne ? oraz zauważ że argumentem funkcji jest string a ty wywołujesz funkcje bez argumentu string jak coś spróbuj z argumentem domniemany czyli np string nick="klient" i powinno działać jak coś to proszę o odpisanie.
fafa16 komentarz 26 lutego 2018 Autor komentarz 26 lutego 2018 #include <iostream> #include <fstream> #include <windows.h> #include <cstdlib> using namespace std; void attuali() { int nrTavolo, nrPersone; fstream plik; plik.open("Tavolo.txt", ios::in); if (plik.good()==false) { cout << "Niente da visualizzare"; exit(0); } int linia; plik.close(); cout << "Tavolo nr:" << nrTavolo << endl; cout << "Nr Persone: " << nrPersone << endl; cout << "----CONTO----"; } void apriConto() { int nrTavolo, nrPersone; char Back; cout << " Nr Tavolo: "; cin >> nrTavolo; system("CLS"); cout << "Tavolo nr:" << nrTavolo << endl; cout << "Nr Persone: "; cin >> nrPersone; fstream plik; plik.open("Tavolo.txt", ios::out | ios::app); plik << "Tavolo nr:" << nrTavolo << endl; plik << "Nr Persone: " << nrPersone << endl; plik << "----CONTO----"; plik.close(); cout << "OK \n" << "Premi 9 per tornare"; cin >> Back; if (Back==9) { menu(string nick) } } void menu(string nick) { char scegli; cout << "Benvenuta " << nick << endl; cout << "1. Apri conto" << endl; cout << "2. Attuali" << endl; cout << "3. Chiusura fiscale" << endl; cout << "Scegli:"; cin >> scegli; switch (scegli) { case '1': apriConto(); case '2': attuali(); } } void login() { string nick, pass; cout << "Nickname: "; cin >> nick; cout << "Password: "; cin >> pass; if (nick == "irena" && pass == "irenafafaz") { system("CLS"); menu(nick); } else { cout << "Nick o password sbagliata" << endl; login(); } } int main() { login(); return 0; } próbowałem dodać argumenty i to daje inny błąd. C:\Users\Fafa\Desktop\CPP\simplesystem\main.cpp|46|error: expected primary-expression before 'nick'|
pestka12 komentarz 27 lutego 2018 komentarz 27 lutego 2018 (edytowane) void apriConto() { int nrTavolo, nrPersone; char Back; cout << " Nr Tavolo: "; cin >> nrTavolo; system("CLS"); cout << "Tavolo nr:" << nrTavolo << endl; cout << "Nr Persone: "; cin >> nrPersone; fstream plik; plik.open("Tavolo.txt", ios::out | ios::app); plik << "Tavolo nr:" << nrTavolo << endl; plik << "Nr Persone: " << nrPersone << endl; plik << "----CONTO----"; plik.close(); cout << "OK \n" << "Premi 9 per tornare"; cin >> Back; if (Back==9) { menu() } } void menu(string nick="np: gość") { char scegli; cout << "Benvenuta " << nick << endl; cout << "1. Apri conto" << endl; cout << "2. Attuali" << endl; cout << "3. Chiusura fiscale" << endl; cout << "Scegli:"; cin >> scegli; switch (scegli) { case '1': apriConto(); case '2': attuali(); } } Jak coś oto mi chodziło i powinno działać teraz jak coś to napisz jeżeli nie pomogło to będziemy radzić dalej PS: Jest jeszcze jeden sposób czyli zrób zmienną globalną string nick i wtedy w miejsce wywołania menu czyli menu() wstaw menu(nick);
fafa16 komentarz 2 marca 2018 Autor komentarz 2 marca 2018 To niestety nie to. Napisałem kolejny, prosty program na podobnej zasadzie i dalej ten sam problem - wydaje mi się, że jest to kwestia "pozycji" funkcji. Czyli ta która jest napisana wyżej nie może odwoływać się do tej która jest napisana "Niżej". - to takie moje amatorskie odkrycie xD Może ktoś mi wytłumaczyć o co chodzi? Ja nowy w te klocki troche.
pestka12 komentarz 2 marca 2018 komentarz 2 marca 2018 (edytowane) #include <iostream> #include <fstream> #include <windows.h> #include <cstdlib> using namespace std; void attuali(); void apriConto(); string nick; void menu(string nick="gosc") { char scegli; cout << "Benvenuta " << nick << endl; cout << "1. Apri conto" << endl; cout << "2. Attuali" << endl; cout << "3. Chiusura fiscale" << endl; cout << "Scegli:"; cin >> scegli; switch (scegli) { case '1': apriConto(); case '2': attuali(); } } void attuali() { int nrTavolo, nrPersone; fstream plik; plik.open("Tavolo.txt", ios::in); if (plik.good()==false) { cout << "Niente da visualizzare"; exit(0); } int linia; plik.close(); cout << "Tavolo nr:" << nrTavolo << endl; cout << "Nr Persone: " << nrPersone << endl; cout << "----CONTO----"; } void apriConto() { int nrTavolo, nrPersone; char Back; cout << " Nr Tavolo: "; cin >> nrTavolo; system("CLS"); cout << "Tavolo nr:" << nrTavolo << endl; cout << "Nr Persone: "; cin >> nrPersone; fstream plik; plik.open("Tavolo.txt", ios::out | ios::app); plik << "Tavolo nr:" << nrTavolo << endl; plik << "Nr Persone: " << nrPersone << endl; plik << "----CONTO----"; plik.close(); cout << "OK \n" << "Premi 9 per tornare"; cin >> Back; if (Back==9) { menu(nick); } } void login() { string nick, pass; cout << "Nickname: "; cin >> nick; cout << "Password: "; cin >> pass; if (nick == "irena" && pass == "irenafafaz") { system("CLS"); menu(nick); } else { cout << "Nick o password sbagliata" << endl; login(); } } int main() { login(); return 0; } Oto działający kod i na początku nie dostrzegłem jednego błędu ale porządnie przeanalizowałem ten kod i dostrzegłem jeden błąd i go poprawiłem.Oto działający kod PS:Widać że jesteś nowy w te klocki jak coś to pisz jeżeli będziesz miał jeszcze z czymś problem bo ja też się uczę C++ obecnie jestem w 2 tomie Jerzego Grębosza więc trochę już umiem 1
fafa16 komentarz 2 marca 2018 Autor komentarz 2 marca 2018 Dzięki, aż wstyd mi jaki amatorski błąd. Nie zadeklarowana funckcja. Dzięki
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.