Team BlueWater Game Online Tutorial's
Bine ati venit la Team-BlueWater!!Tutorial's 4 all Games!

C++, Clasa IX, Partea II

Go down

C++, Clasa IX, Partea II

Post  Karma on Sun Jul 31, 2011 7:31 am

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:

Code:
tip_data nume[dimensiune]
int a[100]

float b[200]

Tablourile unidimensionale se citesc astfel:

Code:
#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];
      }
}

* a[100] = am citit un vector de tip intreg, cu maxim 100 de elemente.

* 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:

Code:
tip_data nume[Numar de linii][Numar de coloane]

int a[100][200]

float b[200][300]


Tablourile bidimensionale se citesc astfel:

Code:
#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];
}
[/color]


Acuma ca stiti cum se citesc... sa facem un exercitiu de incalzire. Se citesc dimensiunea si elementele unui vector a. Sa se afiseze si sa se calculeze suma, produsul si media aritmetica a elementelor citite.

Code:
#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;

}



Bun... Acuma cum divizam un vector in unul sau mai multi vectori? Simplu... trebuie sa numaram elementele vectorilor pe care ii construim cu nr++ :

Code:
#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;
}



Algoritmul de sortare a elementelor crescator sau descrescator prin metoda BULELOR


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:

Code:


do                                            //sa se activeze urmatoarea secventa de actiuni cat timp conditia este/nu este implinita.

{
      secventa de actiuni;

}while(conditie)



Algoritmul bubblesort:

Code:


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)



Exercitii:

Code:


//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]<<" ";
   }

}



Code:


//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;

}




[color=#808080]
Code:


//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]<<" ";
}


Baza de date (sau "biblioteca") string.h

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:

Code:
#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)

*cin.get() folosim cand avem mai multe siruri de citit.

*sir2 este deja scris, dar daca nu am fi scris cin.get(sir2,100)... s-ar fi afisat numai "Eu".

[color=#FF8C00]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.

sir="eu sunt dezamagit ca daniel ghita a pierdut contra turcului la finala k1"

caracter = 'a'

Se va afisa: "amagit ca daniel ghita a pierdut contra turcului la finala k1"


9. strstr(sir1,sir2) -> se cauta un sir2 in sir1 si se afiseaza sirul obtinut incepand cu sir2.

sir1="Kickboxing"
sir2="box"
strstr(sir1,sir2) = "boxing"


Dupa terminarea acestui tutorial, puteti spune ca ati invatat bazele c++ului. Sper ca a fost clar si usor de inteles. Daca aveti intrebari, nu ezitati sa le puneti.
avatar
Karma
Admin
Admin

Mesaje : 1092
Data de inscriere : 2011-04-22
Varsta : 27
Localizare : Craiova

View user profile http://team-bluewater.forumz.ro

Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum