Sunteți pe pagina 1din 5

9/18/2014

Info C++ Grupa 1: Teorie - Recursivitate ,Structuri,Siruri de caractere

Acestsitefolosetecookieuripentruaoferiservicii.Dacfolosiiacestsite,sunteideacordcuutilizareacookieurilor.

Aflaimaimulte

InfoC++Grupa1
MartaAlina,MartaIulia,SalaAnamaria,TopaiAnca,CatarigClaudiu

TeorieRecursivitate,Structuri,Siruridecaractere
Recursivitate
Recursivitateesteproprietateafunctiilordeaseautoapela.
(Unarboreesteformatdinramuri.
Oramuraesteformatadinramuri
maimici.Oramuramaimicaeste
formatadinramurisimaimici....)

Pagini
Paginadepornire
TeorieRecursivitate,Structuri,Siruride
caract...
Problemestructuri(v.bac)
Problemesiruridecaractere(v.bac)
Problemerecursivitate(v.bac)
LLSICreare,Parcurgere
LLSIInserare

Structuraesteformatadin:

LLSIStergere
ProblemeLLSI(clasa)

tipfunctie_recursiva(parametruformal)
{..
..
..
conditiedeoprire
ramuradecontinuare
functie_recursiva(parametruformalmodificat)
}
Toateinstructiuniledinprogramseexecuta
decateoriesteapelatafunctia.
Oricefunctierecursivatrebuiesacontina
ocinditiedeoprirerespectiv,de
continuare.
Lafiecarereapelalfunctieiseexecuta
aceeassegventadeinstructiuni
Lafiecarereapel,inzonade
stivaamemoriei:
seocupaunnivelnou
sememoreazavaloareaparametrilorformalitransmisiprinvaloare
adresaparametrilorformalitransmisiprinreferinta
adresaderevenire
variabilelecuvaloriledinmomentulrespectiv
Obs:Toateinstructiuniledinsubprogramseexecutapentrufiecarereapel
seexecutainstructiuniledinfunctiepanalainstructiuneadereapel
seexecutadinnouaceeassegventadeinstructiunipanalaconditiade
oprire
procedeulsereiapanalaintalnireaconditieideoprire

ProblemeLLSI(v.bac)

WicWacWoe

Arhivblog
2010(1)
mai(1)
BlogInformatica

PicturesofWinnieThePooh

Pentrufiecareapelsasalvatinstiva
unnivel,apoipentrufiecaredintre
acesteapeluriseexecutainstructiunile
ramaseinfunctiecuvaloareadatelor
dinvarfulstivei(atentie!vorfiin
ordineinversaintroduceriilorinstiva).

Exemplu:

http://infogrupa2.blogspot.ro/p/recursivitate-teorie.html

1/5

9/18/2014

Info C++ Grupa 1: Teorie - Recursivitate ,Structuri,Siruri de caractere

Seiasecventadeprogramcesevaafisapentrun=15,x=2?
voidF(intn,intx)
{if(x>n)cout<<0elseif(x%4<=1)F(n,x+1)else{f(n,x+3)cout<<1}}

Rezolvare:n=15x=2xnuestemaimaredecatntrecemperamuraelse
2%4=0estemaimicdecat1facemF(15,3)x3%4<=1=>F(15,4)
x4%4<=1=>F(15,5)
x5%4<=1=>F(15,6)
x6%4<=1(=2)trecemlaurmatoruelse=>F(15,9)
x9%4<=1=>F(15,10)
x10%4<=1(=2)=>F(15,13)
x13%4<=1=>F(15,14)
x14%4<=1(=2)=>F(15,17)
x
Acumgolimstiva
ptfiecareelseapelatafisam"1"

EarnMoneyOnline
RANGEROVER
WINABRANDNEW
RANGEROVER
VOGUE!!!
trkur.com

AdHitzAds

Rezultat"01111"
Verificaredacaunnumaresteprim.
#include<iostream.h>
intprim(intn,intd)
{if(d==1)return1
elseif(n%d==0)return0
elsereturnprim(n,d1)
}
intmain()
{intn
cin>>n
if(prim(n,n/2)==1)cout<<"esteprim"elsecout<<"nuesteprim"}

Citireasiafisareaunuivector

#include<iostream.h>
inta[20],n
voidcitire(inta[20],intn)
cin>>a[n]
if(n>1)citire(a,n1)
}

voidafisare(inta[20],intn)
if(n>1)afisare(a,n1)
}
intmain()
{cout<<"n="cin>>n
citire(a,n)
afisare(a,n)
}

Ciframaxima/minima/cmmdcdintrunvector.
intmaxim(inta[30],intn)
{if(n==0)returnmax
elseif(a[n]>max)max=a[n]
returnmaxim(a,n1)
}
intminim(intnr)
http://infogrupa2.blogspot.ro/p/recursivitate-teorie.html

2/5

9/18/2014

Info C++ Grupa 1: Teorie - Recursivitate ,Structuri,Siruri de caractere

{if(nr==0)returnmin
elseif(nr%10returnminim(nr/10)
}
intcmmdc(inta,intb)
{if(a==b)returna
elseif(a>b)returncmmdc(ab,b)
elsereturncmmdc(a,ba)
}

Structuri

Structuraesteuntipdedatastructuralcareimipermite
asociereamaimultordatecarepotfidetipuridiferite.
ex:datedespreunelev:
nume
prenume
medieinformatica
datedespreunmaterial
denumire
pret
cantitate
Ostructuraeedefinesteprin:
struct[<nume>]
{<tip1>camp11,camp12,...
<tip2>camp21,camp22,...
...
}[var1,var2...]
ex:
structelev
{charnume[20],prenume[20]
unsignednota
}//sadefinittipulelev
eleva[100],x//amdeclaratvariabiledetipulelev
ex:
struct
{chardenumire[30]
unsignedpret,cantitate
}v[100],aux
Structurademaisusesteanonima.Inacestcazvariabileletrebuie
declaratedupainchidereaacoladei.
Accesareainformatiilor:
nume_var.nume_camp
ex:x.nume
a[i].nume
Informatiileasociateuneistructurisenumesc"campuri"sau"membri".
ex:pentrustrructuraelevavemcmpurilenume,prenumesinota
pentrustructuraanonimaavemcampuriledenumire,pretsicantitate

http://infogrupa2.blogspot.ro/p/recursivitate-teorie.html

3/5

9/18/2014

Info C++ Grupa 1: Teorie - Recursivitate ,Structuri,Siruri de caractere

Problema:
Pentrueleviiuneiclasesecunoscnumele,prenumelesimedia.Saseafiseze
numele
elevuluicuceamaimaremedie.
#include
structelev
{charnume[20],prenume[30]
floatmedia
}a[40],aux
intn,i,k
voidcitire(eleva[40],int&n)
{inti
cout<<"n="cin>>n
for(i=1i<=ni++){cout<<"nume"<<i<<":"cin>>a[i].nume
cout<<"prenume"<<i<<":"cin>>a[i].prenume
cout<<"medie"<<i<<":"cin>>a[i].medie
}
}
intmaxim(eleva[40],intn)
{inti,k
floatmax
max=0
for(i=1i<=n,i++)if(a[i].med>max){max=a[i].med'
k=i
}
cout<<a[i].nume
}
intmain()
{citire(a,n)
maxim(a,n)
}

Siruridecaractere

Definitie:Succesiunea de caractere intr-un vector (tablou


unidimensional) de tip char.
ex: char cuv[15]; <- tablou de maxim 15 elemente de tip
"char"
Acesta poate fi reprezentat in memorie astfel:
ex:cuv[15]

12

1
2
13 14

10

11

Citirea si afisarea:
# include < iostream.h >
int main()
{char cuv[15];
//citirea
cout << "introdu cuvant";
cin >> cuv;
//afisarea
http://infogrupa2.blogspot.ro/p/recursivitate-teorie.html

4/5

9/18/2014

Info C++ Grupa 1: Teorie - Recursivitate ,Structuri,Siruri de caractere

cout << "cuvant citit" << cuv;


}
Cu cout si cin se pot citi doar siruri ce nu contin caractere
albe.
Pentru celelalte se foloseste functia cin.get.
Functii care opereaza cu sirurile:
!Este necesara introducerea bibliotecii string.h
strlen -determina lungimea unui sir;
strcpy-copiaza un sir in alt sir;
strcat(char *dest,const char *sursa)-adauga la
sfarsitul sirului destinatie o copie a sirului sursa;
strchr-cauta aparitii ale unui caracter in sir de la
stanga la dreapta,returnand adresa primei aparitii;
strstr-cauta aparitii ale unui subsir in sir si
returneaza adresa primului elem din subsir;
strcmp-compara 2 siruri,returneaza o valoare <
decat 0 data s10 daca s1>s2;

Paginadepornire
Abonaivla:Postri(Atom)

Fish

http://infogrupa2.blogspot.ro/p/recursivitate-teorie.html

5/5

S-ar putea să vă placă și