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: 14824
  • 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: 14824
  • 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 943 korisnika na forumu :: 61 registrovanih, 4 sakrivenih i 878 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: babaroga, Bane san, bbogdan, Belac91, belov, bigvlada, Bubimir, Cigi, crazydkure, dane007, Dare, dendrit86, Dimitrise93, Django777, djboj, Djuro2000, Dovla 1980, DrNeoCortex, dzoni19, Folkstar, GeoM, Griffon vulture, HogarStrashni, IAR80, Joja, JOntra, Josef, Lieutenant, MaksicZoran, MarkoD, markomacii9, MB120mm, Mi lao shu, Milan A. Nikolic, MiloradKomadic, Mskok, Najax, Nemanja.M, nenad81, neutrino, nick79, Oblički, Pilence, repac, ruso, S2M, samsung, Silvertooth, singa, smerch, solic, Srle993, stalker22, starlights, superwhy, takini, UAV operator, x011, zeo, Zorge, Zukov