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

R. 17 Funkcje - zwracanie wartości do zmiennej a tworzenie nowej zmiennej.

Ostatnio zmodyfikowano 2019-03-19 17:06
Autor Wiadomość
rottingham
Temat założony przez niniejszego użytkownika
R. 17 Funkcje - zwracanie wartości do zmiennej a tworzenie nowej zmiennej.
» 2018-11-07 17:41:31
Mam pytanie odnośnie dwóch kodów poniżej:

Pierwszy jest skopiowany z R. 17, drugi zmodyfikowany przeze mnie.

Oba kody działają tak samo. Po co zatem w przypadku nr 1 tworzymy dodatkową zmienną?
float tu_bedzie_wynik


Pozdrawiam!

Nr 1

C/C++
#include <iostream>

float dodawanie_inne()
{
    float a;
    std::cin >> a;
    float b;
    std::cin >> b;
    return a + b;
}

int main()
{
    std::cout << "Wprowadz dwie liczby: ";
    float tu_bedzie_wynik = dodawanie_inne();
    std::cout << "Wynik dodawania wynosi: " << tu_bedzie_wynik << std::endl;
    return 0;
}
Nr 2
C/C++
#include <iostream>

float dodawanie_inne()
{
    float a;
    std::cin >> a;
    float b;
    std::cin >> b;
    return a + b;
}

int main()
{
    std::cout << "Wprowadz dwie liczby: ";
    float dodawanie_inne();
    std::cout << "Wynik dodawania wynosi: " << dodawanie_inne() << std::endl;
    return 0;
}

P-172780
pekfos
» 2018-11-07 18:26:16
Bez powodu.

C/C++
float dodawanie_inne(); // ???
std::cout << "Wynik dodawania wynosi: " << dodawanie_inne() << std::endl;
A ta deklaracja funkcji co tam robi?
P-172781
rottingham
Temat założony przez niniejszego użytkownika
» 2018-11-08 20:07:41
Dopiero teraz zrozumiałem rozdział, przeczytałem ponownie swoje pytanie i puknąłem się w czoło... Dzięki za pomoc.

Natomiast mam jeszcze jedno pytanie:

Czy nazwy zmiennych w różnych funkcjach mogą się powielać czy może jednak od razu wyrobić sobie nawyk nadawania im innych nazw? (mam na myśli sam styl, bo wiem to, że one siebie nie widzą)

A jeżeli nadawać inne nazwy, to czy przyjął się jakiś schemat tworzenia nazw pozwalający identyfikować od razu zmienną z konkretną funkcją czy to już kwestia osobistych nawyków?
P-172787
YooSy
» 2018-11-08 20:59:02
Nazwy w różnych zasiegach mogą być takie same, a nazywanie zmiennych powinno ułatwiać czytanie kodu.
P-172788
jankowalski25
» 2018-11-08 21:24:43
Natomiast mam jeszcze jedno pytanie
Jeden temat = jeden problem. Było parę tematów odnośnie planowania kodu, lepiej się pod któryś podpiąć lub założyć nowy.

Czy nazwy zmiennych w różnych funkcjach mogą się powielać
Mogą, a w różnych przypadkach nawet powinny. Nie ma sensu wymyślać za każdym razem nowej nazwy, jeśli to nie wnosi niczego nowego. Przykładowo utartym zwyczajem jest nazywanie licznika pojedynczej, niezagnieżdżonej pętli literą
i
.

czy przyjął się jakiś schemat tworzenia nazw pozwalający identyfikować od razu zmienną z konkretną funkcją
Nie próbuj robić czegoś takiego, bo uzyskasz odpowiednik zmiennych globalnych. Po to są zasięgi i przestrzenie nazw, aby nie trzeba było ciągle wymyślać nowych, unikalnych identyfikatorów.
P-172789
safian
wariacja
» 2019-03-19 17:06:32
nie chce zakładać nowego tematu, bo problem wiąże sie jak sądze z tematem powyższego tematu, a zatem...
Kod w sumie działa, ale...wpisując poszczególne liczby muszę je zatwierdzać/wpisywać dwukrotnie. Kombinowałem na różne sposoby co jest źle, ale poddałem się.
Słowo pomocy mile widziane :)

#include <iostream>
#include <limits>

using namespace std;

void naglowek()
    {
        cout<<"[1] - dodawanie"<<endl;
        cout<<"[2] - odejmowanie"<<endl;
        cout<<"[3] - mnozenie"<<endl;
        cout<<"[4] - dzielenie"<<endl;
        cout<<"[0] - koniec"<<endl;
    }

int test1()
{
    bool x;
    int a;
    do
    {
            cin>>a;
            x=cin.fail();
            if(x==true)
            cout<<"podaj poprawna "<<endl;
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(),'\n');
    }while(x==true);

            return a;
}
int test2()
{
    bool x;
    int b;
    do
    {
            cin>>b;
            x=cin.fail();
            if(x==true)
            cout<<"podaj poprawna "<<endl;
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(),'\n');
    }while(x==true);

            return b;
}
int dodawanie()
    {
        int a;
        cout<<"podaj pierwsza "<<endl;
        a= test1();
        cin>>a;//<------tu jest błąd. Niepotrzebnie przekazywałem kolejny raz do zmiennej.
        int b;
        cout<<"podaj druga "<<endl;
        b = test2();
        cin>>b;//<------tu jest błąd. Niepotrzebnie przekazywałem kolejny raz do zmiennej.

        return a+b;
    }

int odejmowanie()
{
    int a;
        cout<<"podaj pierwsza "<<endl;
        a = test1();
        cin>>a;
        int b;
        cout<<"podaj druga "<<endl;
        b= test2();
        cin>>b;

        return a-b;
}
int mnozenie()
{
    cout<<"nieoprogramowane"<<endl;
}
int dzielenie()
{
    mnozenie();
}


    int main()
    {
        int s;
        int dd;
        int od;
        int m;
        int dz;

        do
        {
            cout<<"dostepne operacje: "<<endl;
            naglowek();
            cin>>s;
            switch(s)
            {
                case 1:
                    dd = dodawanie();
                    cout<<"wynik dodawania "<<dd<<endl;
                    break;
                case 2:
                    od = odejmowanie();
                    cout<<"wynik odejmowania "<<od<<endl;
                    break;
                case 3:
                    m = mnozenie();
                    cout<<"wynik mnozenia "<<m<<endl;
                    break;
                case 4:
                    dz = dzielenie();
                    cout<<"wynik dzielenia "<<dz<<endl;
                    break;
                default:
                    break;
            }
        }while(s!=0);


    return 0;
    }
P-174215
« 1 »
  Strona 1 z 1