Răspuns :
int table[100][100];
int main(){
//aici a fost deja intializata matricea
int prod=1;
for(int i=0;i<n;i++){ //randul
for(int j=0;j<n;j++){ //coloana
//X(i,j) va fi un nuimar din matrice
//Acum verificam daca e egal cu produsl nr. de pe coloana
prod=1; //reset
for(int z=0;z<n;z++) if(z!=i) prod*=table[z][j];
if(table[i][j]==prod) cout<<table[i][j]<<" ";
}
}
}
int main(){
//aici a fost deja intializata matricea
int prod=1;
for(int i=0;i<n;i++){ //randul
for(int j=0;j<n;j++){ //coloana
//X(i,j) va fi un nuimar din matrice
//Acum verificam daca e egal cu produsl nr. de pe coloana
prod=1; //reset
for(int z=0;z<n;z++) if(z!=i) prod*=table[z][j];
if(table[i][j]==prod) cout<<table[i][j]<<" ";
}
}
}
O alta solutie ar fi sa faci produsul tuturor elementelor de pe aceeasi coloana si apoi sa verifici daca acel produs impartit la un numar de pe coloana produce acelasi numar
De exemplu, daca avem elementele de pe coloana 2: 1,11,2,22,1 atunci produsul lor este 1*11*2*22*1=484. Apoi, verifici daca exista un element n astfel incat n=484/n. Atunci, inseamna ca restul ;elementelor sunt egale cu acel numar n. Observam ca n=22 indeplineste aceasta conditie.
Metoda aceasta e mai eficienta ca timp decat cea a lui Antonii pentru ca nu mai faci n-1 produse pe coloana, ci doar un produs, al tuturor elementelor. Este mai ineficienta ca memorie, pentru ca ai nevoie de un vector separat pentru a memora produsele fiecarei coloane.
#include <iostream>
using namespace std;
int main(){
int n,i,j,a[100][100],produse_coloane[6];
cout<<"Introduceti dimensiunea matricei:";
cin>>n;
cout<<"Introduceti matricea:\n";
for(i=0;i<n;i++){
produse_coloane[i]=1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
cin>>a[i][j];
produse_coloane[j]=produse_coloane[j]*a[i][j];
}
}
cout<<"Rezultat: ";
for(j=0;j<n;j++){
for(i=0;i<n;i++){
if(a[i][j]==(produse_coloane[j]/a[i][j])){
cout<<a[i][j]<<" ";
}
}
}
return 0;
}
De exemplu, daca avem elementele de pe coloana 2: 1,11,2,22,1 atunci produsul lor este 1*11*2*22*1=484. Apoi, verifici daca exista un element n astfel incat n=484/n. Atunci, inseamna ca restul ;elementelor sunt egale cu acel numar n. Observam ca n=22 indeplineste aceasta conditie.
Metoda aceasta e mai eficienta ca timp decat cea a lui Antonii pentru ca nu mai faci n-1 produse pe coloana, ci doar un produs, al tuturor elementelor. Este mai ineficienta ca memorie, pentru ca ai nevoie de un vector separat pentru a memora produsele fiecarei coloane.
#include <iostream>
using namespace std;
int main(){
int n,i,j,a[100][100],produse_coloane[6];
cout<<"Introduceti dimensiunea matricei:";
cin>>n;
cout<<"Introduceti matricea:\n";
for(i=0;i<n;i++){
produse_coloane[i]=1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
cin>>a[i][j];
produse_coloane[j]=produse_coloane[j]*a[i][j];
}
}
cout<<"Rezultat: ";
for(j=0;j<n;j++){
for(i=0;i<n;i++){
if(a[i][j]==(produse_coloane[j]/a[i][j])){
cout<<a[i][j]<<" ";
}
}
}
return 0;
}