Pomoc sa matricom

Pomoc sa matricom

offline
  • neuki1  Male
  • Novi MyCity građanin
  • Pridružio: 26 Maj 2016
  • Poruke: 2

Ovako glasi zadatak:
-u pitanju je matrica
Zadata je celobrojna matrica Anxn(3<n<10). Napisati program koji racuna odgovarajuci zbir elemenata matrice po sledecim pravilima:
1) krece se od prvog elementa na glavnoj dijagonali; ako je element<=0 prelazi se na sledeci element na glavnoj dijagonali,...sve dok se ne naidje na prvi element koji je >0; ako nijedan element sa glavne dijagonale nije pozitivan, rezultat (zbir) je tada =0;
2) ako smo dosli do elementa sa glavne dijagonale koji je pozitivan, sabiranje se nastavlja u njegovoj vrsti i to onih elemenata koji su negativni i pozitivni i nalaze se u gornjem trouglu matrice, sve dok se ne naidje na prvi element u toj vrsti koji je =0; ako su svi elementi u toj vrsti razliciti od nule, program se zavrsava dolaskom do zadnjeg elementa u toj vrsti;
3) ako smo naisli na element u vrsti koji je =0, nastavicemo sa sabiranjem po sporednoj dijagonali ako je to moguce, bez obzira na njihov znak, sve dok se ponovo ne vratimo na glavnu dijagonalu; elementi se mogu nalaziti na dijagonali koja je paralelna sporednoj dijagonali;
4) ako je nemoguc prolaz preko glavne dijagonale, program zavrsava sa radom;
5) dolaskom na glavnu dijagonalu, ponavlja se postupak od 1)-5).


Da li je ovo dobro? Kako biste vi uradili?



Ovde mi iz nekog razloga racuna donji umesto gornjeg trougla, znate li zasto?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • 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; }



Ko je trenutno na forumu
 

Ukupno su 732 korisnika na forumu :: 17 registrovanih, 2 sakrivenih i 713 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: ALBION101, Dorcolac, GreenMan, Joja, Leonardo, Lošmi, MORAVA1, murat_djecevic, plavii, powSrb, Raptor12, Rote Baron, sekretar2, stug, YU-UKI, zlaya011, zukara