Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zadanie poz.2 roz.17

Ostatnio zmodyfikowano 2016-05-24 11:35
Autor Wiadomość
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

C/C++
#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:

C/C++
#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 ? :/
P-139069
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.

C/C++
case 1: // dodawanie
oblicz( '+' );
break;

Funkcja oblicz pobiera ten znak i:
C/C++
void oblicz( char oper_matem )
{
    // tutaj jakiś kod. Wczytywanie liczb itd.
    if( oper_matem == '+' )
    {
        cout << "a + b = " << dodaj( a, b ) << endl;
    }
    else if( oper_matem == '-' )
    {
        cout << "a - b = " << odejmij( a, b ) << endl;
    } // itd...

Do tego piszesz takie krótkie funkcyjki:
C/C++
int dodaj( int ia, int ib ) { return ia + ib; }

int odejmij( int ia, int ib ) { return ia - ib; } // itd...
P-139070
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. )


C/C++
#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;
}
P-145777
carlosmay
» 2016-03-09 10:19:14
( a != 0 );
Jaką wartość ma zwrócić funkcja?

C/C++
cin.good();
cin.fail();
Jaki to ma sens?
P-145778
MrKash
Temat założony przez niniejszego użytkownika
» 2016-03-09 10:21:39
Funkcja ma zwrócić wartość 0... Fakt dzięki
P-145779
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.
P-148536
carlosmay
» 2016-05-24 09:23:44
C/C++
int dodawanie()
{
    int a;
    int wynik = 10;
    if( a != 0 ) cout << "wynik+a=" << wynik + a << endl;
   
    return wynik + a;
}
Zmienna 'a' nie jest zainicjalizowana.
P-148538
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.
}
P-148539
« 1 » 2
  Strona 1 z 2 Następna strona