Răspuns :
Tu trebuia sa calculezi minimul de pe fiecare coloana, mai intai, si apoi sa verifici daca se afla pe diagonala secundara (conditie determinata de formula
i + j = n + 1).
In primul rand, tu ai calculat minimul de pe fiecare linie, nu coloana. Ca sa faci asta, puteai sa inversezi cele 2 functii for, astfel aveai for(j = 1...) {for(i = 1...)} .
A doua metoda era sa accesezi elementele matricei cu a[j][i], nu a[i][j].
In al doilea rand, tu ai facut inmultirea ("p=p*a[i][j]") atunci cand ai gasit un nou minim, dar trebuia s-o faci de-abea dupa ce calculai minimul si verificai daca sa afla pe diagonala pincipala.
Codul:
#include <fstream>
using namespace std;
ifstream fin("mincols1.in");
ofstream fout("mincols1.out");
int n, i, j, a[33][33], minim, p = 1, ok;
int main()
{
fin>>n;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
fin>>a[i][j];
for(i = 1; i <= n; i++)
{
minim = a[1][i]; //primul element de pe COLOANA
for(j = 1; j <= n; j++)
if(a[j][i] < minim) //aici am pus a[j][i] in loc de a[i][j]
minim = a[j][i];
if(minim == a[n - i + 1][i]) //Verificam daca minimul este cel de pe diagonala //secundara; Din formula i + j = n + 1
// l-am aflat pe j = n - i + 1
p = (p * minim) % 10; //De-abea acum facem inmultirea
}
fout<<p;
}
i + j = n + 1).
In primul rand, tu ai calculat minimul de pe fiecare linie, nu coloana. Ca sa faci asta, puteai sa inversezi cele 2 functii for, astfel aveai for(j = 1...) {for(i = 1...)} .
A doua metoda era sa accesezi elementele matricei cu a[j][i], nu a[i][j].
In al doilea rand, tu ai facut inmultirea ("p=p*a[i][j]") atunci cand ai gasit un nou minim, dar trebuia s-o faci de-abea dupa ce calculai minimul si verificai daca sa afla pe diagonala pincipala.
Codul:
#include <fstream>
using namespace std;
ifstream fin("mincols1.in");
ofstream fout("mincols1.out");
int n, i, j, a[33][33], minim, p = 1, ok;
int main()
{
fin>>n;
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
fin>>a[i][j];
for(i = 1; i <= n; i++)
{
minim = a[1][i]; //primul element de pe COLOANA
for(j = 1; j <= n; j++)
if(a[j][i] < minim) //aici am pus a[j][i] in loc de a[i][j]
minim = a[j][i];
if(minim == a[n - i + 1][i]) //Verificam daca minimul este cel de pe diagonala //secundara; Din formula i + j = n + 1
// l-am aflat pe j = n - i + 1
p = (p * minim) % 10; //De-abea acum facem inmultirea
}
fout<<p;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!