Funkcje wczytujace liczby

0

Czesc wszystkim

Jestem w trakcie internetowego kursu c++ i zatrzymalem sie na koncu jednego tematu, nie wiem, cos musialem przegapic albo nie wiem, stanalem w jednym punkcie i nie wiem jak dalej pojsc, dlatego skierowalem sie tu po pomoc, a mianowicie, potrzebuje zrobic dwie rzeczy:

1.Napisac funkcję, która będzie wczytywała liczby ze standardowego wejścia i zwracała wczytaną wartość. Funkcja ma zagwarantować, że zwracana liczba zawsze jest poprawna. Oznacza to, że funkcja będzie musiała pytać użytkownika o wprowadzenie liczby dopóki nie poda poprawnej.

napisalem program ktory wczytuje liczby a potem je wypisuje, ale jak zabezpieczyc przed niechcianymi ? przed ulamkowymi albo slowami ?

2.Zmodyfikowac wczesniej zrobiony przeze mnie kalkulator tak zeby uzywal funkcji... A oto moj stary kalkulator:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
  int wybor;
  do
  {
  cout << " --Kalkulator-- " << endl;
  cout << "|==============|" << endl;
  cout << "|Dodawanie[1]  |" << endl;
  cout << "|Odejmowanie[2]|" << endl;
  cout << "|Mnozenie[3]   |" << endl;
  cout << "|Dzielenie[4]  |" << endl;
  cout << "|              |" << endl;
  cout << "|Wyjscie[0]    |" << endl;
  cout << "|==============|" << endl;
  cout << "Wybor: ";
  cin >> wybor;

 if(wybor == 0 )
    {
      cout << "Koniec" << endl;
      return 0;
    }

    switch(wybor)
      {
    case 1:
      {
	double a1, a2;
      cout << "Podaj pierwsza liczbe: ";
      cin >> a1;
      cout << "Podaj druga liczbe: ";
      cin >> a2;
      cout << "Wynik to: " << a1 + a2 << endl;
      break;
           }
      case 2:
	{
	double b1, b2;
	cout << "Podaj pierwsza liczbe: ";
	cin >> b1;
	cout << "Podaj druga liczbe: ";
	cin >> b2;
	cout << "Wynik to: " << b1 - b2 << endl;
	  break;
      }
      case 3:
	{
	double c1, c2;
	cout << "Podaj pierwsza liczbe: ";
	cin >> c1;
	cout << "Podaj druga liczbe: ";
	cin >> c2;
	cout << "Wynik to: " << c1 * c2 << endl;
        break;
      }
 case 4:
   {
   double d1, d2;
   cout << "Podaj pierwsza liczbe: ";
   cin >> d1;
   cout << "Podaj druga liczbe: " << endl;
   cin >> d2;
   if(d1 == 0 || d2 ==0)
     {
       cout << "Probujesz podzielic zero albo przez zero..." << endl;
       break;
     }
   else;
   {
     cout << "Wynik to: " << d1 / d2 << endl;
     break;

   }
   }
      }
  }while(wybor > 4 && wybor != 0);
}

Tak zeby uzywal takiej funkcji:

#include <iostream>
int wczytajLiczbe()
{
    //TODO: tu Twój kod
}

int main()
{
    std::cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}

No to na tym sie juz calkowicie zatrzymalem, nie wiem jak to zrobic, probowalem ale ciagle errory przy debugowaniu i wgl ;c Licze na jakies wasze naprowadzenie mnie zebym mogl ruszyc dalej juz z tym kursem.

pozdrawiam :)

0

Niestety nic nie ogarniam z tego linku, sa tam uzywanie nieznane przeze mnie wyrazenia, przewnie nie ogarnalem ich jeszcze w kursie, dobra mniejsza o ten pierwszy problem, najbardziej prosilbym o pomoc z tymi funkcjami w kalkulatorze.

1

Zrób sobie funkcje sum, substract, multiply, divide:

double sum(double a, double b)
{
    return a + b;
}

int main()
{
    ....
    double a1, a2;
    cout << "Podaj pierwsza liczbe: ";
    cin >> a1;
    cout << "Podaj druga liczbe: ";
    cin >> a2;

    switch (choice)
    {
    case 1:
        cout << "Wynik to: " << sum(a1, a2) << endl;
        break;
    case 2:
        ....
    }
}
0

I takie wyjscie jest zgodne z tym przykladem ?

#include <iostream>
int wczytajLiczbe()
{
    //TODO: tu Twój kod
}
 
int main()
{
    std::cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}

Bo chcialbym sie kierowac wskazaniami z kursy zwiezle ;p To jest to samo tak ?

1

W linku który dał @twonek faktycznie możesz niektórych poleceń nie rozumieć bo szablonów w tym etapie kursu raczej nie ma, ale funkcje GetData() spokojnie można okroić do twoich potrzeb.

 
#include <limits>
int wczytajLiczbe(const char *pytanie, const char *wiadomosc_jak_sie_nie_uda)
{
    int number = 0;
    while((std::cout << pytanie) && !(std::cin >> number))
    {
        std::cout << wiadomosc_jak_sie_nie_uda;
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    return number;
}
//wywolujesz tak
int liczba = wczytajLiczbe("Podaj liczbe:", "To nie jest liczba");
0

Dobra dziekuje wszystkim za pomoc :)
Szczegolnie twonkowi i Proximie za jasne i klarowne przyklady, wlasnie z argumentami mam wieczny problem, ciagle czegos nie rozumiem ale mysle ze teraz sie jakos rusze do przodu z tym kursem juz, zobaczymy jak wyjdzie ;p

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