PDA

View Full Version : aiuto programma in c


*MATRIX*
13-10-2005, 12:04
//data una matrice 3x3 trova il valore massimo in essa contenuta

#include <stdio.h>
#include <stdlib.h>
int m[3][3];
void massimo(int);

main()
{
int i,j;
for(i=1;i<=3;i++)
{
for (j=1;j<=3;j++)
{
printf("inserici %d %d elemento",i,j);
scanf("%d",&m[i][j]);
}
}
massimo(m);
system("pause");
}

void massimo(int m[][])
{
int i,j;
int max=0;
for(i=1;i<=3;i++)
{
for (j=1;j<=3;j++)
{
if (m[i][j]>max)
max=m[i][j];
}
}
printf("il massimo e' %d",max);
}

mi da errori di compilazione
17 invalid conversion from `int (*)[3]' to `int'
22 declaration of `m' as multidimensional array must have bounds for all dimensions except

mi date una mano? uso il devc

ilsensine
13-10-2005, 13:06
Il tuo errore è nella dichiarazione del prototipo della funzione.
Inoltre c'è un bel buffer overflow: un array di n elementi lo devi indicizzare da 0 a n-1, non da 1 a n.

--- m.c.org 2005-10-13 13:11:31.000000000 +0200
+++ m.c 2005-10-13 13:13:51.000000000 +0200
@@ -3,16 +3,16 @@
#include <stdio.h>
#include <stdlib.h>
int m[3][3];
-void massimo(int);
+void massimo(int [3][3]);

main()
{
int i,j;
- for(i=1;i<=3;i++)
+ for(i=0;i<3;i++)
{
- for (j=1;j<=3;j++)
+ for (j=0;j<3;j++)
{
- printf("inserici %d %d elemento",i,j);
+ printf("inserici %d %d elemento",i+1,j+1);
scanf("%d",&m[i][j]);
}
}
@@ -20,13 +20,13 @@
system("pause");
}

-void massimo(int m[][])
+void massimo(int m[3][3])
{
int i,j;
int max=0;
- for(i=1;i<=3;i++)
+ for(i=0;i<3;i++)
{
- for (j=1;j<=3;j++)
+ for (j=0;j<3;j++)
{
if (m[i][j]>max)
max=m[i][j];

*MATRIX*
13-10-2005, 13:13
ti ringrazio tantissimo :D
io sto facendo il passaggio da pascal al c

e sto usando questo sito
http://www.hyperbook.it/
e questo
http://programmazione.html.it/c/

sono sufficienti secondo te?