C++ i trzy pętle z błędami

0

Chcę zrobić program, który sprawdza, czy podana przez użytkownika liczba jest dodatnia, ujemna czy równa „0”. Aplikacja ma powtarzać pytanie tak długo, aż użytkownik wpisze „0”. W programie ma być menu gdzie z możliwością wyboru petli, z której będzie korzystał program: while, do while i for.
Do tej pory udało mi się zrobić coś takiego, ale daleh wywala błedy.

#include <iostream>
#include <conio.h>

void jaka_licz(int liczba);
void pewhile(int menu);
void pedowhile(int menu);
void pefor(int menu);
    int menu;
    int liczba =1;
using namespace std;

/*-------------------------MAIN---------------------------------------*/
int main()
{

    
    do
    {
        cout << "MENU\n###########################################\n"
        << "1 dla while\n"
        << "2 dla do... while"
        << "3 dla for\n"
        << "0 aby zakonczyc\n#################################################\n";
        cin >> menu;
        
               switch (menu)
                {
                    case 1: pewhile(liczba);
                    break;
                    case 2: pedowhile(liczba);
                    break;
                    case 3: pefor(liczba);
                    break;
                    case 0: 
                         {
                         system("cls");
			             cout << "Konczenie pracy programu.\n";
			             getch();
			             break;
                         }
                   default:
				   		   cout << "podaj 1,2.3!";
                }
    }
    while (menu == 0);
    return 0;
    
}

/*----------------------------------------------------------------------------*/
void jaka_licz(int liczba)   
{
     while (liczba == 0)
     {
           cout << "Wybrales liczbe 0 !"; 
           break;
     }
     
     while (liczba > 0)
     {
           cout << "Wybrales liczbe dodatnia !";
           break;
     }    
     
     while (liczba < 0 )
     {
           cout << "Wybrales liczbe ujemna !";
           break;
     }
     getch();
}       

void pewhile(int menu)
{
       cout<<"Petla while"<<endl;
        while(menu!=0)
          {
           cout<<"wcisnij 0 aby wyjsc"<<endl;
           cin>>liczba;
           jaka_licz();
          }
       } 

void pedowhile(int liczba)
{        
     cout<<"Petla do..while"<<endl;    
     do
     {
        cout<<"wcisnij 0 aby wyjsc"<<endl;
           cin>>liczba;
           jaka_licz();
           }     
        while(menu!=0);
        }
}

void pefor(int liczba)
{  
     for(;menu!=0;)
     {
         cout<<"wcisnij 0 aby wyjsc"<<endl;
           cin>>liczba;
           jaka_licz();
           }                  
}    
    
    
    
 
0

rozwiązanie tego programu na pętlach while, do..while, for jest zupełną stratą czasu ponieważ można to zapisać szybciej, lepiej i łatwiej używając ifów i 1 pętli.
Po 2. podaj błędy jakie Ci wywala, bo jasnowidzem nie jestem.

Poza tym czemu stawiasz zmienne globalne ?

0

Oh my god !

#include <iostream>
#include <conio.h>
 
void jaka_licz(int liczba);
void pewhile(int menu);
void pedowhile(int menu);
void pefor(int menu);
    int menu;
    int liczba =1;
using namespace std;
 
/*-------------------------MAIN---------------------------------------*/
int main()
{
 
 
    do
    {
        cout << "MENU\n###########################################\n"
        << "1 dla while\n"
        << "2 dla do... while"
        << "3 dla for\n"
        << "0 aby zakonczyc\n#################################################\n";
        cin >> menu;
 
               switch (menu)
                {
                    case 1: pewhile(liczba);
                    break;
                    case 2: pedowhile(liczba);
                    break;
                    case 3: pefor(liczba);
                    break;
                    case 0: 
                         {
                         system("cls");
                                     cout << "Konczenie pracy programu.\n";
                                     getch();
                                     break;
                         }
                   default:
                                                      cout << "podaj 1,2,3!";
                }
    }
    while (menu == 0);
    return 0;
 
}
 
/*----------------------------------------------------------------------------*/
void jaka_licz(int liczba)   
{
     while (liczba == 0) // Co za while, daj if'a !
     {
           cout << "Wybrales liczbe 0 !"; 
           break;
     }
 
     while (liczba > 0) // Co za while, daj if'a !
     {
           cout << "Wybrales liczbe dodatnia !";
           break;
     }    
 
     while (liczba < 0 ) // Co za while, daj if'a !
     {
           cout << "Wybrales liczbe ujemna !";
           break;
     }
     getch();
}       
 
void pewhile(int menu)
{
       cout<<"Petla while"<<endl;
        while(menu!=0) // Dlaczego MENU, a nie "liczba" ?
          {
           cout<<"wcisnij 0 aby wyjsc"<<endl;
           cin>>liczba;
           jaka_licz();
          }
       } 
 
void pedowhile(int liczba)
{        
     cout<<"Petla do..while"<<endl;    
     do
     {
        cout<<"wcisnij 0 aby wyjsc"<<endl;
           cin>>liczba;
           jaka_licz();
           }  
        while(menu!=0); // Dlaczego MENU, a nie "liczba" ?
        }
}
 
void pefor(int liczba)
{  
     for(;menu!=0;) // Po co średniki ? już nie mówiąc, że tak nie wywołuje się pętli for... Ręce opadają...
     {
         cout<<"wcisnij 0 aby wyjsc"<<endl;
           cin>>liczba;
           jaka_licz();
           }                  
}   

Przeanalizuj ten kod od początku...
Przeczytaj od nowa podstawy....
Poczytaj o if'ach...
A potem dawaj kod...

@up:
Byłeś 2 minuty szybszy ;-)

0

Troche pozmieniałem na takie coś:

#include <iostream>
#include <conio.h>

void jaka_licz(int);
void pewhile(int);
void pedowhile(int);
void pefor(int);

using namespace std;

/*-------------------------MAIN---------------------------------------*/
int main()
{
    int menu;
    int liczba =1;

    do
    {
        cout << "MENU\n###########################################\n"
        << "1 dla while\n"
        << "2 dla do... while"
        << "3 dla for\n"
        << "0 aby zakonczyc\n#################################################\n";
        cin >> menu;
        switch (menu)
        {
         case 1: pewhile();
         break;
         case 2: pedowhile();
         break;
         case 3: pefor();
         break;
         case 0: 
         {
           system("cls");
	       cout << "Konczenie pracy programu.\n";
		   getch();
		   break;
          }
     	  default:
           cout << "podaj 1,2.3!";
         }
    }
    while (menu == 0);
    return 0;
    
}

/*----------------------------------------------------------------------------*/
void jaka_licz(int)   
{
 	 int liczba;
     if (liczba == 0)
     {
           cout << "Wybrales liczbe 0 !"; 
     }
     
     if (liczba > 0)
     {
           cout << "Wybrales liczbe dodatnia !";
     }    
     
     if (liczba < 0 )
     {
           cout << "Wybrales liczbe ujemna !";
     }
     getch();
}       

void pewhile(int)
{
 	 int liczba, menu;
     cout<<"Petla while"<<endl;
     while(menu!=0)
     {
        cout<<"wcisnij 0 aby wyjsc"<<endl;
        cin>>liczba;
        jaka_licz();
      }
} 

void pedowhile(int)
{      
	 int liczba, menu;    
     cout<<"Petla do..while"<<endl;    
     do
     {
	    cout<<"wcisnij 0 aby wyjsc"<<endl;
        cin>>liczba;
        jaka_licz();
      }     
        while(menu!=0);
}

void pefor(int)
{  
   	 int liczba, menu;
     for(;menu!=0;)
     {
         cout<<"wcisnij 0 aby wyjsc"<<endl;
         cin>>liczba;
         jaka_licz();
      }                  
}    
    
    
    
 

A błędy są takie:

In function int main()': 5: error: too few arguments to function void pewhile(int)'
27: error: at this point in file
6: error: too few arguments to function void pedowhile(int)' 29: error: at this point in file 7: error: too few arguments to function void pefor(int)'
31: error: at this point in file
In function void pewhile(int)': 51: error: too few arguments to function void jaka_licz(int)'
78: error: at this point in file
In function void pedowhile(int)': 51: error: too few arguments to function void jaka_licz(int)'
90: error: at this point in file
In function void pefor(int)': 51: error: too few arguments to function void jaka_licz(int)'
102: error: at this point in file

0

Poczytaj o argumentach! Wtedy to można coś zrobić, a nie jak teraz -,-.

0

Podczas definicji funkcji musisz nazwać ich argumenty

1 użytkowników online, w tym zalogowanych: 0, gości: 1