logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zastosowanie pętli? Co zrobić żeby program się nie wyłączał?

ErYcK1111 28 Lis 2008 20:36 3799 7
REKLAMA
  • #1 5794802
    ErYcK1111
    Poziom 10  
    Posty: 27
    Witam napisałem sobie w c++ taki program

    #include <iostream>
    #include <conio.h>
    using namespace std;
    
    int dzialanie(int a,int b,int dzial);
    
    int main(){
    int a,b;
    int dzial;
    cout <<endl<<" Podaj 1 liczbe i 2 liczbe:"<<endl;
    cin>>a;
    cin>>b;
    cout<<"wybierz dzialanie:"<<endl;
    cout<< "1 dodawanie" <<endl;
    cout<< "2 odejmowanie" <<endl;
    cout<< "3 mnozenie" <<endl;
    cout<< "4 dzielenie" <<endl;
    cin>>dzial;
    cout<<"Wynik jest rowny "<<endl;
    cout<<dzialanie(a,b,dzial)<<endl;
    system("PAUSE");
    return 0;
    }
    
    int dzialanie(int a,int b,int dzial){
    int wynik;
    switch(dzial){
    	case 1 :
    	wynik=a+b;
    	break;
    
    	case 2 :
    	wynik=a-b;
    	break;
    
    	case 3 :
    	wynik=a*b;
    	break;
    
    	case 4 :
    	wynik=a/b;
    	break;
    }
    return wynik;
    }
    

    Chodzi o to ze jak napisze te 2 liczby potem kaze mu dzielic itp i potem sie automatycznie zamyka i nie wiem co zastosowac pętle for????? proszeo szybka oppowiedz:arrow:
  • REKLAMA
  • #2 5794872
    Dawid.wielun
    Poziom 20  
    Posty: 464
    Pomógł: 10
    Ocena: 13
    Ale co ty chcesz zrobić wrócić do menu? No to zamiast
    system("PAUSE");
    return 0; 

    Wpisz:
    return main();


    Pod:
    cout<< "4 dzielenie" <<endl;

    Dodaj:
    cout<< "0 wyjscie" <<endl;


    Pod:

    Dodaj:
    if(!dzial) return 0;


    Nie sprawdzane, pisane dla koncepcji choć powinno być ok.
  • REKLAMA
  • #3 5796285
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Zdecydowanie nie polecam w funkcji main tworzenia rekurencji, gdyż doprowadzi się do przepełnienia stosu! Należy całą zawartość funkcji umieścić w ciele pętli (może być to pętla nieskończona, której opuszczenie będzie tak, jak zaproponował poprzednik).
  • #4 5801497
    ErYcK1111
    Poziom 10  
    Posty: 27
    Dzienki Dawid.wielun
    Działa to co napiszałeś w poscie
  • REKLAMA
  • #6 5802562
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    Co za bzdury... Nie dość, że main() z nieprawidłowym prototypem, to jeszcze sugestia rekurencyjnego wywołania main()? Przecież main nie musi nawet być funkcją, zależy to tylko i wyłącznie od kompilatora/systemu.

    Autorowi wątku sugeruję zapoznanie się z konstrukcją programistyczną zwaną pętlą :]

    Pozdrawiam,
    Dr.Vee
  • Pomocny post
    #7 5802745
    Dawid.wielun
    Poziom 20  
    Posty: 464
    Pomógł: 10
    Ocena: 13
    ErYcK1111 napisał:
    Dzienki Dawid.wielun
    Działa to co napiszałeś w poscie

    Spoko dzięki za punkty choć jest jeszcze opcja pomógł... :)
    Skoro działa to na pewno będzie ok ponieważ pisałem setki razy podobne programy na takim sposobie i było ok więc na pewno nie będzie problemów :)
  • REKLAMA
  • Pomocny post
    #8 5802849
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Równie dobrze można setki razy pisać "zabiję KAczyńskiego" i też bedzie dobrze... do czasu...

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemu utrzymania działania programu w C++ bez jego automatycznego zamykania po wykonaniu operacji. Zaproponowano rozwiązanie polegające na rekurencyjnym wywołaniu funkcji main() zamiast użycia system("PAUSE") i return 0, co pozwala na powrót do menu wyboru działań. Jednakże zwrócono uwagę, że rekurencja w main() jest niezalecana ze względu na ryzyko przepełnienia stosu. Zalecane jest zastosowanie pętli (np. nieskończonej) obejmującej całą logikę programu, z możliwością wyjścia z niej na podstawie warunku (np. wybranie opcji 0 - wyjście). Wskazano, że pętla jest standardową konstrukcją programistyczną do utrzymania programu w działaniu i uniknięcia problemów z pamięcią. Dyskusja podkreśla znaczenie poprawnej struktury programu i unikania nieprawidłowych prototypów funkcji main().
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA