infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Vene Tian din Februarie 08, 2008, 23:08:57



Titlul: Ajutor!!!
Scris de: Vene Tian din Februarie 08, 2008, 23:08:57
Am functia:
Citat
int minim(int a[100], int n, int &p)
{
int i,min;
min=a[1];
for(i=2;i<=n;i++) if(ai<min) {min=ai;p=i;}
return min;
}

cand o apelez
minim (a,n) -->Too few parameters
minim (a,n,p) -->returneaza minimu' corect ... dar p=0 intotdeauna... (in cazut in care minimu se afla pe ultima pozitie atunci p=n;) WOW dc??


Titlul: Răspuns: Ajutor!!!
Scris de: Andrei Grigorean din Februarie 08, 2008, 23:18:05
Pai daca dai teste in care minimul este a[1] nu ar trebui sa se schimbe valoarea lui p.


Titlul: Răspuns: Ajutor!!!
Scris de: Vene Tian din Februarie 08, 2008, 23:20:55
nu am dat teste in care valoarea lui n sa fie 1... :/ nu asta ma intereseaza (se rezolva usor... int p=1;)

de ce minim (a,n) -->Too few parameters ???

trebuia sa mearga nu?
transmisie prin referinta... (returneaza minimu ... si memoreaza pozitia lui)


Titlul: Răspuns: Ajutor!!!
Scris de: Ivan Nicolae din Februarie 08, 2008, 23:47:41
de ce minim (a,n) -->Too few parameters ???
pt. ca functia are 3 parametri  :)


Titlul: Răspuns: Ajutor!!!
Scris de: Vene Tian din Februarie 09, 2008, 00:07:45
plz, cine are timp sa-mi modifice functia...ca eu nu inteleg nik. profa a spus k dak un parametru e &p (referinta) nu trebuie sal apelez. Scz d lizibilitatea postului dar sunt p tel mobil acum...


Titlul: Răspuns: Ajutor!!!
Scris de: Ivan Nicolae din Februarie 09, 2008, 01:35:23
 cu exceptia observatiei lui wefgef... functia e buna... greseala se trage de alt-undeva de prin program


Titlul: Răspuns: Ajutor!!!
Scris de: Diculescu Elena Alexandra din Februarie 09, 2008, 16:27:03
cand apelezi o functie, o apelezi cu toti parametrii pe care ii cere(3 in cazul tau),chiar daca sunt sau nu transmisi prin referinta


Titlul: Răspuns: Ajutor!!!
Scris de: Sima Cotizo din Februarie 09, 2008, 16:58:20
Nu neaparat. Poti sa ii dai unui parametru un "default value" si atunci nu trebuie sa-i mai dai valoarea...

Cod:
int f(long x=0) { return x; }
iti va returna 0 daca apelezi cu f()... cel putin in teorie

Google it :)


Titlul: Răspuns: Ajutor!!!
Scris de: Vene Tian din Februarie 09, 2008, 18:06:23
Totuşi ... tot but sunt.. :/ in interiorul funcţiei e valoarea lui p corectă... dar in exteriorul funcţiei (in cazul de faţă în main) valoarea p rămâne nemodificată... DE CE? ca e declarat prin referinţă.

Asta este sursa completă.
Cod:
#include<iostream.h>
#include<conio.h>
int minim(int a[100],int n ,int &p)
{
int min=a[1],i;p=1;
for(i=2;i<=n;i++)
     if(a[i]<min) {min=a[i];p=i;cout<<p<<" ";}
     cout<<endl;
return min;
}


int main()
{
clrscr();
int n,a[100],p=101;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cout<<minim(a,n,p)<<" "<<p;//afiseaza valoarea 101 (a lui p) ceea ce inseamna ca n-au avut loc modificari
getch();
return 0;
}

Vă mulţumesc pentru suport!


Titlul: Răspuns: Ajutor!!!
Scris de: Vene Tian din Februarie 11, 2008, 16:07:29
REZOLVAT!!!
Gresit:

Cod:
cout<<minim(a,n,p)<<" "<<p;
Corect:
Cod:
cout<<minim(a,n,p);
cout<<" "<<p;


Titlul: Răspuns: Ajutor!!!
Scris de: Banu Mihai din Februarie 15, 2008, 17:43:31
am si io nevoie de un algoritm al lui lee nerecursiv va rog...deabia am invatat recursivitatea si mi-a zis profa k imi trebuie lee si maine e olmpiada :x...si am unu..care e destul de complicat...poate nerecursiv e mai usor..