C program koji briše glavnu dijagonalu matrice

C program koji briše glavnu dijagonalu matrice

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

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: 14828
  • 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: 362

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: 14828
  • 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 1337 korisnika na forumu :: 25 registrovanih, 2 sakrivenih i 1310 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: aca018, celt, Dinarid, djukapfc, dolinalima, draganl, Frunze, ginjica, GrammaticalAnalysis, ILGromovnik, lakson001, m94j, Magarac, mercedesamg, moldway, pavle_pzs, Petjan, Regrut Boskica, Risbo_Boris, s0ne, Shilok, styg, TheDictator, Topaz9, zzapNDjuric99