Zadanie poz.2 roz.17
Ostatnio zmodyfikowano 2016-05-24 11:35
MrKash Temat założony przez niniejszego użytkownika |
Zadanie poz.2 roz.17 » 2015-10-23 10:33:43 Będę się troszke dzielił swoimi zadaniami :P #include <iostream> #include <cstdlib> using namespace std;
void menu() { cout << "\t\t\nMENU\n\n" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Reszta z dzielenia" << endl; cout << "==================="; cout << "\n[0] Koniec Programu" << endl; cout << "===================" << endl; }
void dodawanie() { cout << "\nWybrales dodawanie\n" << endl; int a; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; int b; cout << "\nPodaj druga liczbe: "; cin >> b; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; cout << "\nWynik " << a << "+" << b << " = " << a + b << endl; system( "pause" ); }
void odejmowanie() { cout << "\nWybrales odejmowanie\n" << endl; int a; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; int b; cout << "\nPodaj druga liczbe: "; cin >> b; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; cout << "\nWynik " << a << "-" << b << " = " << a - b << endl; system( "pause" ); }
void mnozenie() { cout << "\nWybrales mnozenie\n" << endl; int a; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; int b; cout << "\nPodaj druga liczbe: "; cin >> b; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; cout << "\nWynik " << a << "*" << b << " = " << a * b << endl; system( "pause" ); }
void dzielenie() { cout << "\nWybrales dzielenie\n" << endl; int a; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; int b; cout << "\nPodaj druga liczbe: "; cin >> b; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; cout << "\nWynik " << a << "/" << b << " = " << a / b << endl; system( "pause" ); }
void reszta_z_dzielenie() { cout << "\nWybrales reszte z dzielenia\n" << endl; int a; cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; int b; cout << "\nPodaj druga liczbe: "; cin >> b; cout << "\nCzy udalo sie wczytac?: " << cin.good() << endl; cout << "Czy cos nawalilo?: " << cin.fail() << endl; cout << "\nWynik " << a << "%" << b << " = " << a % b << endl; system( "pause" ); }
int main() { cout << "Witaj w naszym programie :)\n" << endl; int liczymy; do { menu(); cout << "\nJakie dzialanie wybierasz?: " << endl; cin >> liczymy; switch( liczymy ) { case 1: dodawanie(); break; case 2: odejmowanie(); break; case 3: mnozenie(); break; case 4: dzielenie(); break; case 5: reszta_z_dzielenie(); break; default: break; } } while( liczymy != 0 ); cout << "\nWybrales [0] wiec konczymy :)" << endl; system( "pause" ); return 0; }
A tutaj główne zadanie: #include <iostream> #include <cstdlib> using namespace std;
int wczytajLiczbe() { int moja; do { cin.clear(); cin.sync(); cin >> moja; if( moja == cin.good() ) { cout << "\n Podales poprawna liczbe :)\n" << endl; } else { cout << "\nUps ! Podales zla liczbe, popraw sie!\n" << endl; } } while( moja != cin.good() ); cout << "\nTo nie takie trudne :)" << endl; return moja; }
int main() { cout << "Podaj liczbe: " << endl; int liczba = wczytajLiczbe(); cout << "\nPodales liczbe: " << liczba << endl; system( "pause" ); return 0; }
Funkcje jednak bardzo ułatwiają sprawę ;) Co myślicie o drugim kodzie ? :/ |
|
carlosmay |
» 2015-10-23 11:13:54 Dział 'Inne' jest lepszym miejscem na takie tematy. Funkcje są prawie identyczne, więc program można sporo skrócić. Można napisać jedną funkcję, która będzie wykonywać działanie na podstawie przekazanego znaku działania. case 1: oblicz( '+' ); break;
Funkcja oblicz pobiera ten znak i: void oblicz( char oper_matem ) { if( oper_matem == '+' ) { cout << "a + b = " << dodaj( a, b ) << endl; } else if( oper_matem == '-' ) { cout << "a - b = " << odejmij( a, b ) << endl; }
Do tego piszesz takie krótkie funkcyjki: int dodaj( int ia, int ib ) { return ia + ib; }
int odejmij( int ia, int ib ) { return ia - ib; }
|
|
MrKash Temat założony przez niniejszego użytkownika |
» 2016-03-09 10:05:18 Ucząc się kursu od początku zrozumiałem na czym polega to zadanie. Rozdział 17 Zadanie domowe. (Napisz 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. ) #include <iostream> #include <cstdlib> #include <cstdio>
using namespace std;
int wczytajLiczbe() { int a; do { cout << "Podaj liczbe: "; cin >> a; if( a != 0 ) { cout << "\nPodales zla liczbe, sprobuj jeszcze raz." << endl; getchar(); getchar(); system( "clear" ); } else cout << "\n"; } while( a != 0 ); return a; }
int main() { int liczba = wczytajLiczbe(); std::cout << "Podales liczbe: " << liczba << " konczymy." << endl; return 0; }
|
|
carlosmay |
» 2016-03-09 10:19:14 ( a != 0 ); Jaką wartość ma zwrócić funkcja? Jaki to ma sens? |
|
MrKash Temat założony przez niniejszego użytkownika |
» 2016-03-09 10:21:39 Funkcja ma zwrócić wartość 0... Fakt dzięki |
|
Ananke |
» 2016-05-24 08:43:11 Cześć. Mam pytanie odnośnie tego zadania. Mr.Kash utworzył w swoim programie funkcje nie zwracające wartości czyli void. Czy można jakoś rozwiązać to zadanie prosząc o zwrot wartości?Ja zaczęłam kombinować tak:
#include <iostream> using namespace std;
int wczytajLiczbe() { int a; cout<<"Wpisz liczbe:"; cin>>a; return a; } int dodawanie() { int a; int wynik=10; if(a!=0) cout<<"wynik+a="<<wynik+a<<endl; return wynik+a; }
int odejmowanie() { int a; int wynik=10; if(a!=0) cout<<"wynik -a="<<wynik-a<<endl; return wynik-a; }
int mnozenie() { int a; int wynik=10; if(a!=0) cout<<"wynik*a="<<wynik*a<<endl; return wynik*a; }
int dzielenie() { int a; int wynik=10; if(a!=0) cout<<"wynik/a="<<wynik/a<<endl; return wynik/a; } int main() { cout<<"Menu:"<<endl<<endl; cout<<"[1]. Dodawanie"<<endl; cout<<"[2]. Odejmowanie"<<endl; cout<<"[3]. Mnozenie"<<endl; cout<<"[4]. Dzielenie"<<endl; cout<<"[5]. Rezygnuj"<<endl<<endl<<endl;
int wynik=10; int a=wczytajLiczbe(); int dzialanie;
do { cout<<"Wybierz dzialanie:"; cin>>dzialanie; switch(dzialanie) {case 1: dodawanie(); break;
case 2: odejmowanie(); break; case 3: mnozenie(); break; case 4: dzielenie(); break; case 5: cout<<"Zrezygnowales"<<endl; break; } }while(a!=0);
cout<<"Koniec programu. Wybrales zero."<<endl;
return 0; } ale póki co nie udało mi się by wszystko dobrze działało.Czy wynika to z tego,że w ogóle nie powinno się tutaj korzystać z takiego rozwiązania?A jeśli można to czy ktoś mógłby mi pokazać jak powinno wyglądać prawidłowe rozwiązanie? Teoretycznie rozumiem na czym polegaja funkcje ale w praktyce trudno mi je wykorzystać. Będę wdzięczna za pomoc. |
|
carlosmay |
» 2016-05-24 09:23:44 int dodawanie() { int a; int wynik = 10; if( a != 0 ) cout << "wynik+a=" << wynik + a << endl; return wynik + a; } Zmienna 'a' nie jest zainicjalizowana. |
|
Ananke |
» 2016-05-24 10:05:24 Tak, ponieważ chciałam by wpisując zmienną a wyświetliła się zwrócona wartość z funkcji wczytajLiczbe.Innymi słowy chciałam przypisać zmiennej a wartosc z funkcji wczytajLiczbe. Czy w takim razie mogę w innej funkcji np. dodawanie wykorzystac funkcje wczytajLiczbe?
int dodawanie() { int a; a=wczytajLiczbe(); itd. } |
|
« 1 » 2 |