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

Se consideră o matrice pătratică cu n linii şi n coloane (1≤n≤30), ce memorează numere întregi nenule de cel mult două cifre fiecare. Scrieţi un program C/C++ care citeşte de la tastatură valoarea n şi elementele matricei şi care afişează pe ecran ultima cifră a produsului acelor elemente de pe diagonala secundară care au proprietatea că
sunt valori minime pe coloanele lor. Dacă nu există astfel de elemente în matrice, se va afişa mesajul NU EXISTA.
Exemplu: pentru n=4 şi matricea alăturată se va afişa pe ecran valoarea 1 (3*7=21).

Răspunsuri la întrebare

Răspuns de AndySolo
5
#include<iostream>
using namespace std;
int v[31][31],n,minim,p;
bool ok;
int main()
{
//se citeste si si matricea

cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>v[i][j];

//se initializeaza produsul
p=1;
//se initializeaza o variabila logica care verifica daca exista elemente care indeplinesc conditia data
ok=false;

for(int i=1;i<=n;i++){  
//se calculeaza minimul pe fiecare coloana

minim=v[1][i];

for(int j=1;j<=n;j++)
    if(v[j][i]<minim)
          minim=v[j][i];

//daca minimul se afla pe diagonala secundara, inmultim ultima cifra a sa la produs

if(minim==v[n-i+1][i]){
   ok=true;
   p=p*(minim%10);
   }
}
if(ok==true)
cout<<p%10;
else cout<<"NU EXISTA";

return 0;
}


Răspuns de AntiEaglesDavids
2
#include <bits/stdc++.h>
using namespace std;

int v[31][31], n, p = 1, ok;

int mincol(int col)
{
    int sol = INT_MAX;
    for(int i = 1; i <= n; i++)
        sol = min(sol, v[col][i]);
    return sol;
}

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
            cin >> v[i][j];

    for(int i = 1; i <= n; i++)
        if(v[i][n - i + 1] == mincol(i))
            p *= v[i][n - i + 1], ok = 1;

    if(ok) cout << p % 10;
    else cout << "NU EXISTA";
    return 0;
}



Alte întrebări interesante