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

se da un vector v cu elemente numere intregi. fara a folosi un vector auxiliar, sa se mute la sfarsitul lui V elementele sale nule, pastrand ordinea celorlalte elemente. ex:v=(2,3,0,9,0,0,8) --- (2,3,9,0,0)


artur99: Changes = 0;
artur99: Do{
artur99: For toate elementele până la penultimul
artur99: Dacă v[i]==0 și v[i+1]! =0, atunci inversezi elementele și changes = 1
artur99: }while(changes = 1)
artur99: Deci, cum ar veni, mergi prin tot vectorul și verifici fiecare două elemente consecutive. Dacă este vreunul 0 și după el este un număr, le inversezi. Și repeți asta până când nu mai ai nimic de inversat. Și asta asigură că la sfârșit toate 0-urile vor fi la sfârșit. Poți să încerci pe hârtie.

Răspunsuri la întrebare

Răspuns de gabi54t
5

#include <iostream>


using namespace std;


int main()

{

   int n, a[100], i, j;

   cin>>n;

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

       cin>>a[i];

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

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

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

   {

       int aux=a[i];

       a[i]=a[j];

       a[j]=aux;

   }



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

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

   return 0;


}

mrg aici am folosit a inloc de v



gabi54t: si da, poti sa folosesti si un singur for
Alte întrebări interesante