Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Dziwne liczby c++


Rekomendowane odpowiedzi

Opublikowano

Cześć,

 

dopiero zaczynam przygodę z programowaniem.

 

Napisałem taki kod:

#include <cstdlib>

#include <iostream>

#include <stdio.h>

#include <conio.h>

#include <math.h>

using namespace std;



double Sprawdz(double a, double b, double c, double stopa, int kwota, int raty);

void Sprawdz();

void Menu();



void Menu();

int main(int argc, char *argv[])

{

 

    char znak;

    

    while(znak!=27)

    {

     Menu();

     znak=getch();

     

     switch(znak)

     {

       case '1':

             system("cls");

               cout<<"Tu bedzie info";

            getch();

            break;

       case '2':

               system("cls");

               Sprawdz();    

            getch();       

            break;

      }

     }

       

    return EXIT_SUCCESS;

}



void Menu()

{

     system("cls");

     

     cout<<"Kalkulator kredytowy\n\n";

     cout<<"1. O programie\n";

     cout<<"2. Uruchom program\n";

     cout<<"ESC. Wyjscie z programu"<<endl;

}





double Sprawdz(double a, double b, double c, double stopa, int kwota, int raty)

{            

    a=(kwota*stopa)/100;

    b=a+kwota;

    c=b/raty;   

}



void Sprawdz()

{

   int kwota, raty;

   double a, b, c, stopa;



   cout<<"Podaj kwote kredytu:\n\n";

   cin>>kwota;

   cout<<endl;

   

  if(kwota>0)

  {    

     cout<<"Podaj oprocentowanie:\n\n";

     cin>>stopa;

     cout<<endl;

   

     cout<<"Podaj ilosc rat:\n\n";

     cin>>raty;

     cout<<endl;

   

     cout<<"Rata kredytu wynosi "<<c<<" zl\n\n";

 

     cout<<"Calkowity kwota do splaty wynosi "<<b<<" zl\n\n";

 

     cout<<"Nadplata kredytu wynosi "<<a<<" zl\n\n";

   }

   else

   {

     cout << "Kwota kredytu musi byc wieksza od zera." <<endl;

   }

   

}

Kiedy odpalam mój program (druga pozycja w switchu) to po wpisaniu danych wyniki są wyświetlane za pomoca dziwych liczb:

 

8552614192903871310772.jpg

 

Jak to poprawić? ;)

 

Proszę także o ogólne sprawdzenie kodu, czy jest optymalny.

 

Opublikowano

Ni wywołujesz funkcji Sprawdź z parametrami. Zmień ja na void i o innej nazwie. Jeśli chcesz nadpisywacwartosc oryginalnych zmiennych przekazanych do funkcji musisz to robić przez referencje (poczytaj sobie)

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Wracając do tematu, wróć do podstaw... Zapomniałeś wywołać funkcje Sprawdz(...) w Sprawdz(). Jeszcze większe:
776711419291852961817.jpg
Wklej to co masz w double Sprawdz(...) przed "cout<<"Rata kredytu wynosi "<<c<<" zl\n\n";" w Sprawdz() i będzie działać.
Aaa... i nie trzymaj kwot w typach zmiennoprzecinkowych(float/double), *100 i trzymaj w int jako grosze.
I male pytanie po co dajesz dwa znaki nowej linii? O_o

Nie pomagam na PW, od tego macie forum!!!

 

#PHP-things

 

 

08FMpDu.png

 

Opublikowano

Szczerze mówiąc, to wszystko wyniosełem z zajęć na studiach ;)

 

To co piszę, to program na zaliczenie, próbowałem napisać go na podstawie tego co robiliśmy na zajęciach:

 

 

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;

// Deklaracje funkcji
double Suma(double a, double ;
double Srednia(double liczby[],int ile);
void  FunkcjeTrygonometryczne();
void MenuFT();
void Sinus();
void Cosinus();
void Dodawanie();
void Srednia();

void Menu();

int main(int argc, char *argv[])
{
 
    char znak;
    
    while(znak!=27)
    {
     Menu();
     znak=getch();
     
     switch(znak)
     {
       case '1':
            getch();
            break;
       case '2':
            Srednia();
            getch();            
            break;          
       case '3':
            FunkcjeTrygonometryczne();
            getch();
            break;
      }
     }
       
    return EXIT_SUCCESS;
}

void Menu()
{
     system("cls");
     
     cout<<"Program super kalkulator\n\n";
     cout<<"1. Suma liczb a i b\n";
     cout<<"2. Srednia ocen\n";
     cout<<"3. Funkcje trygonometryczne\n\n";
     cout<<"ESC. Wyjscie z programu"<<endl;
}


double Suma(double a, double 
{
  double wynik;
  wynik=a+b;
 
  return wynik;     
}

double Srednia(double liczby[],int ile)
{
  if(ile>0)
  {
      double wynik=0;
      for(int i=0;i<ile;i++)
      {
           wynik=liczby[i]+wynik;
      }
      
      return wynik/ile;
  }
  else
  {
      return 0;
  }
       
}

void  FunkcjeTrygonometryczne() // tutaj bedzie definicja funkcji
{
    system("cls");
    char znak;
    MenuFT();  
    znak=getch();
    if(znak=='1')
    
    {
     Sinus();
    }
    
    if(znak=='2')    
    {     
    Cosinus();
    }      
}

void MenuFT()
{
    cout <<" Funkcje Trygonometryczne\n\n" ;
    cout<<" 1.Sinus(x)\n" ;
    cout<<" 2.Cosinus(x)\n" ;
     }
void Sinus()
{
     double wynik=0,x=0;
     cout << " Podaj x: ";
     
     scanf("%lf",&x);
     wynik=sin(x);
     cout<< " Sin(" << x << " ) = " << wynik << endl ;
     
     }
void Cosinus()
{
      
}

void dodawanie()
{
     system("cls");
            cout<<"Tutaj bedziemy liczyc sume 2 liczb" << endl;
       
            cout<<"Podaj wartosci dla liczb a i b \n" << endl;
            double a,b;
            cout<<"a=" ;
            
            scanf("%lf",&a);
            cout<<"b=" ;
            
        
            scanf("%lf",&;
            
        
            cout<<"a+b= "<<Suma(a,;
}
void Srednia()
{
  system("cls");
            cout<<"Tu bedzie liczenie sredniej" << endl;
            
 
          double suma, //zmienna przechowuje sumę liczb
          liczba; //zmienna przechowuje kolejne liczby podawane z klawiatury
          unsigned int n; //zmienna odpowiedzialna za ilość liczb pdoanych z klawiatury
 
                  cout<<"Podaj z ilu liczb bedzie liczona srednia: ";
                  cin>>n; // podajemy ile bedzie liczb
 
                  cout<<endl;
 
          if(n>0) //średnią arytmetyczną można wyznaczać tylko z dodatniej ilości liczb
         {
            for(int i = 1;i<= n;i++)
            {
              cout<<"Podaj "<<i<<" liczbe: ";
              cin>>liczba;
              suma+=liczba; //lub suma = suma + liczba
            }
            cout<<"Srednia "<<n<<" liczb wynosi: "<<suma/n<<endl;
          }
          else
          {
            cout<<"Podales nieprawidłowa wartosc zmiennej n"<<endl;
           }
      
}

 

Możecie mi łopatologcznie wytłumaczyć jak mam wywołać funkcję Sprawdz(...) w Sprawdz()

 

"Wklej to co masz w double Sprawdz(...) przed "cout<<"Rata kredytu wynosi "<<c<<" zl\n\n";" w Sprawdz() i będzie działać." działa :) ale czy to będzie całkowicie poprawnie jeśli tak zostawię? tzn. to samo w funkcji Sprawdz(...) i w Sprawdz()

 

Proszę o pomoc, łopatologiczną :P

Opublikowano

1. Twoja deklaracja funkcji "Dodawanie()" nie ma ciała (ponieważ dalej napisałeś deklaracje dla funkcji "dodawanie()", a wielkość liter ma znaczenie).

2. Używaj "std::cin" i "std::cout" skoro piszesz w C++

3. Nazwy funkcji pisze się z małej litery

4. Czemu w funkcji "Dodawanie()" wywołujesz funkcję "Suma()"? Nie możesz po prostu napisać "std::cout << "a+b= " << a+b << std::endl;"?

5. Po co Ci 2 funkcje o nazwie "Srednia", nwm jak dla innych, ale wg. mnie lepiej to robić bez tablic.

6. Nie używaj "system()".

 

@Edit

Reszta wygląda nawet ok, coś Ci nie działa?

Opublikowano

1. Twoja deklaracja funkcji "Dodawanie()" nie ma ciała (ponieważ dalej napisałeś deklaracje dla funkcji "dodawanie()", a wielkość liter ma znaczenie).

2. Używaj "std::cin" i "std::cout" skoro piszesz w C++

3. Nazwy funkcji pisze się z małej litery

4. Czemu w funkcji "Dodawanie()" wywołujesz funkcję "Suma()"? Nie możesz po prostu napisać "std::cout << "a+b= " << a+b << std::endl;"?

5. Po co Ci 2 funkcje o nazwie "Srednia", nwm jak dla innych, ale wg. mnie lepiej to robić bez tablic.

6. Nie używaj "system()".

 

@Edit

Reszta wygląda nawet ok, coś Ci nie działa?

To jest program, który pisaliśmy na zajęciach ;) on działa, ale właśnie zagłębiając się nieco w kod coś nie do końca mi pasowało ;) Wiele sprzeczności.

 

Teraz piszę program na zaliczenie - ma to być kalkulator kredytowy. Wstępnie kod wyglądał jak w pierwszym poście, bo mimo wszystko sugerowałem się tym co robiliśmy na zajęciach. Nie do końca poprawnie to działało.

 

Teraz po uwzględnieniu uwag kod wygląda tak:

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;

void Kredyt();
void Menu();

void Menu();
int main(int argc, char *argv[])
{
 
    char znak;
    
    while(znak!=27)
    {
     Menu();
     znak=getch();
     
     switch(znak)
     {
       case '1':
             system("cls");
               cout<<"Tu bedzie info";
            getch();
            break;
       case '2':
               system("cls");
               Kredyt();    
            getch();       
            break;
      }
     }
       
    return EXIT_SUCCESS;
}

void Menu()
{
     system("cls");
     
     cout<<"Kalkulator kredytowy\n\n";
     cout<<"1. O programie\n";
     cout<<"2. Uruchom program\n";
     cout<<"ESC. Wyjscie z programu"<<endl;
}

void Kredyt()
{
   int kwota, raty;
   double a, b, c, stopa;

   cout<<"Podaj kwote kredytu:\n\n";
   cin>>kwota;
   cout<<endl;
   
  if(kwota>0)
  {    
     cout<<"Podaj oprocentowanie:\n\n";
     cin>>stopa;
     cout<<endl;
   
     cout<<"Podaj ilosc rat:\n\n";
     cin>>raty;
     cout<<endl;
     
     a=(kwota*stopa)/100;
     b=a+kwota;
     c=b/raty;
   
     cout<<"Rata kredytu wynosi "<<c<<" zl\n\n";
 
     cout<<"Calkowita kwota do splaty to "<<b<<" zl\n\n";
 
     cout<<"Nadplata wynosi "<<a<<" zl\n\n";
   }
   else
   {
     cout << "Kwota kredytu musi byc wieksza od zera." <<endl;
   }
   
}

Czy tak może być? Oczywiście to jest do dopieszczenia np. inne typy zmiennych jak wspomniał Vesim, no i zamierzam to nieco rozwinąć, zrobić ładne menu, podmenu itd.

 

Edit: podopisuję też "std::cin" i "std::cout" Czego natomiast mogę użyć do czyszczenia ekranu zamiast system(cls)?

Opublikowano
Czego natomiast mogę użyć do czyszczenia ekranu zamiast system(cls)

 

Jeśli rozmiar konsoli nie będzie zmieniany to wypisuje odpowiednią ilość znaków nowej linii, aby poprzedni tekst się schował.

 

Zastrzeżenia do kodu to

  • słabe formatowanie,
  • nazwy zmiennych a,b,c nic nie mówią
  • dziwny podział na funkcję. Warstwa obliczeń powinna być oddzielona od warstwy prezentującej informacje.
  • W C++ powinno się korzystać z nagłówków cstdlib, nie stdlib.h itd.
  • getch zamień używając cin.get
  • getch nie jest w standardzie (również jak samo conio.h) więc może nie działać w każdym kompilatorze.
  • nie pisz int argc, char *argv[] jeśli z tego nie korzystasz.
  • Na przyszłość. Operacje na kwotach muszą być bardzo precyzyjne, bo potem wychodzą takie kwiatki jak tu http://i.imgur.com/kduIZcq.png. Kwoty powinno się przechowywać w typach całkowitoliczbowych lub typach decimal (jeszcze nie ma w C++, ale może będzie w C++17), które bazują na systemie dziesiątkowym i mają dużą precyzję.
Opublikowano

Nie jest najgorzej.

 

 

void Menu();

void Menu();

Po co dwa razy deklarujesz funkcję Menu?

 

 

 

return EXIT_SUCCESS;

Funkcja main nie potrzebuje aby zwrócić jakąś wartość, aczkolwiek nie jest to błędem.

 

Widzę, że poszedłeś na łatwiznę i wywaliłeś funkcję. Mogła ona tak wyglądać:

void oblicz(int kwota, int stopa, int raty, int &a, int &b, int &c) {
    a=(kwota*stopa)/100;
    b=a+kwota;
    c=b/raty;
}

Gdzieś w kodzie:
//wczytanie zmiennych
int a, b, c;
oblicz(kwota, stopa, raty, a, b, c);
//wyświetlanie a, b, c

Funkcje pisz z małych liter, chyba, że składa się z dwóch członów, np. mojaFunkcja.

 

@NopeDotAvi, pozwól, że przyczepię się punktu drugiego. Czemu "cin" miałoby być mniej "C++" niż std::cin? std to tylko przestrzeń nazw, można ją pominąć ze względu na using namespace std; Na dodatek, powiedz mi: Czy COUT i CIN były w jakimś innym języku? Rozumiem jakbyś to powiedział, gdyby np. używał printf i scanf...

 

 

@do autora

Poczytaj o przekazywaniu argumentów do funkcji przez referencję, o alternatywie cout i cin z języka C, czyli scanf i printf.

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Nie jest najgorzej.

Po co dwa razy deklarujesz funkcję Menu?

 

Funkcja main nie potrzebuje aby zwrócić funkcję, aczkolwiek nie jest to błędem.

 

Widzę, że poszedłeś na łatwiznę i wywaliłeś funkcję. Mogła ona tak wyglądać:

void oblicz(int kwota, int stopa, int raty, int &a, int &b, int &c) {
    a=(kwota*stopa)/100;
    b=a+kwota;
    c=b/raty;
}

Gdzieś w kodzie:
//wczytanie zmiennych
int a, b, c;
oblicz(kwota, stopa, raty, a, b, c);
//wyświetlanie a, b, c

Funkcje pisz z małych liter, chyba, że składa się z dwóch członów, np. mojaFunkcja.

 

@NopeDotAvi, pozwól, że przyczepię się punktu drugiego. Czemu "cin" miałoby być mniej "C++" niż std::cin? std to tylko przestrzeń nazw, można ją pominąć ze względu na using namespace std; Na dodatek, powiedz mi: Czy COUT i CIN były w jakimś innym języku? Rozumiem jakbyś to powiedział, gdyby np. używał printf i scanf...

 

 

@do autora

Poczytaj o przekazywaniu argumentów do funkcji przez referencję, o alternatywie cout i cin z języka C, czyli scanf i printf.

no przeciez w swoim kodzie uzywa i "std::cout" i "scanf" to mówie by używał tego z C++, poza tym nie powinno się używać "using namespace std" globalnie.

Opublikowano

Mówimy cały czas o jego kodzie, nie o tym z uczelni. Wytłumacz mi: czemu nie powinno się używać using namespace std? Jak nie globalnie to jak inaczej? Co w ogóle rozumiesz przez "globalnie"?

 

@EDIT:

W sumie mogą w póżniejszym etapie występować konflikty.

Można zawsze:

using std::cin

using std::cout

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano
Funkcja main nie potrzebuje aby zwrócić funkcję

 

wat?

 

Funkcje pisz z małych liter, chyba, że składa się z dwóch członów, np. mojaFunkcja.

 

Nie ma jedynej słusznej konwencji nazewnictwa.

 

używanie using namespace w plikach źródłowych (tych, które nie są includowane gdzie indziej) to nic złego jeśli wiemy co robimy.

Opublikowano

Aj sopelku, z nazwą chodziło mi głównie o czytelność kodu. Nie ma nakazanego z góry sposobu nazewnictwa, ale nie oszukujmy się: łatwiej jest przeczytać - toJestMojaFunkcja, niż TOJESTMOJAFUNKCJA, albo tojestmojafunkcja.

 

Z main chodziło mi o to że nie musi zwracać wartości (nie potrzebne jest return) -> poprawione w poście, myślałem o czymś innym i co innego napisałem :D

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

wat?

 

 

Nie ma jedynej słusznej konwencji nazewnictwa.

 

używanie using namespace w plikach źródłowych (tych, które nie są includowane gdzie indziej) to nic złego jeśli wiemy co robimy.

Nie zawsze wiesz czy w przyszłości nie będziesz musiał includować

Opublikowano
Nie zawsze wiesz czy w przyszłości nie będziesz musiał includować

 

plików .cpp się nie includuje nigdy

jak tak robisz to robisz to źle

Opublikowano

Dzięki za wszystkie uwagi i podpowiedzi:)

 

Wstawiam kod po kolejnych poprawkach, jeszcze nie wszystkich:

 

 

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

void oblicz(int kwota, int stopa, int raty, int &a, int &b, int &c);
void kredyt();
void kalkulatorKredytowy();
void menuKalkulatora();
void menu();
void info();

int main()
{
 
    char znak;
    
    while(znak!=27)
    {
     menu();
     znak=getch();
     
     switch(znak)
     {
       case '1':
             system("cls");
               info();
            getch();
            break;
       case '2':
               system("cls");
               kalkulatorKredytowy();   
            getch();       
            break;
      }
     }
       
    return EXIT_SUCCESS;
}

void menu()
{
     system("cls");
     
     std::cout<<"Kalkulator Kredytowy 1.0\n\n";
     std::cout<<"1. O programie\n";
     std::cout<<"2. Uruchom program\n";
     std::cout<<"ESC. Wyjscie z programu"<<std::endl;
}

void oblicz(int kwota, int stopa, int raty, int &a, int &b, int &c)
{
    a=(kwota*stopa)/100;
    b=a+kwota;
    c=b/raty;
}

void kredyt()
{
   int kwota, raty, a, b, c, stopa;

    do
    {
     std::cout<<"Podaj kwote kredytu:\n\n";
     std::cin>>kwota;
     std::cout<<std::endl;
    }
    while (kwota<=0);

    do
    {
     std::cout<<"Podaj oprocentowanie:\n\n";
     std::cin>>stopa;
     std::cout<<std::endl;
    }    
    while (stopa<=0);
   
    do
    {   
     std::cout<<"Podaj ilosc rat:\n\n";
     std::cin>>raty;
     std::cout<<std::endl;
    }
    while (raty<=0);
     
     oblicz(kwota, stopa, raty, a, b, c);
   
     std::cout<<"Rata kredytu wynosi "<<c<<" zl\n\n";
 
     std::cout<<"Calkowita kwota do splaty to "<<b<<" zl\n\n";
 
     std::cout<<"Nadplata wynosi "<<a<<" zl\n\n";
     
     std::cout<<"Nacisnij dowolny klawisz, by powrocic do glownego MENU...";
}

void info()
{
     std::cout<<"Kalkulator Kredytowy 1.0\n\n";
     std::cout<<"Program na podstawie podanej przez uzytkownika kwoty kredytu oraz ilosci rat,\noblicza wysokosc raty kredytu, calkowita kwote do splaty oraz nadplate.\n\n";
     std::cout<<"Nacisnij dowolny klawisz, by powrocic do glownego MENU...";    
}

void menuKalkulatora()
{
    std::cout<<"Kalkulator Kredytowy 1.0\n\n";
    std::cout<<"1. Dokonaj obliczen\n";
    std::cout<<"2. Wroc do glownego MENU\n\n";
}

void kalkulatorKredytowy()
{
    system("cls");
    char znak;
    menuKalkulatora();
    znak=getch();
    if(znak=='1')
    {
     kredyt();
    }
    
    if(znak=='2')    
    {     
     menu();
    }          
}

 

Proszę o przejrzenie ;)

 

Mam też prośbę o podpowiedź co można zrobić żeby program w momencie na screenie poniżej po naciśnięciu dowolnego klawisza nie wracał do głównego menu, tylko do podemenu?

 

3d0534ad382c1111.jpg

Opublikowano

Dzięki za wszystkie uwagi i podpowiedzi:)

 

Wstawiam kod po kolejnych poprawkach, jeszcze nie wszystkich:

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

void oblicz(int kwota, int stopa, int raty, int &a, int &b, int &c);
void kredyt();
void kalkulatorKredytowy();
void menuKalkulatora();
void menu();
void info();

int main()
{
 
    char znak;
    
    while(znak!=27)
    {
     menu();
     znak=getch();
     
     switch(znak)
     {
       case '1':
             system("cls");
               info();
            getch();
            break;
       case '2':
               system("cls");
               kalkulatorKredytowy();   
            getch();       
            break;
      }
     }
       
    return EXIT_SUCCESS;
}

void menu()
{
     system("cls");
     
     std::cout<<"Kalkulator Kredytowy 1.0\n\n";
     std::cout<<"1. O programie\n";
     std::cout<<"2. Uruchom program\n";
     std::cout<<"ESC. Wyjscie z programu"<<std::endl;
}

void oblicz(int kwota, int stopa, int raty, int &a, int &b, int &c)
{
    a=(kwota*stopa)/100;
    b=a+kwota;
    c=b/raty;
}

void kredyt()
{
   int kwota, raty, a, b, c, stopa;

    do
    {
     std::cout<<"Podaj kwote kredytu:\n\n";
     std::cin>>kwota;
     std::cout<<std::endl;
    }
    while (kwota<=0);

    do
    {
     std::cout<<"Podaj oprocentowanie:\n\n";
     std::cin>>stopa;
     std::cout<<std::endl;
    }    
    while (stopa<=0);
   
    do
    {   
     std::cout<<"Podaj ilosc rat:\n\n";
     std::cin>>raty;
     std::cout<<std::endl;
    }
    while (raty<=0);
     
     oblicz(kwota, stopa, raty, a, b, c);
   
     std::cout<<"Rata kredytu wynosi "<<c<<" zl\n\n";
 
     std::cout<<"Calkowita kwota do splaty to "<<b<<" zl\n\n";
 
     std::cout<<"Nadplata wynosi "<<a<<" zl\n\n";
     
     std::cout<<"Nacisnij dowolny klawisz, by powrocic do glownego MENU...";
}

void info()
{
     std::cout<<"Kalkulator Kredytowy 1.0\n\n";
     std::cout<<"Program na podstawie podanej przez uzytkownika kwoty kredytu oraz ilosci rat,\noblicza wysokosc raty kredytu, calkowita kwote do splaty oraz nadplate.\n\n";
     std::cout<<"Nacisnij dowolny klawisz, by powrocic do glownego MENU...";    
}

void menuKalkulatora()
{
    std::cout<<"Kalkulator Kredytowy 1.0\n\n";
    std::cout<<"1. Dokonaj obliczen\n";
    std::cout<<"2. Wroc do glownego MENU\n\n";
}

void kalkulatorKredytowy()
{
    system("cls");
    char znak;
    menuKalkulatora();
    znak=getch();
    if(znak=='1')
    {
     kredyt();
    }
    
    if(znak=='2')    
    {     
     menu();
    }          
}

Proszę o przejrzenie ;)

 

Mam też prośbę o podpowiedź co można zrobić żeby program w momencie na screenie poniżej po naciśnięciu dowolnego klawisza nie wracał do głównego menu, tylko do podemenu?

 

4977714193575911310772.jpg

Owe "podmenu" to funkcja kalkulatorKredytowy jak mniemam 8S .

Dopisz:

     system("pause");
     kalkulatorKredytowy();

Całość:

void kredyt()
{
    int kwota, raty, a, b, c, stopa;
    do
    {
        std::cout<<"Podaj kwote kredytu:\n\n";
        std::cin>>kwota;
        std::cout<<std::endl;
    }
    while (kwota<=0);
    do
    {
        std::cout<<"Podaj oprocentowanie:\n\n";
        std::cin>>stopa;
        std::cout<<std::endl;
    }
    while (stopa<=0);
    do
    {
        std::cout<<"Podaj ilosc rat:\n\n";
        std::cin>>raty;
        std::cout<<std::endl;
    }
    while (raty<=0);
     oblicz(kwota, stopa, raty, a, b, c);
     std::cout<<"Rata kredytu wynosi "<<c<<" zl\n\n";
     std::cout<<"Calkowita kwota do splaty to "<<b<<" zl\n\n";
     std::cout<<"Nadplata wynosi "<<a<<" zl\n\n";
     std::cout<<"Nacisnij dowolny klawisz, by powrocic do glownego MENU...";
     system("pause");
     kalkulatorKredytowy();
}
Opublikowano

NIE!!!

Tutaj nie ma żadnej potrzeby do rekurencyjnego wywoływania tych funkcji. Tylko problemów sobie narobisz.

Trzeba zrobić pętlę w funkcji kalkullatorKredytowy.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...