Advertisement
Tucancitto

Lab1 - Pb10

Mar 6th, 2021 (edited)
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. // Complexitatea algoritmului: O(nrLinii * nrColoane)
  2.  
  3. #include <iostream>
  4. #include <fstream>
  5.  
  6. void alocareMatrice(int**& matrice, int nrLinii, int nrColoane)
  7. {
  8.     matrice = new int* [nrLinii];
  9.     for (int index = 0; index < nrLinii; ++index)
  10.         matrice[index] = new int[nrColoane];
  11. }
  12.  
  13. void citire(int**& matrice, int& nrLinii, int& nrColoane)
  14. {
  15.     std::ifstream fin("matrice.in");
  16.  
  17.     fin >> nrLinii >> nrColoane;
  18.     alocareMatrice(matrice, nrLinii, nrColoane);
  19.  
  20.     for (int i = 0; i < nrLinii; ++i)
  21.         for (int j = 0; j < nrColoane; ++j)
  22.             fin >> matrice[i][j];
  23. }
  24.  
  25. bool verifColoana(int** matrice, int nrLinii, int indiceColoana)
  26. {
  27.     for (int index = 0; index < nrLinii; ++index)
  28.         if (matrice[index][indiceColoana] == 0)
  29.             return false;
  30.     return true;
  31. }
  32.  
  33. void adaugareCol(int** matrice, int**& rezultat, int nrLinii, int colCurenta, int index)
  34. {
  35.     for (int index2 = 0; index2 < nrLinii; ++index2)
  36.         rezultat[index2][colCurenta] = matrice[index2][index];
  37. }
  38.  
  39. void afisare(int** matrice, int nrLinii, int nrColoane)
  40. {
  41.     for (int i = 0; i < nrLinii; ++i, std::cout << std::endl)
  42.         for (int j = 0; j < nrColoane; ++j)
  43.             std::cout << matrice[i][j] << ' ';
  44. }
  45.  
  46. int main()
  47. {
  48.     int** matrice, nrLinii, nrColoane;
  49.     citire(matrice, nrLinii, nrColoane);
  50.  
  51.     int** rezultat;
  52.     alocareMatrice(rezultat, nrLinii, nrColoane);
  53.  
  54.     int contor = 0;
  55.  
  56.     std::cout << "Indicii coloanelor care au toate elementele nenule: ";
  57.     for (int index = 0; index < nrColoane; ++index)
  58.         if (verifColoana(matrice, nrLinii, index))
  59.         {
  60.             std::cout << index << ' ';
  61.             adaugareCol(matrice, rezultat, nrLinii, contor, index);
  62.             contor++;
  63.         }
  64.     std::cout << std::endl;
  65.  
  66.     std::cout << "Matricea rezultata (care contine doar coloanele cu toate elementele nenule): \n";
  67.     afisare(rezultat, nrLinii, contor);
  68.  
  69.     for (int index = 0; index < nrLinii; ++index)
  70.         delete[] matrice[index], rezultat[index];
  71.  
  72.     delete[]matrice, rezultat;
  73.  
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement