Se considera un tablou bidimensional patratic cu n linii. sa se determine toate elementele ce reprezinta puncte 'șa'(element minim pe linie si maxim pe coloana pe care este situat)
DAU COROANA!!!!!!!!!!!!
Răspunsuri la întrebare
Răspuns de
2
#include <iostream>
#include <fstream>
#include <climits>
#include <string>
using namespace std;
//functie pentru a verifica daca element dat
//este maximum pe coloana
//functia are 4 argumente: matricea,dimensiunea matricei,pozitia testata
//si numarul coloanei
int este_maxim_coloana(int a[100][100],int dim,int poz,int col){
int i;
for(i=0;i<dim;i++){
//daca indicele este egal cu pozitia, sari peste pozitie
if(i==poz){
continue;
}
//daca exista cel putin un element mai mare decat cel de pe pozitie
//atunci nu poate fi maxim
if(a[i][col]>a[poz][col]){
return 0;
}
}
return 1;
}
int main(){
ifstream fim("matrice.in");
int i,j,n,a[100][100];
int pozitii_min[10],nr_pozitii_min,min;
fim>>n;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
fim>>a[i][j];
}
}
//ne apucam sa gasim valoarea minima pentru fiecare linie,
//determinam pozitiile minime, si apoi verificam daca sunt si maxime
//pe coloana
for(i=0;i<n;i++){
min=INT_MAX;
nr_pozitii_min=0;
for(j=0;j<n;j++){
//daca este mai mic decat minim
if(a[i][j]<min){
//minimul devine acea valoare
min=a[i][j];
//lungimea de pozitii de minim resetata la 1
nr_pozitii_min=1;
//prima valaore resetata la pozitia actuala
pozitii_min[0]=j;
}
//daca sunt egale, adauga la vectorul de pozitii
else if(a[i][j]==min){
pozitii_min[nr_pozitii_min]=j;
nr_pozitii_min++;
}
}
for(j=0;j<nr_pozitii_min;j++){
if(este_maxim_coloana(a,n,i,pozitii_min[j])==1){
cout<<"Element sa pe pozitiile: "<<i+1<<" "<<pozitii_min[j]+1<<" este "<<a[i][pozitii_min[j]]<<endl;
}
}
}
return 0;
}
#include <fstream>
#include <climits>
#include <string>
using namespace std;
//functie pentru a verifica daca element dat
//este maximum pe coloana
//functia are 4 argumente: matricea,dimensiunea matricei,pozitia testata
//si numarul coloanei
int este_maxim_coloana(int a[100][100],int dim,int poz,int col){
int i;
for(i=0;i<dim;i++){
//daca indicele este egal cu pozitia, sari peste pozitie
if(i==poz){
continue;
}
//daca exista cel putin un element mai mare decat cel de pe pozitie
//atunci nu poate fi maxim
if(a[i][col]>a[poz][col]){
return 0;
}
}
return 1;
}
int main(){
ifstream fim("matrice.in");
int i,j,n,a[100][100];
int pozitii_min[10],nr_pozitii_min,min;
fim>>n;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
fim>>a[i][j];
}
}
//ne apucam sa gasim valoarea minima pentru fiecare linie,
//determinam pozitiile minime, si apoi verificam daca sunt si maxime
//pe coloana
for(i=0;i<n;i++){
min=INT_MAX;
nr_pozitii_min=0;
for(j=0;j<n;j++){
//daca este mai mic decat minim
if(a[i][j]<min){
//minimul devine acea valoare
min=a[i][j];
//lungimea de pozitii de minim resetata la 1
nr_pozitii_min=1;
//prima valaore resetata la pozitia actuala
pozitii_min[0]=j;
}
//daca sunt egale, adauga la vectorul de pozitii
else if(a[i][j]==min){
pozitii_min[nr_pozitii_min]=j;
nr_pozitii_min++;
}
}
for(j=0;j<nr_pozitii_min;j++){
if(este_maxim_coloana(a,n,i,pozitii_min[j])==1){
cout<<"Element sa pe pozitiile: "<<i+1<<" "<<pozitii_min[j]+1<<" este "<<a[i][pozitii_min[j]]<<endl;
}
}
}
return 0;
}
WEREW0LF:
mersi =))))))))
Alte întrebări interesante
Limba română,
8 ani în urmă
Religie,
9 ani în urmă
Matematică,
9 ani în urmă
Franceza,
9 ani în urmă