Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (109)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (49)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (85)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (37)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (13)
Programare vizuală în C# (10)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Se da o matrice cu n linii si m coloane (n,m<=100) cu elemene numere naturale distincte cu maxim 5 cifre fiecare. Gasiti elementul minim si pe cel maxim si interchimbati-le prin interchimbare de linii si coloane.
Se vor defini si apela functii pentru:
- citirea matricei
- afisarea matricei
- interschimbarea a doua linii din matrice
- interschimbarea a doua coloane din matrice
Exemplu:
3 4
1 2 3 4
10 11 12 8
5 6 7 9
Minimul este 1, maximul este 12 si se interschimba linia 1 cu linia 2 si apoi coloanele 1 si 3, rezultand matricea
12 11 10 8
3 2 1 4
7 6 5 9

#include <iostream>
using namespace std;

void citire(int A[][101], int &n, int &m)
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>A[i][j];
}

void afisare(int A[][101], int n, int m)
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            cout<<A[i][j]<<" ";
        cout<<endl;
    }
}

void inter(int &x, int &y)
{//interschimba x cu y
    int aux=x; x=y; y=aux;
}

void interlin(int A[][101], int m, int x, int y)
{//interschimba linia x cu linia y
    for(int j=1;j<=m;j++)
        inter(A[x][j],A[y][j]);
}

void intercol(int A[][101], int n, int x, int y)
{//interschimba coloana x cu coloana y
    for(int i=1;i<=n;i++)
        inter(A[i][x],A[i][y]);
}

void detindici(int A[][101], int n, int m, int &imax, int &imin, int &jmax, int &jmin)
{   //determina indicii elementului maxim si ai celui minim
    int maxx=0, minn=100000;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            {
                if(A[i][j]>maxx)
                {
                    maxx=A[i][j]; imax=i; jmax=j;
                }
                if(A[i][j]<minn)
                {
                    minn=A[i][j]; imin=i; jmin=j;
                }
            }
}

int main()
{
    int A[101][101],n,m,imax,jmax,imin,jmin;
    citire(A,n,m);
    detindici(A,n,m,imax,imin,jmax,jmin);
    interlin(A,m,imin,imax);
    intercol(A,n,jmin,jmax);
    afisare(A,n,m);
    return 0;
}

24 oct 2018
Site-ul conține 867 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian