Informatică, întrebare adresată de triscamihai, 9 ani în urmă

Cerinţa
Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine cea mai mare valoare care apare în matrice de cel puțin două ori.
Date de intrare
Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie
.
Date de ieşire
Programul afișează pe ecran elementele cu număr maxim de apariții se vor afișa toate, în ordine crescătoare, separate printr-un spațiu.
Restricţii şi precizări1 ≤ m,n ≤ 100elementele matricei vor fi mai mici decât 1.000.000dacă în matrice nu se repeta nici o valoare se va afișa IMPOSIBIL
Date de intrare
4 6
4 70 15 23 38 9
1 8 23 23 14 18
17 15 13 38 12 15
3 18 8 23 12 5
Date de iesire 
38


mincos: Va afisa 23 nu 38!

Răspunsuri la întrebare

Răspuns de mincos
1
#include<iostream>
using namespace std;
int i,j,m,n,a[100][100],b,c;
int apare(int y){
int aparitii=0;
for(c=1;c<=n;c++)
for(b=1;b<=m;b++){
if(a[c][b]==y)aparitii++;
}
return aparitii;
}
int main(){
int poz=0,max,x,v[100];
cout<<"m=";cin>>m;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
if(apare(a[i][j])!=1){
poz++;
v[poz]=apare(a[i][j]);
}
}
max=v[1];
for(i=2;i<=n;i++){
if(v[i]>=max)max=v[i];
}
for(i=1;i<=n;i++)
 {
for(j=1;j<=m;j++)
 
if(apare(a[i][j])==max){
cout<<a[i][j]<<" ";}

break
;}
return 0;
}
Alte întrebări interesante