Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Intrebari srl nou

Amenintat cu moartea de un numar ...

La multi ani @AndReW99!

Alegere masina £15000 uk
 TVR vrea sa lanseze o platforma d...

Strategie investie pe termen lung...

Modulator FM ptr auto alimentat p...

orange cablu f.o. - internet fara...
 Robinet care comuta traseul

A fost lansata Fedora 40

Samsung S24 plus

Imi iau un Dell? (Vostro vs others)
 Abonati Qobuz?

transport -tren

Platforma electronica de eviden&#...

Cot cu talpa montat stramb in per...
 

functie interschimbare valori

- - - - -
  • Please log in to reply
15 replies to this topic

#1
juravleamihail

juravleamihail

    Junior Member

  • Grup: Members
  • Posts: 163
  • Înscris: 04.05.2014
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,437
  • Înscris: 10.08.2005
trebuie sa schimbi valoarea care se afla la o adresa

Edited by MarianG, 19 October 2014 - 17:42.


#3
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postjuravleamihail, on 19 octombrie 2014 - 17:31, said:

Functii
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.

#4
juravleamihail

juravleamihail

    Junior Member

  • Grup: Members
  • Posts: 163
  • Înscris: 04.05.2014

View PostMarianG, on 19 octombrie 2014 - 17:41, said:

trebuie sa schimbi valoarea care se afla la o adresa
cum adica?

View PostOriginalCopy, 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.
ok,scz,n-am stiut

#5
adrian93

adrian93

    Active Member

  • Grup: Members
  • Posts: 1,740
  • Înscris: 29.10.2009
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
juravleamihail

juravleamihail

    Junior Member

  • Grup: Members
  • Posts: 163
  • Înscris: 04.05.2014
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,437
  • Înscris: 10.08.2005

View Postjuravleamihail, on 19 octombrie 2014 - 17:51, said:

cum adica?
adica ce faci tu acolo este inutil de indata ce se termina functia, vezi ce se intampla pe stiva

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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
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
juravleamihail

juravleamihail

    Junior Member

  • Grup: Members
  • Posts: 163
  • Înscris: 04.05.2014

View PostOriginalCopy, on 19 octombrie 2014 - 18:13, said:

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.
sau parametrii pot fi transmisi prin valoare nu?

#10
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,437
  • Înscris: 10.08.2005

View Postjuravleamihail, on 19 octombrie 2014 - 18:42, said:

sau parametrii pot fi transmisi prin valoare nu?
explica-te, ca eu nu te inteleg

#11
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postjuravleamihail, on 19 octombrie 2014 - 18:42, said:

sau parametrii pot fi transmisi prin valoare nu?
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.

#12
Rhesus

Rhesus

    Senior Member

  • Grup: Senior Members
  • Posts: 2,884
  • Înscris: 22.04.2014
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
G1q

G1q

    Active Member

  • Grup: Members
  • Posts: 1,019
  • Înscris: 31.01.2007
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,437
  • Înscris: 10.08.2005
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
adrian93

adrian93

    Active Member

  • Grup: Members
  • Posts: 1,740
  • Înscris: 29.10.2009

View PostOriginalCopy, 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.
Cred că din considerente didactice, profesorul ar fi dorit să implementeze el funcția :).

#16
juravleamihail

juravleamihail

    Junior Member

  • Grup: Members
  • Posts: 163
  • Înscris: 04.05.2014
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate