Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Love Lies Bleeding - 2024

Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...
 Donez medicamente renale ptr pisica

Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...
 problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox
 Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani
 

Functii si parametri

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

#1
George02

George02

    Member

  • Grup: Members
  • Posts: 356
  • Înscris: 09.01.2011
Lucrez pentru BAC si in una din variante am intalnit urmatoarea problema :

[ http://s14.postimg.org/c2u4mh2b5/problema.jpg - Pentru incarcare in pagina (embed) Click aici ]

cum ar trebui sa arata header-ul functiei ?  Ce am incercat :

int sir(int n , int& a[20]){
// da eroare la compilare spunand ca nu se poate da un array prin referinta
}

int sir(int n, int& a){
//cand incerc a[i] = 1 da eroare.
}


int sir(int n,int& a){
for(int i = 1; i <= n ; i++){
	 if(i <= 2){
		 a[i] = 1;
	 }else if( i > 3){
		 a[i] = 3*sir(i-1,a) - sir(i-2,a);
	 }
}
return a[i];
}



Si o alta chestie ar fi aceea ca :-?? dupa parerea mea S3 nu exista deci e gresita problema . Corectati-ma daca gresesc .

Edited by George02, 18 April 2014 - 13:34.


#2
potae

potae

    Sorosist frumos si liber

  • Grup: Senior Members
  • Posts: 3,429
  • Înscris: 20.08.2013
E un retardat cine a facut cerinta. Nu poti face intr-o singura functie toata treaba fara sa apelezi la tot felul de smecherii. In primul rand trebuie sa verifici daca n < 3 sau n > 20 insa daca i-ai da drumu' mai departe cu recursivitatea nu ai cum sa faci n <= 2 fiindca nu s-ar mai putea indeplini conditia n > 3...

#3
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Un array e prin definitie (in C/C++) un pointer.
int sir(int n, int a[20])
{
  a[0] = 1;
  a[1] = 2;
...
}



#4
George02

George02

    Member

  • Grup: Members
  • Posts: 356
  • Înscris: 09.01.2011
Mersi de lamurire . Despre existenta lui S3 ce zici ?

#5
George02

George02

    Member

  • Grup: Members
  • Posts: 356
  • Înscris: 09.01.2011

 George02, on 18 aprilie 2014 - 18:27, said:

Mersi de lamurire . Despre existenta lui S3 ce zici ?


UPDATE : Nu reusesc sa ii dau de cap ... ce ar trebui sa imi returneze functia ? (ar trebui sa imi returneze 1 daca n <2 si 3*Sn-1 - Sn-2 daca n > 3) dar :-?? nu stiu cum sa fac sa stochez si in vector valorile .


#6
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Pai tu sa ne zici. Care sunt datele de intrare, care trebuie sa fie datele de iesire si cum le mapezi pe parametrii si valoarea returnata de functie?

#7
George02

George02

    Member

  • Grup: Members
  • Posts: 356
  • Înscris: 09.01.2011

 TS030, on 18 aprilie 2014 - 20:34, said:

Pai tu sa ne zici. Care sunt datele de intrare, care trebuie sa fie datele de iesire si cum le mapezi pe parametrii si valoarea returnata de functie?

datele de intrare sunt : n
datele de iesire sunt : valoarea lui Sn ce trebuie si stocata in tabloul unidimensional

Nu stiu cum "sa le mapez pe parametrii si valoarea returnata de functie".

#8
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
"Valoarea lui Sn"? E una singura?

Hai sa te-ajut un pic:
Datele de intrare: un numar intreg mai mare sau egal cu 3. Pentru asta ai parametrul "n".
Datele de iesire: sirul S1, S2, ..., Sn - generat conform regulii date in textul problemei - stocat intr-un array unidimensional. Problema specifica faptul ca acest array e primit tot ca parametru (de iesire): "a"; si vom presupune ca validarile necesare sunt efectuate de apelant.

Bun, si-acum: ce ai vrea sa returneze functia?

Edited by TS030, 18 April 2014 - 21:29.


#9
MarianG

MarianG

    be that as it may

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

 George02, on 18 aprilie 2014 - 20:45, said:

datele de intrare sunt : n
datele de iesire sunt : valoarea lui Sn ce trebuie si stocata in tabloul unidimensional

Nu stiu cum "sa le mapez pe parametrii si valoarea returnata de functie".

Indiferent de valoarea naturala a lui n, programul tot va trebui sa calculeze S3 --
punct in care logica celui care a formulat cerinta a incetat sa existe

Edited by MarianG, 18 April 2014 - 22:39.


#10
TS030

TS030

    Guru Member

  • Grup: Senior Members
  • Posts: 15,193
  • Înscris: 25.06.2012
Trebuie doar "n >= 3" in loc de "n > 3".

#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Ce recursivitate fratilor? E o problema banala.
#include <stdio.h>

int compara(const void* _x, const void* _y)
{
	int x = *((int*)_x);
	int y = *((int*)_y);

	if (x % 2 == y % 2)
		return x - y;
	if (y % 2)
		return 1;
	return -1;
}

void sir(int n, int a[])
{
	int i;
	for (i = 0; i < n; i++)
	{
		if ((i + 1) <= 2)
		{
			a[i] = 1;
		}
		else 
		{
			a[i] = 3 * a[i - 1] - a[i - 2];
		}
	}
	qsort(a, n, sizeof(int), compara);
}

int main()
{
	int a[6];
	sir(6, a);

	int i;
	for (i = 0; i < 6; i++)
	{
		printf("%d ", a[i]);
	}
}



#12
ccdsah

ccdsah

    Senior Member

  • Grup: Senior Members
  • Posts: 2,581
  • Înscris: 16.03.2013
Quick sort are complexitate O(n^2) in cazul cel mai rau si O(n*log(n));
Algoritmul la are m-am gandit eu foloseste 2 siruri s, si sirul a
Astfel s[1]=1; s[2]=1;nr_imp=2;a[1]=1;a[2]=1;
pentru i de la 2 la n executa s[i]=3*s[i-1]-s[i-2]; daca s[n] e impar atunci incrementez nr_imp; a[nr_imp]:=s[i];
sfarsit pentru
pentru i de la 3 la n executa
daca s[i] e par atunci incrementez nr_imp; a[nr_imp]=s[i];

Complexitate O(2*n)
Pentru lungimea maxima a sirurilor (n<20) mi se pare mai util sa folosesc un sir in plus decat sa fac o sortare fie ea si quicksort

#13
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
E usor de inlocuit sortarea in acest caz, dar n-am vrut sa-mi bat capul :)

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

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