Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Functii si parametri
Last Updated: Apr 19 2014 13:35, Started by
George02
, Apr 18 2014 13:07
·
0
#1
Posted 18 April 2014 - 13:07
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
Posted 18 April 2014 - 14:56
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
Posted 18 April 2014 - 15:35
Un array e prin definitie (in C/C++) un pointer.
int sir(int n, int a[20]) { a[0] = 1; a[1] = 2; ... } |
#5
Posted 18 April 2014 - 19:21
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
Posted 18 April 2014 - 20:34
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
Posted 18 April 2014 - 20:45
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
Posted 18 April 2014 - 21:25
"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
Posted 18 April 2014 - 22:34
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. |
#11
Posted 19 April 2014 - 09:56
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
Posted 19 April 2014 - 12:53
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
Posted 19 April 2014 - 13:35
E usor de inlocuit sortarea in acest caz, dar n-am vrut sa-mi bat capul
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users