Informatică, întrebare adresată de pedrocico09owrrjm, 8 ani în urmă

Se considera un tablou liniar de dimensiunea n cu elemente numere intregi. Elaborati un program care va muta la inceputul tabloului data toate elementele diferite de zero, pastrind ordinea lor, iar toate elementele egale cu zero- la sfirsitul tabloului. Tabloul modificat sa se afiseze pe ecran
In C++

Răspunsuri la întrebare

Răspuns de me2018
0

#include <iostream>

#include <algorithm>

using namespace std;

int main()

{

  int v[30],n,j,i;

cin>>n;

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

      cin>>v[i];

    //sortez elementele

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

       for(j=i+1;j<n;j++)

       if(v[i]==0&&v[j]!=0)

          swap(v[i],v[j]);

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

      cout<<v[i];

   return 0;

}



boiustef: incearca ambele...
boiustef: cred vor da ambele corect ...
me2018: daca nu iti place foloseste metoda bulelor, in loc de interschimbarea directa
boiustef: ii place.. dar asa e cand ti se propun doua lucruri si nu stii pe care sa-l iei .. :)))
boiustef: posibil ca cand gasesti o schimbare tr sa dai break sa treci la alt i
boiustef: e vorba de eficienta
boiustef: si atunci intradevar va fi mai eficient decat metoda bulelor
pedrocico09owrrjm: baieti puteti sa ma ajutati la o problema
pedrocico09owrrjm: ca mai am si nu stiu cum so fac
pedrocico09owrrjm: Salut, ma puteti ajuta cu comentarea problemelor
Răspuns de boiustef
0

#include <iostream>

using namespace std;

int a[200];

int main()

{

   int n, i;

   cout << "n=";

   cin >> n;

   cout << " introdu componentele vectorului: \n";

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

       cin >> a[i];

   int terminat=0;

   while (terminat==0)

   {

       terminat=1;

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

           if (a[i]==0 && a[i+1]!=0)

               { swap(a[i], a[i+1]); terminat=0; }

   }

   cout << " vectorul modificat: \n";

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

       cout << a[i] << " ";

   return 0;

}



boiustef: in fine, ... aveti doua metode ...
Alte întrebări interesante