Witam wszystkich serdecznie! Od wczoraj głowię się nad pewnym problemem, do którego nie mogę dojść. Treść zadania wygląda następująco:
Dla macierzy A[m]x[n] elementów całkowitych (m, n <10) wyznaczyć iloczyn tych elementów macierzy, które znajdują się na przekątnych przecinających się w punkcie o współrzędnych (x, y) podanych przez użytkownika. Użytkownik przy uruchomieniu programu jest pytany o rozmiar macierzy (m, n). W przypadku podania rozmiaru macierzy większych od 10 (m, n >10) program ponawia pytanie o rozmiar macierzy.
Dla lepszego zrozumienia problemu przesyłam zdjęcie:
Mój obecny kod wygląda następująco:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void wypelnijMacierz(int tab[][10], int m, int n)
{
int min = 1, max = 10;
int i, j;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
tab[i][j] = rand() % (max - min + 1) + min;
}
}
}
void wyswietlMacierz(int tab[][10], int m, int n)
{
int i, j;
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
{
printf("%d\t", tab[i][j]);
if(j==(n-1)) printf("\n");
}
}
}
int obliczIloczyn(int tab[][10], int m, int n, int x, int y)
{
int lewa_przekatna = 1, prawa_przekatna = 1;
int wynik = 0, i, j;
do {
lewa_przekatna = lewa_przekatna * tab[x-1][y-1];
x++;
y++;
} while(m-n == x-y);
do {
prawa_przekatna = prawa_przekatna * tab[x+1][y-1];
x--;
y++;
} while(m+n == x+y);
wynik = lewa_przekatna * prawa_przekatna;
return wynik;
}
int main()
{
srand(time(NULL));
int m, n, x, y, tab[10][10];
printf("Podaj ilosc wierszy macierzy A: ");
scanf("%d", &m);
printf("Podaj ilosc kolumn macierzy A: ");
scanf("%d", &n);
printf("\n");
if(m<10 && n<10)
{
wypelnijMacierz(tab, m, n);
wyswietlMacierz(tab, m, n);
printf("\nPodaj wspolrzedna x macierzy A: ");
scanf("%d", &x);
printf("Podaj wspolrzedna y macierzy A: ");
scanf("%d", &y);
if(x<=m && y<=n)
{
printf("\nIloczyn tych przekatnych wynosi: %d",obliczIloczyn(tab, m, n, x, y));
}
else
{
system("cls");
printf("Podales zbyt duze wspolrzedne!\n");
}
}
else
{
while(m>10 || n>10)
{
printf("Podaj ponownie ilosc wierszy macierzy A (<10!): ");
scanf("%d", &m);
printf("Podaj ponownie ilosc kolumn macierzy A (<10!): ");
scanf("%d", &n);
}
}
}
Czy jest może ktoś, kto pomógłby mi w rozwiązaniu tego problemu?