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 1073 korisnika na forumu :: 49 registrovanih, 4 sakrivenih i 1020 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: Andrija357, anta, atmel, babaroga, bobomicek, Brana01, cer, darios, dekan.m, Denaya, Dimitrise93, dule10savic, esx66, FOX, Georgius, indja, Karla, kjkszpj, Krvava Devetka, laurusri, Luka Blažević, Marko Marković, marsovac 2, mercedesamg, Mercury, MiGac, mile23, Milometer, milutin134, mnn2, pein, Polemarchoi, robert1979, robertino, ruger357, slonic_tonic, sombrero, Srki94, Srle993, stagezin, Tas011, Titan, Trpe Grozni, vathra, VP6919, vukovi, wizzardone, Zimbabwe, 79693