Descriere:Tutorial ce apartine de forumul europacs.ro
Download:-
Autor:C++
Sursa (Link-ul oficial):www.europacs.ro
Propria parere:Materia c++ partea a II-a
Tutorialul:
Tablouri
Exista 2 tipuri de tablouri... Unidimensionale (Vectori) si Bidimensionale (Matrici). In a noua se pune mai mult accent pe cele unidimensionale. Tablourile sunt structuri de date care au una sau mai multe dimensiuni.
Tablourile unidimensionale au forma:
Cod: Selectaţi tot
tip_data nume[dimensiune]
int a[100]
float b[200]Cod: Selectaţi tot
#include<iostream.h>
void main()
{
int i,n,a[100];
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
}* n reprezinta numar de elemente contiunte de vectorul a[100].
* i reprezinta contorul care se plimba din element in element si care arata pozitia lui (elementului).
Tablourile bidimensionale au forma:
Cod: Selectaţi tot
tip_data nume[Numar de linii][Numar de coloane]
int a[100][200]
float b[200][300]Cod: Selectaţi tot
#include<iostream.h>
void main()
{
int i,n,a[100];
cout<<"n=";
cin>>n;
cout<<"m=";
cin>>m;
for(i=1;i<=n;i++) //E acelasia lucru daca scrieti for(i=0;i<n;i++)... numai ca in acest caz vetzi avea linia 0, linia 1 si linia 2... in cazul cu i=1, vetzi avea linia 1, linia 2 si linia 3
for(j=1;j<=m;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}Cod: Selectaţi tot
#include<iostream.h>
void main()
{
int i,n,a[100],s=0,nr=0,p=1;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(i=1;i<=n;i++)
{
s=s+a[i];
nr++;
p=p*a[i];
}
cout<<"Suma elementelor este:"<<s<<endl;
cout<<"Produsul elementelor este:"<<p<<endl;
cout<<"Media aritmetica a elementelor este:"<<(float)s/nr<<endl;
}Cod: Selectaţi tot
#include<iostream.h>
void main()
{
int i,n,a[100],nr1=0,s1=0,s2=0,nr2=0,b[100],c[100];
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(i=1;i<=n;i++)
{
if(a[i]>20) //Daca elementele din vectorul a sunt mai mare decat 20
b[nr1++]=a[i]; //Sa fie introduse in vectorul b,
else //iar daca nu
c[nr2++]=a[i]; //sa fie introduse in vectorul c.
}
//Acuma... daca vrem sa facem operatii cu elementele din acesti vectori noi... trebuia sa facem astfel:
for(i=1;i<=nr1;i++)
s1=s1+b[i];
for(i=1;i<=nr2;i++)
s2=s2+c[i];
cout<<"Suma elementelor din vectorul b este "<<s1<< "iar suma elementelor din vectorul c este<<s2<<endl;
}Sunt 4 pasi simpli:
1.Trebuie sa gasim un elemente care nu corespunde criteriului de sortare; aceasta se specifica prin folosirea unei variabile numita gasit, care se intializeaza cu 1.
2.Se parcurg si celalate elem. ale vectorului intr-o bucla for. Se pune conditia pentru: Sortarea crescatoare >, sau sorterea descrescatoare <.
3.Se interschimba intre ele elementele, folosind o varianta intermediara numita aux.
4.Pasi 1-3 vor fi inclusi intr-o bucla do-while.
Do-While are forma:
Cod: Selectaţi tot
do //sa se activeze urmatoarea secventa de actiuni cat timp conditia este/nu este implinita.
{
secventa de actiuni;
}while(conditie)Cod: Selectaţi tot
int gasit,aux,a[100],i,n;
do
{
gasit=1; //aceasta secventa se va repeta pana vor fi parcurse toate elementele vectorului a. Dupa accea gasit va lua valoarea 1, si secventa se va oprii.
for(i=1;i<n-1;i++) //folosim n-1, deoarece comparam elementele intre ele; primu cu al doilea, al doilea cu al treilea s.a.m.d...
if(a[i]>a[i+1])
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
gasit=0
}
}while(gasit==0)Cod: Selectaţi tot
//Se citesc dimensiunea si elementele unui vector a. sa se realizeze un program care afiseaza acele elemente ale
//vectorului care sunte egale cu suma dintre succesorul si predecesorul acestora.
#include<iostream.h>
void main()
{
int n,i,a[100];
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(i=1;i<=n;i++)
{
if(a[i-1]+a[i+1]==a[i])
cout<<a[i]<<" ";
}
}Cod: Selectaţi tot
//Se citesc dimensiunea si elementele unui vector a. sa se construiasca un vector b care sa suprinda numerele pozitive si un vector c care sa cuprinda elementele
// negative dintre elem. vectorului a. sa se afiseze suma si produsul din vectorul b, precum si din c.
#include<iostream.h>
void main()
{
int n,i,s=0,p=1,a[100],c[100],b[100],s1=0,s2=0,p1=1,p2=1,nr1=0,nr2=0;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(i=1;i<=n;i++)
{
if(a[i]>0)
b[nr1++]=a[i];
if(a[i]<0)
c[nr2++]=a[i];
}
for(i=1;i<=nr1;i++)
{
cout<<b[i]<<" ";
s1=s1+b[i];
p1=p1*b[i];
}
cout<<"Suma nr. poz este:"<<s1<<endl;
cout<<"Produsul nr. poz este:"<<p1<<endl;
for(i=1;i<=nr2;i++)
{
cout<<c[i]<<" ";
s2=s2+c[i];
p2=p2*c[i];
}
cout<<"Suma nr. neg. este:"<<s2<<endl;
cout<<"Produsul nr. neg este:"<<p2<<endl;
}Cod: Selectaţi tot
//Sa se scrie un program, in care se citeste un vector a, cuprinzand n elemente (0 pana in 1000). Sa se afiseze in ordine crescatoare elementele.
#include<iostream.h>
void main() //7
{
int a[1000],i,n,aux,gasit=1;;
do
{
cout<<"n=";
cin>>n;
}while(n<=0 || n>=1000);
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
do
{
gasit=0;
for(i=1;i<=n-1;i++)
if(a[i]>a[i+1])
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
gasit=1;
}
}while(gasit==0);
for(i=1;i<=n-1;i++)
cout<<a[i]<<" ";
}Sunt structuri asemenatoare cu tabloruile, insa sunt de tip char.
Au forma char nume[dimensiune+1].
De ex.:
char sir[100];
char s[200];
Citirea unui sir de caractere:
Cod: Selectaţi tot
#include<iostream.h>
#include<string.h>
char sir1[100],sir2[100]="Eu mananc ca nehalitul";
cin.get(sir2,100)
cin.get();
cout<<"Sirul 1 este:";
cin.get(sir1,100)*sir2 este deja scris, dar daca nu am fi scris cin.get(sir2,100)... s-ar fi afisat numai "Eu".
Functiile bibliotecii STRING.H:[/color
1. strlen(sir) -> Afiseaa lungimea unui sir de caractere.
2. strrev(sir) -> Afiseaza sirul de caractere invers.
3. strcat(sir1,sir2) -> Lipeste/concateneaza/uneste doua siruri.
4. strupr(sir) -> transforma literele mici in litere mari. (a -> A, abc -> ABC)
5. strlwr(sir) -> transforma literele mari in litere mici. (viceversa de la 4)
6. strcpy(sir1,sir2) -> inlocuieste primul sir cu continutul celui de-al doilea sir.
7. strcmp(sir1,sir2) -> compara din punctul de vedere a lungimii si alfabetic daca:
a. sir1==sir2 -> Sirurile sunt egale
b. sir1<sir2 -> lungimea primului sir1 este mai mica decat lungimea sir2 (afiseaza in ordine alfabetica dupa caracterele care coincid)
c. sir1>sir2 -> viceversa de la b.
Strcmp se foloseste numai la testarea conditiilor.
8. strchr(sir,caracter) -> afiseaza sirul de la pozitia primului caracter gasit.
Cod: Selectaţi tot
sir="eu sunt dezamagit ca daniel ghita a pierdut contra turcului la finala k1"
caracter = 'a'9. strstr(sir1,sir2) -> se cauta un sir2 in sir1 si se afiseaza sirul obtinut incepand cu sir2.
Cod: Selectaţi tot
sir1="Kickboxing"
sir2="box"
strstr(sir1,sir2) = "boxing"
