Misiek690 Opublikowano 14 Kwietnia 2005 Zgłoś Opublikowano 14 Kwietnia 2005 (edytowane) Mam problem z programem w c++, który ma umożliwiać przechowywanie informacji o towarach w magazynie. Program ten powinien posiadać menu: 1. wprowadzanie danych, 2. wyświetlanie danych, 3. obliczenie wartości, 4. koniec pracy. program powinien umożliwić wybranie ilości wprowadzanych elementów oraz wyświetlanych elementów. Wybranie opcji obliczanie wartości powinno wywoływać metodę oblicz(float kwota) obliczającą i oddającą do programu sumę cen wszystkich wprowadzonych elementów. Menu programu powinno powtarzać się aż do wybrania opcji koniec pracy. #include<iostream.h> #include<stdio.h> #include<conio.h> class towar{ public: char nazwa[64]; float cena; int ilosc, i, ile; void wpisz(); float oblicz(float kwota); void wyswietl(); void wyswietl_menu();};void towar::wpisz(){ cout<<"\nPodaj nazwe towaru"; cin>>nazwa; cout<<"\nPodaj cene twaru"; cin>>cena; cout<<"\nPodaj ilosc towaru"; cin>>ilosc;};float towar::oblicz(float kwota){ cout<<"\nWartosc towarow wynosi"; kwota=cena*ilosc; return (kwota);}void towar::wyswietl(){ cout<<"\nNazwa towaru"; cout<<nazwa; cout<<"\nIlosc"; cout<<ilosc; cout<<"\nCena"; cout<<cena;}void wyswietl_menu(){ cout<<"\n1. Wprowadzanie danych"; cout<<"\n2. Wyświetlanie danych"; cout<<"\n3. Obliczanie wartości towarów"; cout<<"\n4. Koniec programu"; cout<<"\nWybierz numer opcji";}int main() { int i,ile; towar tow[100]; char menu; wyswietl_menu(); cin>>menu; if(menu=='1') { cout<<"\nWpisz ilosc pozycji"; cin>>ile; while(i<ile) tow[i].wpisz(); } if(menu=='3') { cout<<"\nWartosc towarow wynosi"; towar::oblicz; } if(menu=='2') { cout<<"\nIle pozycji chcesz wyswietlic"; cin>>ile; while(i<ile) tow[i].wyswietl(); } if(menu=='4') getch(); return 0;} // Używaj tagów // ParanoiK Program przechodzi kompilację, po uruchomieniu wyświetla menu i pozwala wybrać opcję ale gdy chcę wprowadzić np. dla ilu pozycji chcę wprowadzać dane to zamiast pod zmienna "ile" podstawia to co wpiszę pod zmienną "menu" i wybiera inną opcję z menu a później "wyskakuje" z programu :( czy ktoś mógłby zmodyfikować ten kod źródłowy żeby program działał dobrze ?? Z góry dziękuję za pomoc. Edytowane 14 Kwietnia 2005 przez ParanoiK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Haze Opublikowano 15 Kwietnia 2005 Zgłoś Opublikowano 15 Kwietnia 2005 O ile dobrze widzę to w pierwszym warunku w main() używasz niezainicjowanej zmiennej "i". Przed if (menu==1) powinieneś zainicjować "i", a potem zwiększać je w tej pętli while ... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Contrast Opublikowano 15 Kwietnia 2005 Zgłoś Opublikowano 15 Kwietnia 2005 (edytowane) Coś tutaj sknociłeś nie da się ukryc ale co?? Napewno menu , funkcja wyświetl menu powinna zawierać jakąś pętle nie prawdasz?? i w dobrym stylu wywoływać inne funkcje przez Switch i case??? proste menu: for(;;){if(!run)break;zapelnijTab(ptr);drukuj(ptr);wyborstrony(ptr,ptr1,ptr2);drukuj(ptr);go: cout<<"powtorzyc?\n(TAK-T)\n(NIE - N)\n";//nie chciało mi się już chrzanić z usówaniem gotocin>>jak;switch(jak){case 't':run = true;break;case 'n' :run = false;break;default : cout<<"podales nie wlasciwa litere \n";goto go;break;//nie chciało mi się już chrzanić z usówaniem goto}}Jest to przykład prostego zapytania w formie cyklicznego menu , jak podasz "t" to pętla for będzie dalej się kręcić , jeżeli podasz n , wyyjdziesz z pętli , a jak podasz coś innego , to instrukcją goto(wiem że to zły zwyczaj) wrucisz do wczytywania ponoownie wyboru Edytowane 15 Kwietnia 2005 przez Contrast Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 15 Kwietnia 2005 Zgłoś Opublikowano 15 Kwietnia 2005 Nie da sie ukryć Misiek że namieszałeś. Ja bym to zrobił tak. Napisane w C++Builder aby działo w DevC++ wystarczy skomentować jedno clrscr(). Ale wtedy będzie rolować a nie czyścić ekran... #include <iostream>#include <cstdio>#include <conio.h>using namespace std;//------------------------------------------------------------------------------class towar{ char nazwa[64]; float cena; int ilosc , i, ile; static int ilosc_w_magazynie, ilosc_rodzajow; static float calkowity_koszt;public: void wpisz(); static void oblicz(); void wyswietl(); void wyswietl_menu();};//------------------------------------------------------------------------------void towar::wpisz(){ cout << "Podaj nazwe towaru - "; cin >> nazwa; cout << "Podaj cene twaru - "; cin >> cena; cout << "Podaj ilosc towaru - "; cin >> ilosc; cout << endl; calkowity_koszt = ilosc*cena+calkowity_koszt; ilosc_rodzajow++; ilosc_w_magazynie += ilosc;};void towar::oblicz(){ cout << "\nIlosc pozycji : " << ilosc_rodzajow << "\nIlosc towarow : " << ilosc_w_magazynie << "\nCalkowity koszt : " << calkowity_koszt << endl; getch();}void towar::wyswietl(){ cout << "\n| Nazwa towaru : " << nazwa << "\t| Cena : " << cena << "\t| Ilosc : " << ilosc << "\t|" ;}void wyswietl_menu(){ cout << "\n1. Wprowadzanie danych" << "\n2. Wyswietlanie danych" << "\n3. Obliczanie wartosci towarow" << "\n4. Koniec programu" << "\nWybierz numer opcji - ";}//------------------------------------------------------------------------------float towar::calkowity_koszt; // obiekty statyczne klasyint towar::ilosc_w_magazynie; // aby byly znane globalnieint towar::ilosc_rodzajow; ////------------------------------------------------------------------------------int main(){ int i= 0,ile = 0 ,j = 0 , menu; towar tow[100]; do { clrscr(); //to wykasować aby program działal na devc++ wyswietl_menu(); cin>>menu; if(menu==1) { cout << "\n\nWpisz ilosc pozycji - "; cin >> ile; int war; // tu taka sztczka aby for(war = i; war < ile+i; war++) tow[war].wpisz(); // dopis. do konca tablicy i = war; // obiektów a nie od poczatku } else if(menu==3) { cout << "\n\nZestawienie magazynu : \n" ; towar::oblicz(); } else if(menu==2) { cout << "\nIle pozycji chcesz wyswietlic - "; cin >> ile; while(ile > j) tow[j++].wyswietl(); j = 0; cout << endl ; towar::oblicz(); } else break; } while(1); return 0;}//------------------------------------------------------------------------------ Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...