PDA

View Full Version : [C]Matrice triangolare inferiore senza gli zeri


Ragazzo triste
28-09-2009, 15:49
Salve amici,
chiedo il vostro aiuto su come completare queste righe di codice per una matrice triangolare inferiore 2x2.

Mi trovo in difficoltà quando si tratta di far capire al programma che gli elementi della matrice che sto andando a popolare
devono essere tutti diversi da zero...e nel caso siano uguali a zero (anche uno solo,dopo essere stato acquisito tramite scanf),
deve essere riproposta all'utente la richiesta di ri-digitare quell'elemento.

Ecco il codice su cui operare :
/* Programma che chiede
all'utente di inserire gli
elementi diversi da zero di una matrice
triangolare inferiore 2x2 e successivamente li
stampa in “forma matriciale”.Nel caso in cui anche un solo elemento
della matrice sia pari a zero,deve essere riproposto l'input all'utente
*/

#include <stdio.h>
#include <stdlib.h>
#define SIZE 2

main(){
int array[SIZE][SIZE];
int i=0;
int j=0;
for( i = 0; i < SIZE; i++)
for( j = 0; j <= i; j++){
printf("inserire l'elemento [%d,%d] della matrice ",i+1,j+1);
scanf("%d", &array[i][j]);
}

printf("La matrice inserita e':\n");

for( i = 0; i < SIZE; i++){
for( j = 0; j <= i; j++)
printf("%4d ", array[i][j]);
printf("\n");
}
system("PAUSE");
}


...credo bisogni agire subito dopo il doppio ciclo for che serve a popolare la matrice,ma non ho idea di cosa si possa fare...


Spero in un veloce aiuto da parte vostra ;)

Ciao

yorkeiser
28-09-2009, 17:30
Devi agire DENTRO il for annidato, altrimenti non riesci a fare una cosa del genere. Per farlo, puoi usare un while ed uscire dal while solo quando l'elemento inserito è effettivamente diverso da zero. Ad esempio:

for( i = 0; i < SIZE; i++)
{
for( j = 0; j <= i; j++)
{
array[i][j]=0;
while (array[i][j]==0)
{
printf("inserire l'elemento [%d,%d] della matrice ",i+1,j+1);
scanf("%d", &array[i][j]);
}
}
}

P.S: Utilizza il tag CODE, e non il quote, per incollare il codice, altrimenti si perde l'indentazione ;)