Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (111)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (50)
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 (86)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (40)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (14)
Programare vizuală în C# (19)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Lucrare matrici nepatratice IX B Randul 1
Se citeste o matrice cu n linii si m coloane, n si m numere pare (n,m<=100) cu elemente numere naturale din intervalul [0,1000].
a) Calculati si afisati elementul minim din matrice.
b) Afisati numarul de linii pe care apare elementul minim .
c) Afisati coloanele care au elementele ordonate strict descrescator.
d) Afisati in orice ordine elementele care sunt unice pe linia pe care se afla.
e) Sa se interschimbe cele doua coloane alaturate de la mijlocul matricii si sa se afiseze matricea obtinuta.
Exemplu:
date de intrare:
4 6
6 3 4 2 4 7
2 1 3 4 3 3
1 3 9 3 2 2
3 2 1 1 1 1
date de iesire
1 (a)
3 (b)
4 3 2 1 (c)
7 3 2 1
2 3 6 7 1 2 4 1 9 2 3 sau 6 3 2 7 2 1 4 1 9 3 2 (d)
6 3 2 4 4 7 (e)
2 1 4 3 3 3
1 3 3 9 2 2
3 2 1 1 1 1

#include <fstream>
using namespace std;
ifstream fin("matrice.in");
ofstream fout("matrice.out");

int main()
{
    int n,m,A[101][101];
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            fin>>A[i][j];
    //a) Calculati si afisati elementul minim din matrice
    int min=1000;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(A[i][j]<min) min=A[i][j];
    fout<<min<<endl;
    //b) Afisati numarul de linii pe care apare elementul minim din matrice
    int c=0;
    for(int i=1;i<=n;i++)
    {
        int gasit=0;
        for(int j=1;j<=m;j++)
            if(A[i][j]==min) gasit=1;
        if (gasit==1) c++;
    }
    fout<<c<<endl;
    //c) Afisati coloanele cu elementele ordonate strict descrescator
    for(int j=1;j<=m;j++)
    {
        int ok=1;
        for(int i=1;i<n;i++)
            if(A[i][j]<=A[i+1][j]) ok=0;
        if(ok==1)
        {
            for(int i=1;i<=n;i++) fout<<A[i][j]<<" ";
            fout<<endl;
        }
    }
    //d) Afisati in orice ordine elementele care sunt unice pe linia lor
    //Varianta cu vector de frecventa:
    for(int i=1;i<=n;i++)
    {
        int F[1001]={0};
        for(int j=1;j<=m;j++)
            F[A[i][j]]++;
        for(int v=0;v<=1000;v++)
            if(F[v]==1) fout<<v<<" ";
    }
    fout<<endl;
    //varianta cu numarare a aparitiilor
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int ap=0;
            for(int k=1;k<=m;k++)
                if(A[i][j]==A[i][k]) ap++;
            if(ap==1) fout<<A[i][j]<<" ";
        }
    fout<<endl;
    //varianta cu reducere la absurd
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            int ok=1;
            for(int k=1;k<=m;k++)
                if(j!=k && A[i][j]==A[i][k]) ok=0;
            if(ok==1) fout<<A[i][j]<<" ";
        }
    fout<<endl;
    //e) Sa se interschimbe cele doua coloane alaturate de la mijlocul matricii si sa se afiseze matricea obtinuta
    for(int i=1;i<=n;i++)
    {
        int aux=A[i][m/2];
        A[i][m/2]=A[i][m/2+1];
        A[i][m/2+1]=aux;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            fout<<A[i][j]<<" ";
        fout<<endl;
    }
    return 0;
}

28 mar 2024
Site-ul conține 884 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian