kwb
06-06-2010, 15:18
Sto facendo un piccolo programma in grado di prendere dei valori da tastiera, calcolarne la media, e restituirla.
Il programma in se è molto semplice, ma l'obiettivo è quello di utilizzare le funzioni, due: una per prendere i valori e metterli in un'array, e l'altra per calcolare la media.
Ho iniziato col scrivere il main e la funzione per prendere i valori, ma ho già dei problemi perchè non capisco bene il passaggio di vettori come argomento da una funzione all'altra...
Segue il codice:
/*
* Write a program that reads how many values will be entered from the keyboard (with a maximum of n values), reads them all in an array,
* and computes the average value (arithmetic mean).
* Use separate functions for reading the data from keyboard and computing the average.
*/
#include <stdio.h>
#define MAX 10
int get_values (float collection[], int n_values);
float average();
int main ()
{
int i;
int n;
float collection[MAX];
do
{
printf("How many values you want to enter?\n");
printf("You can enter no more than %d values\n", MAX);
scanf("%d", &n);
printf("\n");
} while ( n > MAX );
i = get_values(collection, &n);
printf("N of values entered: %d\n", i);
printf("Vector: ");
for (i=0; i < n; i++)
printf("%f\t", collection[i]);
}
int get_values (float collection[], int n_values)
{
int i;
for ( i = 0; i < n_values; i++)
collection[i] = 0;
for ( i = 0; i < n_values ; i++)
{
scanf("%f", collection[i]);
}
return i;
}
Il problema si presenta quando, inserito il numero di valori che voglio caricare nell'array il programma, non si sa perchè, non mi passa alla funzione per caricarli. Infatti, quando faccio per inserire il primo valore, XCode mi restituisce:
How many values you want to enter?
You can enter no more than 10 values
9
1
Program received signal: “EXC_BAD_ACCESS”.
sharedlibrary apply-load-rules all
(gdb)
Dove sta il problema? Inoltre, in fase di compilazione, ho un warning alla riga 41 ( lo scanf della funzione get_values ): Format '%f' expects type 'float*', but argument 2 has type 'double'
Che vuol dire?
Kwb
EDIT: Ok sono riuscito a far in modo che entri nella funzione get_values... Ho dovuto aggiungere &n alla chiama della funzione... non so perchè... Fatto sta che continua a non funzionare...
Il programma in se è molto semplice, ma l'obiettivo è quello di utilizzare le funzioni, due: una per prendere i valori e metterli in un'array, e l'altra per calcolare la media.
Ho iniziato col scrivere il main e la funzione per prendere i valori, ma ho già dei problemi perchè non capisco bene il passaggio di vettori come argomento da una funzione all'altra...
Segue il codice:
/*
* Write a program that reads how many values will be entered from the keyboard (with a maximum of n values), reads them all in an array,
* and computes the average value (arithmetic mean).
* Use separate functions for reading the data from keyboard and computing the average.
*/
#include <stdio.h>
#define MAX 10
int get_values (float collection[], int n_values);
float average();
int main ()
{
int i;
int n;
float collection[MAX];
do
{
printf("How many values you want to enter?\n");
printf("You can enter no more than %d values\n", MAX);
scanf("%d", &n);
printf("\n");
} while ( n > MAX );
i = get_values(collection, &n);
printf("N of values entered: %d\n", i);
printf("Vector: ");
for (i=0; i < n; i++)
printf("%f\t", collection[i]);
}
int get_values (float collection[], int n_values)
{
int i;
for ( i = 0; i < n_values; i++)
collection[i] = 0;
for ( i = 0; i < n_values ; i++)
{
scanf("%f", collection[i]);
}
return i;
}
Il problema si presenta quando, inserito il numero di valori che voglio caricare nell'array il programma, non si sa perchè, non mi passa alla funzione per caricarli. Infatti, quando faccio per inserire il primo valore, XCode mi restituisce:
How many values you want to enter?
You can enter no more than 10 values
9
1
Program received signal: “EXC_BAD_ACCESS”.
sharedlibrary apply-load-rules all
(gdb)
Dove sta il problema? Inoltre, in fase di compilazione, ho un warning alla riga 41 ( lo scanf della funzione get_values ): Format '%f' expects type 'float*', but argument 2 has type 'double'
Che vuol dire?
Kwb
EDIT: Ok sono riuscito a far in modo che entri nella funzione get_values... Ho dovuto aggiungere &n alla chiama della funzione... non so perchè... Fatto sta che continua a non funzionare...