|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
[C]Funzioni, vettori e passaggio per riferimento
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: 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;
}
Codice:
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) 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...
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
Ultima modifica di kwb : 06-06-2010 alle 16:40. |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Mar 2009
Messaggi: 27
|
la chiamata scanf("%f", collection[i]); è errata in quanto devi passare l'indirizzo della cella corrente della variabile collection:
scanf("%f", &collection[i]); Non ho provato a compilare il codice ma ad occhio mi sembra questo. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Grazie, funziona!
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:35.



















