thekidno1 Posted June 25, 2013 Report 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
ionut.hulub Posted June 25, 2013 Report 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
thekidno1 Posted June 25, 2013 Author Report 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
yoyois Posted June 25, 2013 Report 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
thekidno1 Posted June 25, 2013 Author Report 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