offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Napisano: 30 Jun 2016 19:37
Koji rezultat bi trebalo da dobiješ za tu matricu koju si postavio?
Dopuna: 01 Jul 2016 16:01
Ako sam dobro razumeo zadatak, ovo bi trebalo da radi. Imaš sve razdvojeno po koracima. Moraš samo da napišeš kod za punjenje podataka jer ovaj program koristi unapred definisane vrednosti za matricu:
#include <stdio.h>
int data[10][10] =
{
1, 3, 3, 3, 3, 0, 0, 0, 0, 0,
2, 1, 3, 3, 3, 0, 0, 0, 0, 0,
2, 2, 1, 3, 3, 0, 0, 0, 0, 0,
2, 2, 2, 1, 3, 0, 0, 0, 0, 0,
0, 2, 2, 2, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
int size = 5;
void writeData()
{
for (int y = 0; y < size; ++y)
{
for (int x = 0; x < size; ++x)
printf("%d ", data[x][y]);
printf("\n");
}
}
int getPrimaryDiagonalResult(int pos);
int getSecondaryDiagonalResult(int x, int y)
{
if ((x - y) % 2 == 1)
return 0;
int result = 0;
while (x != y)
{
result += data[x][y];
++y;
--x;
}
return result + getPrimaryDiagonalResult(x);
}
int getRowResult(int pos)
{
int result = 0;
int x;
for (x = pos; data[x][pos] != 0 && x < size; ++x)
result += data[x][pos];
if (x < size && data[x][pos] == 0)
return result + getSecondaryDiagonalResult(x, pos);
else
return result;
}
int getPrimaryDiagonalResult(int pos)
{
for (; data[pos][pos] <= 0 && pos < size; ++pos);
if (data[pos][pos] > 0)
return getRowResult(pos);
else
return 0;
}
int getResult()
{
return getPrimaryDiagonalResult(0);
}
int main()
{
writeData();
printf("Result = %d", getResult());
getchar();
return 0;
}
|