C++

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

Metoda BUBBLE SORT

#include<iostream.h>

int v25];
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 unidimensional –  C++

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

int v[25];
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;

}

26 thoughts on “C++

  1. 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.

  2. 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)

  3. 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.

  4. 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

  5. @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")?

  6. De acord cu Sandu Andrei….va compara dupa programul intitial…mail la final a[n] cu a[n+1] (i=n). Aici iti iese din vector si programul iti va da eroare. Bafta…si ms..uitasem.

  7. cine ma poate ajuta si pe mine am de facut urmatoarea problema
    Se da un numar intreg:
    – inversati numarul
    -eliminati cifrele pare

  8. Mda eu ma bucur ca voi discutati despre toata chestia asta da nu inteleg de ce la sortareaa crescatoare pui for(i=1;i<=n-1;i++) adic de ce e n-1? ( fara ironie, pentru ca eu chiar nu stiu informatica datorita metodei de predare a unei profesoare ****)

    • @Ada

      Se compara elementele invecinate, adica v[i] cu v[i+1], daca i =1 atunci v[1]cu v[2], i=2 => v[2] cu v[3], … la ultimul pas, penultimul cu ultimul, adica cand i=n-1se compara v[n-1] cu v[n].

      Sper ca acum e mai clar 🙂

  9. domnule profesor de info spuneti-mi si mie o carte de informatica foarte buna de invatat programarea in C++ si mai multe chestii.Sunt in clasa a-9 la mate-info intensiv si vreau sa invata programarea.

  10. Va rog sa faceti un cod in C++ pentru scaderea a doua numere :
    // Program de adunare a doua numere:

    // ——————————–

    // primul numar:

    var nr1 = Vector(5);
    nr1[0] = 3;
    nr1[1] = 4;
    nr1[2] = 5;
    nr1[3] = 6;
    nr1[4] = 7;

    // al doilea numar:

    var nr2 = Vector(5);
    nr2[0] = 1;
    nr2[1] = 5;
    nr2[2] = 6;
    nr2[3] = 7;
    nr2[4] = 8;

Leave a comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Time limit is exhausted. Please reload the CAPTCHA.