R. 17 Funkcje - zwracanie wartości do zmiennej a tworzenie nowej zmiennej.
Ostatnio zmodyfikowano 2019-03-19 17:06
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 #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 #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; }
|
|
pekfos |
» 2018-11-07 18:26:16 Bez powodu. float dodawanie_inne(); std::cout << "Wynik dodawania wynosi: " << dodawanie_inne() << std::endl; |
A ta deklaracja funkcji co tam robi? |
|
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? |
|
YooSy |
» 2018-11-08 20:59:02 Nazwy w różnych zasiegach mogą być takie same, a nazywanie zmiennych powinno ułatwiać czytanie kodu. |
|
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. |
|
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; } |
|
« 1 » |