Codice:
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
void riempiArray(int arr[], int elem, int count);
void somma_diff_media(int arr[], int elem, int count, int *somma, int *diff, double *media);
int main()
{
int num_elem = 10; /*10 è generico numero che poi viene sostituito, un riempitivo per evitare l'errore generato dal non dichiarare la dimensione dell'array*/
int array[num_elem];
int contatore;
int sommaMAIN;
int diffMAIN;
double mediaMAIN;
riempiArray(array, num_elem, contatore);
somma_diff_media(array, num_elem, contatore, &sommaMAIN, &diffMAIN, &mediaMAIN);
printf("La somma è %d \n", sommaMAIN);
printf("La differenza è %d \n", diffMAIN);
printf("La media è %f \n", mediaMAIN);
return 0;
}
void riempiArray(int arr[], int elem, int count)
{
int num;
int i=0;
count=0;
printf("Inserisci i numeri che compongono l'array, max 20. Inserisci un numero negativo per terminare il ciclo.");
do{
scanf("%d", &num);
arr[i] = num;
count = i;
i++;
}while (i < MAX && num >= 0);
elem = count;
for(i = 0; i<count; i++){
printf("Il valore dell'array nel posto %d è: %d \n", i, arr[i]);
}
}
void somma_diff_media(int arr[], int elem, int count, int *somma, int *diff, double *media) //funzione ancora incompleta, per ora dovrebbe calcolare solo la somma
{
int i=0;
for(i=0; i<count; i++){
*somma = *somma + arr[i];
}
}
molto semplicemente questo codice deve essere composto dal main che chiama un'unica funzione (ovvero somma_diff_media) che poi calcola somma,differenza e media dei numeri inseriti e memorizzati in un array tramite la funzione riempiArray, la quale funziona.
Il problema sta nel calcolo della somma (non ho ancora scritto niente per differenza e media). Essendo somma_diff_media una sola funzione che deve restituirmi 3 valori, l'unico modo è usare i puntatori.
Però quando lo eseguo, al posto di calcolare la somma mi escono numeri stranissimi, probabilmente indirizzi di memoria anche se non ne sono sicuro. Ci sto lavorando da ore senza venirne a capo, perciò se qualcuno potesse farmi vedere come calcolare e passare correttamente la somma gliene sarei molto grato.
Per completezza la consegna dell'esercizio è questo:
Dati in ingresso massimo 20 numeri (ma possono essere anche meno, terminare la lettura inserendo un qualsiasi numero negativo), scrivere un programma che, attraverso funzioni, permetta di:
1. Calcolare la somma e la differenza di tutti i numeri inseriti; 2. Calcolare la media (usando la funzione precedente) 3. Restituisce solo i numeri pari (non usare i puntatori) 4. Determinare se il numero è primo o meno (restituisce 1 se primo, 0 se non primo) 5. Restituisce solo i numeri primi (nuovo array).
1. Calcolare la somma e la differenza di tutti i numeri inseriti; 2. Calcolare la media (usando la funzione precedente) 3. Restituisce solo i numeri pari (non usare i puntatori) 4. Determinare se il numero è primo o meno (restituisce 1 se primo, 0 se non primo) 5. Restituisce solo i numeri primi (nuovo array).