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

Sa se scrie un program care citeste de la tastatura un vector cu n elemente numere intregi.
a) sa se afiseze vectorul astfel incat numerele sa fie ordonate crescator
b) sa se afiseze vectorul astfel incat numerele pare sa ocupe primele pozitii, iar cele impare ultimele pozitii
c) sa se afiseze vectorul astfel incat numerele pare sa ocupe pozitia impara, iar cele impare sa ocupe pozitia para. (daca sunt mai multe numere pare sau impare acestea se adauga la final)
(Exemplu: 26789351 -> 27698351) – numerotarea incepe de la pozitia 1

Răspunsuri la întrebare

Răspuns de AfloareiAndrei
7

Răspuns:

#include <iostream>

#include <vector>

using namespace std;

int main()

{

 int n, x, p; //n = n elemente, x = numere intregi, p = folosit pentru a schimba

                  //cifrele din lista intre ele

 vector<int> lista1;

 vector<int> lista2;

 vector<int> lista3;

 

 cout << "N: ";

 cin >> n;

 

 //ca sa pot incepe indexarea de la 1, adaug un 0 pe prima pozitie

 //a fiecarei liste

 lista1.push_back(0);

 lista2.push_back(0);

 lista3.push_back(0);

 //populez listele

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

   {

     cout << "=> ";

     cin >> x;

     lista1.push_back(x);

     lista2.push_back(x);

     lista3.push_back(x);

   }

 //ordonat crescator

 for(int o=0; o<=n; o++)

   {

     for(int i=2; i<=n; i++)

{

  if(lista1[i] < lista1[i-1])

    {

      p = lista1[i];

      lista1[i] = lista1[i-1];

      lista1[i-1] = p;

    }

}

   }

 //pare inceput, impare final

 for(int o=0; o<=n; o++)

   {

     for(int i=2; i<=n; i++)

{

  if((lista2[i] % 2 == 0) && (lista2[i-1] % 2 > 0))

    {

      p = lista2[i];

      lista2[i] = lista2[i-1];

      lista2[i-1] = p;

    }

}

   }

 //nr par = poz impara / nr impar = poz para

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

   {

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

{

  if((lista3[i] % 2 == 0) && (i % 2 == 0))

    {

      if(lista3[j] % 2 > 0)

 {

   p = lista3[i];

   lista3[i] = lista3[j];

   lista3[j] = p;

 }

    }

  else if((lista3[i] % 2 > 0) && (i % 2 > 0))

    {

      if(lista3[j] % 2 == 0)

 {

   p = lista3[i];

   lista3[i] = lista3[j];

   lista3[j] = p;

 }

    }

}

   }

 //afiseaza rezultatul

 cout << "1) ";

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

   {

     cout << lista1[i] << " ";

   }

 cout << endl;

 cout << "2) ";

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

   {

     cout << lista2[i] << " ";

   }

 cout << endl;

 cout << "3) ";

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

   {

     cout << lista3[i] << " ";

   }

 cout << endl;

 

 

 return(0);

}

Explicație:

Am lasat comentarii.

Alte întrebări interesante