functie interschimbare valori
Last Updated: Oct 20 2014 20:15, Started by
juravleamihail
, Oct 19 2014 17:31
·
0
#1
Posted 19 October 2014 - 17:31
Ma puteti ajuta pe baza functiilor la o problema sa schimb valorile a doua numere intregi a si b,de ex a=2,b=3 se va afisa 3,2,in fine eu incercat da nu prea mi-a iesit
#include <iostream> using namespace std; int schimbare(int a,int b ) { int aux; while(a!=b ){a=aux; aux=b; b=a; } return aux; } int main() { int a,b; cin>>a>>b; cout<<schimbare(a,b ); return 0; } Edited by juravleamihail, 19 October 2014 - 17:32. |
#2
Posted 19 October 2014 - 17:41
trebuie sa schimbi valoarea care se afla la o adresa
Edited by MarianG, 19 October 2014 - 17:42. |
#3
Posted 19 October 2014 - 17:47
#4
Posted 19 October 2014 - 17:51
MarianG, on 19 octombrie 2014 - 17:41, said:
trebuie sa schimbi valoarea care se afla la o adresa OriginalCopy, on 19 octombrie 2014 - 17:47, said:
Titlul topicului tau e prea general. Ti l-am schimbat, si ti-am dat o avertizare formala. Fii atent de acum inainte. Vei citi si vei respecta regulamentul unificat al ariei Programming in integralitatea sa. |
#5
Posted 19 October 2014 - 17:53
Ai minim 3 soluții posibile: să folosești pointeri, să folosești referințe, să faci o clasă/structură pentru interschimb în interiorul căreia să incluzi variabilele respective.
Atunci când apelezi schimbare(a, b ), se realizează copii ale variabilelor tale a și b în cadrul segmentului de stivă (parametri se transmit prin valoare). Deci funcția ta va lucra cu niște copii ale variabilelor și nu cu cele ”originale”, pentru care apelezi funcția. Ca atare, variabilele pentru care apelezi funcția rămân nemodificate în urma executării codului din funcție. Edited by adrian93, 19 October 2014 - 18:04. |
#6
Posted 19 October 2014 - 17:57
la referinte,si pointeri inca nu am invatat,trebuie sa fac pe baza de functii,la a 3 varianta te referi sa interschimb pe baza de aux,cum ar fi a=aux,aux=b,b=a nu?
|
#7
Posted 19 October 2014 - 17:59
juravleamihail, on 19 octombrie 2014 - 17:51, said:
cum adica? P.S. -- C++ http://www.cplusplus...algorithm/swap/ int x=10, y=20; // x:10 y:20 std::swap(x,y); // x:20 y:10 Edited by MarianG, 19 October 2014 - 18:00. |
#8
Posted 19 October 2014 - 18:13
std::swap() foloseste tot referinte.
Daca nu ai voie, si trebuie musai sa faci cu functii, atunci te duci frumos la prof si ii spui ca e proast/a. |
#9
Posted 19 October 2014 - 18:42
#10
Posted 19 October 2014 - 18:43
|
#11
Posted 19 October 2014 - 18:45
juravleamihail, on 19 octombrie 2014 - 18:42, said:
sau parametrii pot fi transmisi prin valoare nu? Si cum afla apelantul de schimbarile facute de functia apelata? Nu stii, pentru ca nu stii treburile cu pointerii. Deci ori pui mana si faci cu pointeri (referintele tot un fel de pointeri sunt, in fundal), ori ii spui profului/profei cum e. |
#12
Posted 19 October 2014 - 19:29
Nu înțeleg de ce îi obligă profii pe copii să facă operațiunea intr-un anumit mod..., mai ales cand exista template pt. swap..?
http://www.cplusplus...algorithm/swap/ Nu mai bine s-ar axa profesorul pe explicarea acestui template, si astfel ar putea folosi direct swap() pt. aproape orice tip de data?? Ca s-o multmuiesti pe profa, baga-i doua & inainte de parametrii formali de la ,,schimbare", si las-o balta... LE: Fa-o void, nu int, ca schimbare() nu returneaza nimic, ci doar schimba. Edited by Rhesus, 19 October 2014 - 19:33. |
#13
Posted 19 October 2014 - 20:02
1. Functia trebuie void
2. Nu ai nevoie de while 3. Tu initial ii dai lui "a" valoarea lui "aux" care nu are nicio valoare intiala. Practic tu stergi continutul lui "a" si ii dai o valoarea aiurea. Ordinea ar fi : aux = a; a=b; b=aux; |
#14
Posted 20 October 2014 - 00:42
1. Ca incepator vei dori sa ai control asupra functiilor.
parerea mea este ca nu ar strica sa 'intorci' un cod de success sau de eroare. |
#15
Posted 20 October 2014 - 13:30
OriginalCopy, on 19 octombrie 2014 - 18:45, said:
Bineinteles ca pot. Si cum afla apelantul de schimbarile facute de functia apelata? Nu stii, pentru ca nu stii treburile cu pointerii. Deci ori pui mana si faci cu pointeri (referintele tot un fel de pointeri sunt, in fundal), ori ii spui profului/profei cum e. |
|
#16
Posted 20 October 2014 - 20:15
la referinta am facut, am ca definitie ca se folosete transmitere prin referinta atunci cand dorim ca valoarea modificata in functie sa fie vazuta in main,de asta mi-a dat si semnul asta "&" ca sa-l pot vedea si in main.
|
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users