Chirurgia endoscopică a hipofizei
"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală. Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale. www.neurohope.ro |
[TEMA] elementele negative de pe pozițiile pare cu divide et impera
Last Updated: Sep 10 2015 00:20, Started by
masternick
, Sep 04 2015 18:33
·
0
#1
Posted 04 September 2015 - 18:33
Salut tuturor !
Problema: Folosind metoda „Divide et impera” să se scrie programul care afișează toate elementele negative de pe pozițiile pare ale unui vector de numere întregi. Am scris mai jos codul. Imi afiseaza doar primul numar pe care il intilneste,si asta e normal. Cum as putea sa fac sa imi afiseze toate numerele ? #include <iostream> using namespace std; int div_pare(int *v,int s,int d){ int mid = (s+d)/2; int x,y; if(s>d) return -1; else{ if((v[mid]<0)&&(mid%2==0)) return v[mid]; x=div_pare(v,s,mid-1); y=div_pare(v,mid+1,d); if(x==-1&&y==-1) return -1; if(x==-1&&y!=-1) return y; else return x; } } int main(){ int v[]={1,2,-3,5,6,-8,-1,11,2,-12,-4}; int n = 11; int nr=div_pare(v,1,n); /* for(int i=1;i<=n;i++) if((v[i]<0)&&(i%2==0)) { cout<<v[i]<<" "; } */ cout<<nr; } |
#2
Posted 04 September 2015 - 19:04
E o problemă creată de tine ? E doat pt. exersare? Întreb deoarece Divide et Imperia nu cred că se pretează pt. o astfel de cerință...
Apropo ce faci instrucțiunile de după un return? De ex. uita-te la la return v[mid]. Dupa aceasta linie, el iese din program, incerci tu sa faci o recursie pe acolo dar degeaba. Iti arunca v[mid] daca if-ul e valid, si ? Mai gandeste-te putin. Dar revin, Divide et Impera nu se pretează pt. o cerință în care în primul rând, vectorul nu se sortează, iar mai mult, se cer toate valorile care întrunesc o condiție... Uite o problemă: Folosind Divide et Impera pe un vector sortat, afișați poziția pe care se găsește un număr citit de la tastatură. Dacă nu există numărul, afișează un mesaj. Edited by Rhesus, 04 September 2015 - 19:07. |
#3
Posted 04 September 2015 - 19:42
Da, e pentru exersare , da si problema de sus am gasito intrun test .
Uite mai jos codul de la problema care ai propuso tu : #include <iostream> using namespace std; int a=0; int div_et_imp(int *vector, int first, int last, int number){ if( first != last){ int mid = (last + first) / 2; div_et_imp(vector, first, mid,number); div_et_imp(vector,mid + 1,last,number); }else if(vector[first] == number){ cout<<first<<" "; a=1 ;} } int main(){ int num_cautat; int v[100]; int n; cout<<"n = "; cin>>n; for(int i = 0;i<n;i++){ cout<<"v["<<i<<"] = "; cin>>v[i]; } cout<<"key = "; cin>>num_cautat; div_et_imp(v,0,n-1,num_cautat); if(a<1){ cout<<"Numarul "<<num_cautat<<" nu a fost gasit"; } } Ce parere ai de cod , ce imbunatatiri ai face tu ? |
#4
Posted 04 September 2015 - 21:22
#5
Posted 04 September 2015 - 22:15
masternick, on 04 septembrie 2015 - 18:33, said:
Problema: Folosind metoda „Divide et impera” să se scrie programul care afişează toate elementele negative de pe poziţiile pare ale unui vector de numere întregi. Am rezolvat si problema de mai sus, cui ii trebuie, o las aici sa fie #include <iostream> using namespace std; int v[]={1,22,-3,5,6,-8,-1,11,2,-12,-4}; void div_et_imp(int v[], int first, int last){ if( first != last){ int mid = (last + first) / 2; div_et_imp(v, first, mid); div_et_imp(v,mid + 1,last); }else if(v[first]<0&&first%2==0) cout<<" "<<v[first]; } int main(){ div_et_imp(v,0,10); } Edited by masternick, 04 September 2015 - 22:18. |
#6
Posted 05 September 2015 - 00:11
Dar la un for (ceva; conditie; ceva+=2) te-ai gandit? Problema data de tine se face intr-o singura linie de cod. Si nu glumesc.
Edited by Rhesus, 05 September 2015 - 00:12. |
#7
Posted 05 September 2015 - 13:50
Rhesus, on 05 septembrie 2015 - 00:11, said:
Dar la un for (ceva; conditie; ceva+=2) te-ai gandit? Problema data de tine se face intr-o singura linie de cod. Si nu glumesc. Eu am nevoie sa o fac prin divide it impera ,ca sa inteleg complet cum functioneaza aceasta tehnica. Mai simplu ,fara DIV , s-ar putea asa de rezolvat : #include <iostream> using namespace std; int main(){ int v[]={1,2,-3,5,6,-8,-1,11,2,-12,-4}; int n = 11; for(int i=1;i<=n;i++){ if((v[i]<0)&&(i%2==0)) cout<<v[i]<<" "; } } |
#8
Posted 09 September 2015 - 08:00
Pune -7 pe prima pozitie in vector si vezi ce zice programu tau
|
#9
Posted 09 September 2015 - 23:08
masternick, on 05 septembrie 2015 - 13:50, said:
Eu am nevoie sa o fac prin divide it impera ,ca sa inteleg complet cum functioneaza aceasta tehnica. pe cand la tine, asa cum bine a evidentiat @Rhesus, se rezolva for ( index = 0; index < ARRAYSIZE; index+=2 ) { if ( array[index] < 0 ) { // print or add element to another array } } index+=2 // adica doar pozitiile pare |
#10
Posted 09 September 2015 - 23:27
|
#11
Posted 10 September 2015 - 00:20
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users