Lekcja 2.17
Ostatnio zmodyfikowano 2016-07-21 19:03
carlosmay |
» 2016-07-21 00:18:20 float zmienne() { float liczba_1, liczba_2; cout << "Podaj pierwsza liczbe: "; cin >> liczba_1; cout << "Podaj druga liczbe: "; cin >> liczba_2; return 0; }
|
Wczytywanie danych do zmiennych w tej funkcji nic nie daje (zmienne są niszczone przy wyjściu z funkcji). Funkcja zawsze zawraca zero. Uzupełnij ten kod: #include <iostream> using namespace std;
float pobierzOperand() { float operand; return operand; }
int pobierzOperacje() { int operacja; return operacja; }
float dodawanie( float lewyOperand, float prawyOperand ) { return lewyOperand + prawyOperand; }
void menu() { }
int main() { menu(); int operacja = pobierzOperacje(); float lewy = pobierzOperand(); float prawy = pobierzOperand(); switch( operacja ) { case 1: cout << "lewy + prawy = " << dodawanie( lewy, prawy ) << '\n'; break; case 2: break; case 3: break; case 4: break; default: } }
4. Pobierz liczbę używają funkcji i zapisz zwróconą wartość do zmiennej (użyj tej samej funkcji dla obu operandów i działania). |
Trochę się rozpędziłem. Nie wiem czy znasz rzutowanie typów. int operacja =( int ) pobierzOperand();
|
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-07-21 01:05:04 Nie znam się na rzutowaniu typów, coś widziałem na 4programers ale tego nie zgłębiłem i czułem się jak idiota bo nie wiedziałem o co chodzi za bardzo.Co sądzisz o wczytywaniu funkcji do funkcji z działaniem? Coś takiego ma rece i nogi o ile umie się poprawnie stworzyć kod? float zmienne() { float liczba_1, liczba_2; cout << "Podaj pierwsza liczbe: "; cin >> liczba_1; cout << "Podaj druga liczbe: "; cin >> liczba_2; return 0; }
W C++ istnieje możliwość aby return zwracał obie liczby lub więcej bez działania (mnożenia etc? ) |
|
carlosmay |
» 2016-07-21 01:18:12 W C++ istnieje możliwość aby return zwracał obie liczby lub więcej bez działania |
Tak. Tablice. Struktury. Pary. Krotki. Czemu nie zastosujesz tego co ci napisałem. Prościej się nie da. Możesz jeszcze przekazać zmienne do funkcji przez referencję. Down: Co sądzisz o wczytywaniu funkcji do funkcji z działaniem? Coś takiego ma rece i nogi o ile umie się poprawnie stworzyć kod? |
Jest to możliwe (i często stosowane). W typ przypadku nie ma sensu, bo będzie niepotrzebne powielanie kodu (copy paste). |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-07-21 01:56:05 Zastosuje jak najbardziej, twoją pomoc bardzo sobie cenię, dopytuję się bo jak zwykle ciekawość bierze górę. Zrobione ale powiem że nie czuję się z tym dobrze,czuję że muszę więcej zadań zrobić. Pierwszy pisany schemat też muszę jakoś zrobić lepiej pisać kod. #include <iostream> #include <locale>
using namespace std;
float pobierzOperand() { int operand; cout << "Podaj liczbe: "; cin >> operand; return operand; } int pobierzOperacje() { int operacje; bool sprawdzam; cout << "Wybierz dzialanie: "; cin >> operacje; sprawdzam = cin.good(); if( sprawdzam == false || operacje < 1 || operacje > 5 ) do { cin.clear(); if( isalpha( cin.get() ) ) cout << "Litery sa niedozwolone!" << endl; else cout << "Bledny znak!" << endl; cout << "Podaj ponownie liczbe: "; cin >> operacje; sprawdzam = cin.good(); } while( sprawdzam == false || operacje < 1 || operacje > 5 ); return operacje; }
float dodawanie( float lewyOperand, float prawyOperand ) { return lewyOperand + prawyOperand; } float odejmowanie( float lewyOperand, float prawyOperand ) { return lewyOperand - prawyOperand; }
float mnozenie( float lewyOperand, float prawyOperand ) { return lewyOperand * prawyOperand; }
float dzielenie( float lewyOperand, float prawyOperand ) { if( lewyOperand != 0 && prawyOperand != 0 ) { return lewyOperand / prawyOperand; return lewyOperand / prawyOperand; } else cout << " Nie dzielimy przez zero!" << endl; return 0; }
void menu() { cout << "================================Kalkulator=================================" << endl; cout << "[1] Dodawanie \n[2] Odejmowanie \n[3] Mnozenie \n[4] Dzielenie\n[5] Koniec \n"; } int main() { menu(); int operacje =( int ) pobierzOperacje(); float lewy = pobierzOperand(); float prawy = pobierzOperand(); switch( operacje ) { case 1: cout << "lewy + prawy = " << dodawanie( lewy, prawy ) << endl; break; case 2: cout << "lewy - prawy = " << odejmowanie( lewy, prawy ) << endl; break; case 3: cout << "lewy * prawy = " << mnozenie( lewy, prawy ) << endl; break; case 4: cout << "lewy / prawy = " << dzielenie( lewy, prawy ) << endl; break; case 5: cout << "Koniec" << '\n'; break; } }
|
|
karambaHZP |
» 2016-07-21 18:26:20 int operacje =( int ) pobierzOperacje();
Rzutowanie na ( int ) jest niepotrzebne, bo funkcja pobierzOperacje() zwraca wartość zgodną z typem zmiennej operacje. |
|
carlosmay |
» 2016-07-21 19:03:01 if( lewyOperand != 0 && prawyOperand != 0 ) { return lewyOperand / prawyOperand; return lewyOperand / prawyOperand; }
|
|
|
1 2 « 3 » |