C program koji briše glavnu dijagonalu matrice

C program koji briše glavnu dijagonalu matrice

offline
  • Pridružio: 11 Okt 2014
  • Poruke: 358

Pozdrav, mozete li mi pomoci oko ovoga?
Ako unesem matricu:
1 0 0
0 1 0
0 0 1

Trebalo bi nakon brisanja glavne dijagonale da izbaci vjerovatno ovako:
0 0
0 0
0 0

Kako to da postignem koristeći ovu matricu?
#include <stdio.h> int main() {   int i, j, mat[50][50], n;   printf("Enter dimension of matrix: \n");   scanf("%d", &n);   for (i = 0; i < n; i++) {     printf("Enter elements of %d. row: \n", i + 1);     for (j = 0; j < n; j++) {       scanf("%d", &mat[i][j]);     }   }   printf("Matrix after deleting main diagonal:\n");     for (i = 0; i < n; i++) {       for (j = 0; j < n; j++) {         if (i == j)           mat[i][j] == mat[i][j+1];       }     }     for (i = 0; i < n; i++) {       for (j = 0; j < n - 1; j++) {           printf("%5d", mat[i][j]);       }       printf("\n");     }   return 0; }



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

Tvoje rešenje nije dobro jer ti vršiš obradu samo elemenata na glavnoj dijagonali, a umesto toga treba da obradiš sve elemente na glavnoj dijagonali, kao i sve elemente iznad glavne dijagonale.

Na prvi pogled deluje da tvoje rešenje može da postane tačno samo jednostavnom promenom uslova u petlji za obradu.



offline
  • Pridružio: 11 Okt 2014
  • Poruke: 358

Hvala puno, evo rješenja
#include <stdio.h>   int main() {   int i, j, mat[50][50], n;   printf("Enter dimension of matrix: \n");   scanf("%d", &n);   for (i = 0; i < n; i++) {     printf("Enter elements of %d. row: \n", i + 1);     for (j = 0; j < n; j++) {       scanf("%d", &mat[i][j]);     }   }     printf("Matrix after deleting main diagonal:\n");    for (i = 0; i < n; i++) {       for (j = 0; j < n; j++) {         if (i == j||i<j)           mat[i][j] = mat[i][j+1];           else mat[i][j]=mat[i][j];       }     }       for (i = 0; i < n; i++) {       for (j = 0; j < n - 1; j++) {           printf("%5d", mat[i][j]);       }       printf("\n");     }     return 0; }

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14809
  • Gde živiš: Niš

E, super. Može to i malo jednostavnije - postoji operator <= koji radi to isto kao u tvom uslovu.

Ko je trenutno na forumu
 

Ukupno su 614 korisnika na forumu :: 21 registrovanih, 2 sakrivenih i 591 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 9k38, babaroga, Bane san, Bokiboks, ccoogg123, cifra, Dimitrise93, Georgius, ladro, loon123, mikrimaus, mnn2, Parker, procesor, RecA, repac, Roman Dudoladoff, suton, vandrej, W123, yufighter