PDA

View Full Version : Problema con semplice programma i C...AIUTOOO !!!


lampo17
06-06-2004, 15:32
Ciao,
stò dfacendo un semplice programmino in C che dice:
scrivere una funzione che, data una matrice RxC, costruisce un vettore i cui elementi sono gli elementi massimi di ciascuna riga della matrice.

Ho provato a farlo ma non mi è riuscito questo è il mio codice


#include <stdio.h>
#define DIM1 10
#define DIM2 10

void leggimatrice(int [][], int, int);
void stampamatrice(int [][], int, int);
int vettoremax(int [][], int, int);

int main()
{ int matr[DIM1][DIM2], n , l;
printf("inserisci il numero di righe della matrice (0<=n<=%d)\n", DIM1);
scanf("%d", &n);
printf("inserisc il numero di colonne della matrice (0<=l<=%d)\n", DIM2);
scanf("%d", &l);

leggimatrice(matr, n, l);
stampamatrice(matr, n, l);
vettoremax(matr, n, l);



system("PAUSE");
return 0;
}

void leggimatrice( int matrice[DIM1][DIM2], int x, int y)
{
int i,j;

printf("inserisci i %dx%d elementi della matrice\n", x, y);
for(i=0; i<x; i++){for(j=0; j<y; j++)
scanf("%d", &matrice[i][j]);}

}

void stampamatrice( int matrice[DIM1][DIM2], int x, int y)
{
int i,j;

for(i=0; i<x; i++){for(j=0; j<y; j++)
printf(" %d", matrice[i][j]);
printf("\n");}

}


int vettoremax( int matrice[DIM1][DIM2], int x, int y)
{
int i,j, massimo, vettore[DIM1], k;

for(i=0; i<x; i++){

for(j=0; j<y; j++){
massimo=matrice[i][j];
if(matrice[i][j]>massimo)
massimo=matrice[i][j];}

vettore[k]=massimo;}

for(k=0; k<x; k++)
{ printf("%d", vettore[k]);
printf("\n");
}
}

Mixmar
06-06-2004, 17:46
Originariamente inviato da lampo17

int vettoremax( int matrice[DIM1][DIM2], int x, int y)
{
int i,j, massimo, vettore[DIM1], k;

for(i=0; i<x; i++){

for(j=0; j<y; j++){
massimo=matrice[i][j];
if(matrice[i][j]>massimo)
massimo=matrice[i][j];}

vettore[k]=massimo;}

for(k=0; k<x; k++)
{ printf("%d", vettore[k]);
printf("\n");
}
}

Penso che gli errori siano qui: innanzitutto l'inizializzazione massimo=matrice[i][j]; va fuori dal secondo ciclo innestato: e poi è sbagliata la chiamata vettore[k] = massimo; .

Dovrebbe essere così:


int vettoremax( int matrice[DIM1][DIM2], int x, int y)
{
int i,j, massimo, vettore[DIM1], k;

for(i=0; i<x; i++){

massimo=matrice[i][0];

for(j=0; j<y; j++){

if(matrice[i][j]>massimo)
massimo=matrice[i][j];}

vettore[i]=massimo;}

for(k=0; k<x; k++)
{ printf("%d", vettore[k]);
printf("\n");
}
}

k puoi anche non usarlo, riutilizzando per esempio i, o j.

Spero di non aver fatto errori.