PDA

View Full Version : [C] io, gli array, e le funzioni...


fabri_napoli
08-12-2008, 18:18
Sono di nuovo io, qui ad elemosinare aiutooo!! XD
Stavolta mi viene chiesto di trovare il massimo in un array... "questo lo so fare", penso io.. e infatti:

#include <stdio.h>
#include <stdlib.h>



main () {
int i, n, *a, massimo;

printf ("Quante locazioni deve contenere il tuo array?\n");
scanf ("%d", &n);
a= (int*) malloc (n*sizeof(int));

for (i=0; i<=n; i++) {
printf ("Inserisci il valore n.%d\n", i);
scanf ("%d", &a[i]); }
massimo=0;
for (i=0; i<=n; i++) {
if (a[i]>massimo) {
massimo=a[i]; }

else { massimo=massimo; }
}
printf ("Il valore massimo contenuto nell'array e' pari a %d\n", massimo);
system ("pause");
}

tutto bene, mi funge... ora però mi viene chiesto di fare lo stesso.. con una FUNZIONE... e come avrete ben capito, evidentemente non ho ancora inquadrato bene come funzionano ste benedette Function :D
dunque scrivo

#include <stdio.h>
#include <stdlib.h>

int maxn (int max);

main () {
int i, n, *a, massimo, max;

printf ("Quante locazioni deve contenere il tuo array?\n");
scanf ("%d", &n);
a= (int*) malloc (n*sizeof(int));
for (i=0; i<=n; i++) {
printf ("Inserisci il valore n.%d\n", i);
scanf ("%d", &a[i]); }
massimo= maxn (max);
printf ("Il valore massimo contenuto nell'array è pari a %d\n", massimo);
system ("pause");
}

int maxn (int max) {
int i, a[i], n;
max=0;
for (i=0; i<=n; i++) {
if (a[i]>max) {
max=a[i]; }
else { max=max; }
}
return max;
}


buuuum crashhhh! che cos'è che non ho capito?? più che la soluzione del quesito sarei felicissimo se mi aiutaste a capire COSA NON HO CAPITO di ste benedette Funzioni!!!! ("niente" non è una risposta :D )
Vi ringrazio tanto :)

cionci
08-12-2008, 18:28
A maxn devi passare i parametri che ti servono nella funzione, il cui valore viene definito in main, in questo caso *a e n, all'interno della funzione devi ricavarti il massimo e ritornarlo al main con return.

Supponi di avere una funzione che fa la somma fra A e B, cosa gli dovrai passare alla funzione somma ? Ovviamente A e B e dovrai ritornare A + B. Stesso discorso in questo caso: devi trovare il massimo, allora gli dovrai passare il vettore e il numero di elementi. Il valore di ritorno dovrà essere il massimo.

fabri_napoli
08-12-2008, 18:37
sììììì hai ragioneeee!! ti farei una statua d'oro :(


#include <stdio.h>
#include <stdlib.h>

int maxn (int n, int *a);

main () {
int i, n, *a, massimo, max;

printf ("Quante locazioni deve contenere il tuo array?\n");
scanf ("%d", &n);
a= (int*) malloc (n*sizeof(int));
for (i=0; i<=n; i++) {
printf ("Inserisci il valore n.%d\n", i);
scanf ("%d", &a[i]); }
massimo= maxn (n, a);
printf ("Il valore massimo contenuto nell'array è pari a %d\n", massimo);
system ("pause");
}

int maxn (int n, int *a) {
int i;
int max=0;
for (i=0; i<=n; i++) {
if (a[i]>max) {
max=a[i]; }
else { max=max; }
}
return max;
}


e così mi funge! grazie infinite!!!! :D

malocchio
10-12-2008, 22:41
Consiglio la lettura di una dispensina teorica sulle funzioni (matematica/informatica).. :D :D :D

cionci
11-12-2008, 09:29
malocchio: hai la firma irregolare, max 3 righe di testo alla risoluzione di 1024.