"Dana jest tablica dwywymiarowa elementów całkowitych, gdzie liczba kolumn i wierszy jest
podana przez użytkownika ale mniejsza niż 10. Napisać program, który policzy iloczyn tych
elementów macierzy, które znajdują się na przekątnych przecinających się w punkcie o
współrzędnych (i, j) podanych przez użytkownika. Macierz wypełnić losowo wygenerowanymi
liczbami całokowitymi z przedziału <1 – 100>. Wymusić poprawność wprowadzanych danych."
Witajcie kochani mam taki problem, że program mi działa i zlicza iloczyn po danej przekątnej, ale w kilku przypadkach niestety wychodzi po za zakres.. mógłby ktoś mi poradzić co zmienić w kodzie , aby program działał poprawnie dla każdego dowolnie wybranego punktu przez użytkownika? ;) (Wybrałam generowanie liczby z zakresu 1-10, aby łatwiej było się doliczyc )
MÓJ KOD ;)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
srand(time(NULL));
int i,n,min,max,buf,j,w,k,punkt,punkt2,iloczyn2,iloczyn,iloczyn3;
iloczyn=1;
iloczyn2=1;
iloczyn3=1;
do
{
printf("Podaj ilosc wierszy ");
scanf("%i",&w);
}while(w<=0 || w>10);
do
{
printf("Podaj ilosc kolumn ");
scanf("%i",&k);
}while(k<=0 || k>10);
min=1;
max=10;
int tab[w][k];
for(i=0;i<w;i++)
{
for(j=0;j<k;j++)
{
tab[i][j]=min+rand()%(max-min+1);
printf("%i ",tab[i][j]);
}
printf(" \n");
}
puts("PAMIETAJ PIERWSZY ELEMENT TABLICY TO [0][0]");
do
{
printf("Podaj punkt od ktorego liczymy iloczyn po przekatnych");
scanf("%i",&punkt);
}while(punkt<0 || punkt>w-1);
do
{
printf("Podaj drugi punkt od ktorego liczymy iloczyn po przekatnych");
scanf("%i",&punkt2);
}while(punkt2<0 || punkt2>k-1);
j=punkt2;
i=punkt;
do
{
iloczyn=iloczyn*tab[i][j];
j--;
i--;
printf("iloczyn = %i\n",iloczyn);
}while(i>=0);
i=punkt+1;
j=punkt2+1;
do
{
iloczyn2=iloczyn2*tab[i][j];
j++;
i++;
printf("iloczyn2 = %i\n",iloczyn2);
}while(i<k-1);
iloczyn3=iloczyn*iloczyn2;
printf("Przekatna od lewej w doł %i",iloczyn3);
j=punkt2;
i=punkt;
iloczyn=iloczyn2=iloczyn3=1;
do
{
iloczyn=iloczyn*tab[i][j];
j++;
i--;
printf("iloczyn = %i\n",iloczyn);
}while(i>=0);
i=punkt+1;
j=punkt2-1;
do
{
iloczyn2=iloczyn2*tab[i][j];
j--;
i++;
printf("iloczyn2 = %i\n",iloczyn2);
}while(i<=0);
iloczyn3=iloczyn*iloczyn2;
printf("Przekatna od lewej w góre %i",iloczyn3);
return 0;
}