C++

Resurse
C++ - Ghid pentru incepatori

C++ fara mistere. Ghid pentru autodidacti

Programare C si C++ pentru Linux

Am realizat un microblog educational la adresa

http://www.edmodo.com/public/profudeinfo/c

de unde puteti downloada gratuit resurse esentiale despre limbajul C++.


Iata o mica parte din resurse:

Clasa a XI -a

1. Sortarea crescatoarea a unui tablou unidimensional in C++

#include<iostream.h>

typedef int sir[25];
sir v;

int i, n, ok, aux;

void main()
{
cout<<”n=”;
cin>>n;

for(i=1;i<=n;i++)
{
cout<<”v["<<i<<"]=”;
cin>>v[i];
}

for(i=1;i<=n;i++)
cout<<v[i]<<” “;

//sortarea crescatoare

do{

ok=1;

for(i=1;i<=n-1;i++)
if(v[i]>v[i+1])
{

// interschimbare
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;

ok=0;
}

}while(ok!=1);

cout<<”——————–”<<endl;
for(i=1;i<=n;i++)
cout<<v[i]<<” “;

}

2. Cautarea binara intr-un tablou unidimensionalC++

#include<iostream.h>
#include<math.h>

typedef int sir[25];
sir v;
int i,n,li,ls,lm, gasit;

void main()
{
cout<<”n=”;
cin>>n;

cout<<”Cauta elementul =”;
cin>>x;

for(i=1;i<=n;i++)
{
cout<<”v["<<i<<"]=”;
cin>>v[i];
}

for(i=1;i<=n;i++)
cout<<v[i]<<” “;

li=1;
ls=n;
gasit=0;

while((li<=ls)&&(!gasit))
{

lm=floor((li+ls)/2);
if(v[lm]<x)
{
li=lm+1;
}
else if(v[lm]==x)
{
cout<<”l-am gasit pe pozitia”<<lm;
gasit=1;
}
else ls=lm-1;
}

}

3. Interclasarea a doua tablouri unidimensionala in C++

#include<iostream.h>
typedef int sir[25];
sir a,b,c;
int n,m,i,j,k;

void main(void)
{
cout<<”Introduceti lungimile celor 2 vectori a si b= “;
cin>>m>>n;

// cititi elementele celor 2 vectori ordonati crescatori
for(i=1;i<=m;i++)
{
cout<<”a["<<i<<"]=”;
cin>>a[i];
}

for(i=1;i<=n;i++)
{
cout<<”b["<<i<<"]=”;
cin>>b[i];
}

// interclasarea

i=1;
j=1;
k=0;

while((i<=m)&&(j<=n))
{

if(a[i]<b[j])
{
k++;
c[k]=a[i];
i++;
}

else {
k++;
c[k]=b[j];
j++;
}

}

// adaugam elementele ramase neparcurse

if(i<=m)
{
while(i<=m)
{
k++;
c[k]=a[i];
i++;
}

}

if(j<=n)
{
while(j<=n)
{
k++;
c[k]=b[j];
j++;
}
}

// afisez vectorul interclasat
for(i=1;i<=k;i++)
cout<<c[i]<<”  “<<endl;

}

16 Responses to “C++”

  1. 69gorro69 says:

    foarte tare site-ul…o alta metoda de a invatza…tine-o tot asa!!

  2. bogdan says:

    Daca ati putea sa faceti unu cu reuniunea a 2 vectori

    Multumesc mult

  3. adrian says:

    banuiesc ca acum elevii nu mai scuz daca nu shtiu algoritmii astia la ora :D

  4. profu.info says:

    Pe mine ma intereseaza ca ei sa tina minte ideea algoritmului, apoi sa fie capabili sa o implementeze corect intr-un limbaj de programare.

    Succes Adrian!

    Vacanta placuta.

  5. destyny says:

    e naspa

  6. rares says:

    foooarte tare site-ul!in acest mod,educatia in Romania se poate dezvolta armonios!

  7. cazacu says:

    E bine asa si vrem mai mult multumim pentru ca ne ajutati sa invatam.

  8. profu.info says:

    @Cazacu, ma bucur ca resursele mele va ajuta sa invatati mai bine, o sa mai adaug si altele in perioada urmatoare.

    Keep in touch :)

  9. Paul says:

    Putem sa postam si noi probleme rezolvate/algoritimi si sa facem un forrum?Ar fii mult mai interesant…intrati si pe infoarena(www.infoarena.ro)

  10. Sandu Andrei says:

    Sortarea crescatoarea a unui tablou unidimensional in C++ nu e facuta corect!!! aici trebuie schimbat:

    do{
    ok=1;
    for(i=1;i<=n-1;i++)

    cu

    for(i=0;i<n-1;i++)

    Spor la treaba in continuare.

  11. Bbyb says:

    nu neaparat e bine si cu for(i=1;i<=n-1;i++)

    :P

  12. Claudia says:

    Era corectt` :-? sii
    for(i=1;1<n;i++)
    nu` ? :D

  13. gabi says:

    do{
    ok=1;
    for(i=1;i<=n-1;i++)

    cu

    for(i=0;i<n-1;i++)
    ambele is corecte. daca pornesti de la 0 te opresti inainte de n (ca sa ai acelasi nr de elemente).
    daca pornesti de la 1 te opresti chiar la n.
    Daca nu stiti bine info nu va mai bagati asa aiurea… chiar n-are rost

  14. u0m3 says:

    @gabi:
    Din punct de vedere al functionalitatii algoritmului e corect in ambele moduri. Din punct de vedere al managementului memoriei, in C/C++ e mai corect
    for(i=0;i<n-1;i++){…}

    Problemele apar cand n este egal cu numarul de elemente din vector.

    In exemplu v este un sir de 25 int… In momentul in care vei dori sa folosesti toate cele 25 de elemente, vei intalni o eroare (probabil run-time), ce apare datorita faptului ca in C/C++ un vector cu 25 de elemente contine toate elementele de la 0 la 24 inclusiv.

    Astfel:

    for(i=1; i<=25; i++)
    {
    v[i]=i;
    }

    va incerca sa stocheze la adresa v[25] valoare 25… dar el nu are alocata o asemenea adresa…

    Pentru a preveni aceasta eroare se pot face 2 corectari:

    1.
    for(i=1; i<=25; i++)
    {
    v[i-1]=i;
    }
    2.
    Cea mentionata de Sandu Andrei.

    P.S.: In exemplu eu nu am vazut nici un fel de verificare pentru lungimea vectorului… asa ca problema poate aparea oricum. In mod normal, undeva dupa citirea lui n ar trebui verificat daca n < 25

    Acum, as avea si eu o curiozitate: de ce in manualele de scoala se scriu vectori in stil Pascal desi manualul este de C/C++ (sau "bilingv")?

Leave a Reply