thekidno1 Posted June 25, 2013 Report Share Posted June 25, 2013 De curand am luat o carticica de c++ pentru clasa a 10-a (eu trec a 9-a) si nu prea m-am familiarizat cu subprogramele.Am incercat sa fac un program pentru a scoate un element dintr-un vector de pe o pozitie stabilita.Am reusit sa o fac fara subprogram dar cand am bagat cu subprogram imi afiseaza cateva tampenii dupa rezultat.De ex am vectorul nr.elem=4,v={1,2,3,4}si ii dau sa stearga elementul de pe pozitia 2.Il sterge si afiseaza 1 3 4 2293116.Ce am gresit?Codul fara subprogram:[C++] #include<iostream> using namespace std; main() { int v[100],n,i,j,p; cout<< - Pastebin.comCodul cu subprogram:[C++] #include<iostream> using namespace std; void sterg(int v[100],int n,int p) {i - Pastebin.com Quote Link to comment Share on other sites More sharing options...
ionut.hulub Posted June 25, 2013 Report Share Posted June 25, 2013 Ceea ce e gresit e faptul ca tu il decrementezi pe 'n' in functie si modificarea e valabila doar in functie. Cand te intorci in main 'n' va fi tot 4 si deasta iti afiseaza un element in plus. Ar trebui sa dai return la n si sa il salvezi cand apelazi functia sau sa il trimiti pe 'n' ca pointer sau prin referinta. 1 Quote Link to comment Share on other sites More sharing options...
thekidno1 Posted June 25, 2013 Author Report Share Posted June 25, 2013 Ceea ce e gresit e faptul ca tu il decrementezi pe 'n' in functie si modificarea e valabila doar in functie. Cand te intorci in main 'n' va fi tot 4 si deasta iti afiseaza un element in plus. Ar trebui sa dai return la n si sa il salvezi cand apelazi functia sau sa il trimiti pe 'n' ca pointer sau prin referinta.Rezolvat.L-am trimis prin referinta "&".Multumesc Quote Link to comment Share on other sites More sharing options...
yoyois Posted June 25, 2013 Report Share Posted June 25, 2013 (edited) Eu nu inteleg de ce este numit "Subprogram"? Mi se pare a fi o functie. Apelezi o functie .. nu un sumbprogram (Mi se pare ciudat numit in carti).Si "firul de executie" ar trebui sa poarte numele de subprogram ... Anyway: Subprogramele astea Inlocuiesc (foarte des) actiuni decise prin IF.Cred ca toata "teoria" lor e ca au fost inventate ca sa nu mai scrii acelasi fragment de cod de mai multe ori ci sa-l apelezi mai usor.Mie mi se par foarte banale si am auzit de e recomandat sa le eviti (in concursuri/competitii) deoarece apelarea mananca memorie si timp de executie.(Desigur sunt cazuri in care folosirea lor ajuta si executia si comoditatea programatorului...)LE:Am pus in loc de "int n" din functie "int & n" si a mers.adica: &n reprezinta adresa lui n. Tu in loc sa-i transmiti valoarea ii transmiti adresa (modificarile aduse lui n in functie se fac in spatiul de memorie a lui n real .. nu se creeaza un alt n in functie) (vezi capitolui pointeri.) Edited June 25, 2013 by yoyois Quote Link to comment Share on other sites More sharing options...
thekidno1 Posted June 25, 2013 Author Report Share Posted June 25, 2013 Eu nu inteleg de ce este numit "Subprogram"? Mi se pare a fi o functie. Apelezi o functie .. nu un sumbprogram (Mi se pare ciudat numit in carti).Si "firul de executie" ar trebui sa poarte numele de subprogram ... Anyway: Subprogramele astea Inlocuiesc (foarte des) actiuni decise prin IF.Cred ca toata "teoria" lor e ca au fost inventate ca sa nu mai scrii acelasi fragment de cod de mai multe ori ci sa-l apelezi mai usor.Mie mi se par foarte banale si am auzit de e recomandat sa le eviti (in concursuri/competitii) deoarece apelarea mananca memorie si timp de executie.(Desigur sunt cazuri in care folosirea lor ajuta si executia si comoditatea programatorului...)Am pus in loc de "int n" din functie "int & n" si a mers. Quote Link to comment Share on other sites More sharing options...