Buonasera a tutti, mi chiamo Roberto e studio ingegneria meccanica.
Cerco spesso informazioni in questo forum, ma stasera ho deciso di iscrivermi perché sto incontrando non poche difficoltà nella parte di programmazione dell'esame di informatica.
In particolare, il problema che ho stasera è il seguente:
"Scrivere una funzione che dati due vettori di uguale lunghezza (es. voti e crediti) calcoli la media pesata dei valori nel primo vettore prendendo come pesi i valori nel secondo."
Ebbene, ho scritto tutto il programma, evitando le struct e concentrandomi sull'uso di puntatori e funzioni, con scarso successo.
Faccio ancora molta fatica a capire come applicarli bene, nonostante abbia letto la teoria un'infinità di volte
Il codice, vi anticipo già, sarà abbastanza confuso.
Eccolo:
#include <stdio.h>
// funzione per inserimento dei voti
int *inserimento_voti(int n)
{
int i;
int *x;
int voti[n];
x = voti;
for (i = 0; i < n; i++) {
printf("Inserire il voto %d\t", i+1);
scanf("%d", x);
x++;
}
return x;
}
// funzione per inserimento dei crediti corrispondenti
int *inserimento_crediti(int n)
{
int i;
int *y;
int crediti[n];
y = crediti;
for (i = 0; i < n; i++) {
printf("Inserire il numero di crediti del voto %d\t", i+1);
scanf("%d", y);
y++;
}
return y;
}
// funzione calcolo media ponderata
double media_pesata(int *x, int *y, int n)
{
int i;
double numeratore = 0;
double denominatore = 0;
double media;
for (i = 0; i < n; i++) {
numeratore = numeratore + x[i] * y[i];
denominatore = denominatore + y[i];
x++;
y++;
}
media = numeratore / denominatore;
return media;
}
int main() {
int n;
printf("Numero di esami dati: ");
scanf("%d", &n);
int *v = inserimento_voti(n);
int *c = inserimento_crediti(n);
double m = media_pesata(v, c, n);
printf("La media pesata è %lf\n", m);
return 0;
}
Ora, l'ho provato usando i miei voti ma la media risulta 2.820393...
Ecco, non prenderò voti eccellenti, ma questo risultato mi sembra abbastanza improbabile
Qualcuno potrebbe dare una revisione al codice?
Grazie a tutti quelli che mi aiuteranno a uscirne