• 0736-069-356
  • admin@lanteam-solutions.com
  • Cluj, Romania
Invata cu noi!

Interschimbare coloane matrice

Problema #4254 pbinfo

Problema #4254 pbinfo

Cerința

Scrieți un program care citește de la tastatură două numere naturale din intervalul [2,50]n și m, și elementele unei matrici cu n linii și m coloane, numere naturale distincte din intervalul [0,104].

Programul interschimbă elementele de pe coloana pe care se află valoarea minimă cu elementele de pe coloana pe care se află valoarea maximă din matrice, apoi afișează pe ecran matricea modificată, câte o linie a matricii pe câte o linie a ecranului, elementele fiecărei linii fiind separate prin câte un spațiu.

Se vor defini și apela următoarele subprograme:

  • citire, care citește de la tastatură valorile lui n și m și apoi elementele matricei
  • afisare, care afișează pe ecran elementele matricei conform cerinței
  • col_min, care determină indicele coloanei pe care se află elementul minim din matrice
  • col_max, care determină indicele coloanei pe care se află elementul maxim din matrice
  • interschimbare, care interschimbă în matricea dată elementele de pe două coloane date

În programele C/C++ nu se vor folosi variabile globale.

Date de intrare

Programul citește de la tastatură numerele n m, iar apoi cele n • m elemente ale matricii.

Date de ieșire

Programul va afișa pe ecran elementele matricii rezultate.

Restricții și precizări

  • 2 ≤ n,m ≤ 50
  • indexarea liniilor și a coloanelor se face începând de la 1
  • elementele tabloului aparțin intervalului [0,104]
  • dacă atât elementul minim cât și cel maxim se află pe aceeași coloană, atunci matricea se va afișa nemodificată.
#include <iostream>
using namespace std;
void citire(int& n, int& m, int A[54][54])
{
    cin >> n >> m;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j) cin >> A[i][j];
}
void afisare(int n, int m, int A[54][54])
{
    for (int i = 1; i <= n; ++i, cout << "\n")
        for (int j = 1; j <= m; ++j) cout << A[i][j] << " ";
}
int col_min(int n, int m, int A[54][54])
{
    int nmin = 1e9, jmin;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            if (nmin > A[i][j]) nmin = A[i][j], jmin = j;
    return jmin;
}
int col_max(int n, int m, int A[54][54])
{
    int nmax = 0, jmax;
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            if (nmax < A[i][j]) nmax = A[i][j], jmax = j;
    return jmax;
}
void interschimbare(int c1, int c2, int n, int m, int A[54][54])
{
    for (int c = 1; c <= n; ++c) swap(A[c][c1], A[c][c2]);
}
int main()
{
    int n, m, A[54][54];
    citire(n, m, A);
    interschimbare(col_max(n, m, A), col_min(n, m, A), n, m, A);
    afisare(n, m, A);
    return 0;
}

Lasă un răspuns