Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
[Tema] Ordonare vector: impar crescator, par descrescator
Last Updated: May 07 2016 13:10, Started by
1marius1
, May 06 2016 15:10
·
0
#1
Posted 06 May 2016 - 15:10
Salut!
Am urmatoarea problema: [ https://i.imgur.com/OgtqRVv.jpg - Pentru incarcare in pagina (embed) Click aici ] M-am gandit sa o rezolv in felul urmator: -pun toate numerele pare intr-un alt vector(par[100]) -pun toate numerele impare intr-un alt vector(impar[100]) -apoi sortez vectorii: cel par descrescator, iar cel impar crescator -apoi interclasez vectorii: incep cu prima valoare de la impar si apoi prima de la par, apoi a doua de la impar... s.a.m.d. Mi se pare ca trebuie sa fac prea multe operatii si e si de scris mult. Imi puteti da vreo ideie cum as putea sa fac subprogramul mai simplu si mai eficient? Multumesc anticipat. Edited by 1marius1, 06 May 2016 - 15:11. |
#2
Posted 06 May 2016 - 15:26
Crezi ca ai nevoie de acei vectori, vector(par[100] si vector(impar[100]? De la acest lucru = 2 inmultit cu n este totdeauna un numar par - pleaca tot.
Edited by poadol, 06 May 2016 - 15:28. |
#3
Posted 06 May 2016 - 15:26
Ia două variabile auxiliare, par = 2 * n şi impar = 1;
pentru i ← 0, n-1, 2 v[i] ← impar; v[i + 1] ← par; par ← par - 2; impar ← impar + 2; |
#4
Posted 06 May 2016 - 18:34
sftpdt, on 06 mai 2016 - 15:26, said:
Ia două variabile auxiliare, par = 2 * n şi impar = 1; pentru i ← 0, n-1, 2 v[i] ← impar; v[i + 1] ← par; par ← par - 2; impar ← impar + 2; Da se pare ca era foarte simplu... dar eu nu am fost atent la cerinta... Scrie ca se construieste in memorie vectorul... Eu credeam ca am deja am vectorul si trebuie sa-l sortez in felul acela. void valuri(unsigned n, int v[]) { int par=2*n,impar=1; for(int i=0;i<2*n-1;i+=2) { v[i]=impar; v[i+1]=par; impar+=2; par-=2; } } In cerinta spune ca: 2<=n<=50 si ca vectorul are 2*n elemente. Ar trebui sa pun numarul maxim de elemente in subprogram sau "sa il las sa isi ia" el dimensiunea? Adica v[100] ? Edited by 1marius1, 06 May 2016 - 18:47. |
#5
Posted 06 May 2016 - 20:19
#6
Posted 06 May 2016 - 20:31
#8
Posted 07 May 2016 - 11:20
1marius1, on 06 mai 2016 - 18:34, said: void valuri(unsigned n, int v[]) { int par=2*n,impar=1; for(int i=0;i<2*n-1;i+=2) { v[i]=impar; v[i+1]=par; impar+=2; par-=2; } } 1, 8 , 3, 6, 5, 4, 7, 2 (1) 1 + 8 = 9 (2) 3 + 6 = 9 (3) 5 + 4 = 9 (4) 7 + 2 = 9 (1) sir[0] + sir[1] = 2*n+1 (2) sir[2] + sir[3] = 2*n+1 (3) sir[4] + sir[5] = 2*n+1 (4) sir[6] + sir[7] = 2*n+1 sum = 2*n+1 (x) sir[x] + sir[x+1] = sum; sir[x] = x + 1 sir[x+1] = sum - sir[x] sir[x+1] = sum - (x+1) for( i=0; i<sum; i++) { sir[i++] = i; // impar sir[i] = sum-i; // par } Edited by MarianG, 07 May 2016 - 11:22. |
#9
Posted 07 May 2016 - 13:10
MarianG, on 07 mai 2016 - 11:20, said:
n=4 1, 8 , 3, 6, 5, 4, 7, 2 (1) 1 + 8 = 9 (2) 3 + 6 = 9 (3) 5 + 4 = 9 (4) 7 + 2 = 9 (1) sir[0] + sir[1] = 2*n+1 (2) sir[2] + sir[3] = 2*n+1 (3) sir[4] + sir[5] = 2*n+1 (4) sir[6] + sir[7] = 2*n+1 sum = 2*n+1 (x) sir[x] + sir[x+1] = sum; sir[x] = x + 1 sir[x+1] = sum - sir[x] sir[x+1] = sum - (x+1) for( i=0; i<sum; i++) { sir[i++] = i; // impar sir[i] = sum-i; // par } Complexitatea nu este aceeasi la cele doua variante? Varianta ta pare mai simpla. Edited by 1marius1, 07 May 2016 - 13:13. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users