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

Scrieți un program i c/c++
să se ordonează liniile tabloului în ordine ascendentă a numărului de elemente negative în fiecare linie ​

Răspunsuri la întrebare

Răspuns de VxF
1

Răspuns:

#include <iostream>

#include <iomanip>

#include <vector>

#include <algorithm>

#include <ctime>

bool comparator(std::vector<int> a, std::vector<int> b)

{

   int aNr = 0, bNr = 0;

   for (int i = 0; i < a.size(); i++) {

       if (a[i] < 0) {

           aNr++;

       }

       if (b[i] < 0) {

           bNr++;

       }

   }

   return aNr < bNr;

}

void ordoneaza(std::vector<std::vector<int>>& tablou)

{

   std::sort(tablou.begin(), tablou.end(), comparator);

}

void afiseaza(std::vector<std::vector<int>> tablou)

{

   for (int i = 0; i < tablou.size(); i++) {

       for (int j = 0; j < tablou[i].size(); j++) {

           std::cout << std::setw(5) << tablou[i][j];

       }

       std::cout << std::endl;

   }

}

int main()

{

   std::vector<std::vector<int>> tablou;

   srand(time(NULL));

   int n = rand() % 10 + 10, m = rand() % 10 + 10;

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

       std::vector<int> linie;

       for (int j = 0; j < m; j++) {

           linie.push_back(rand() % 201 - 100);

       }

       tablou.push_back(linie);

   }

   std::cout << "Inițial:" << std::endl;

   afiseaza(tablou);

   ordoneaza(tablou);

   std::cout << "Final:" << std::endl;

   afiseaza(tablou);

}

Explicație:

Cum nu s-a specificat provenienţa tabloului, am generat unul aleator, partea esențială a exerciţiului fiind probabil sortarea, implementată prin în funcţiile ordoneaza() şi comparator().

Alte întrebări interesante