Ciao a tutti, ho un problema con un programma molto semplice che ho fatto giusto per capire meglio il funzionamento di un paio di cose che mi mettono in difficoltà (struct, funzioni, puntatori...). È molto stupido ma non riesco a farlo partire, posto qui il codice:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//dichiarazione struct
struct a {
string nome;
int eta;
} persona[10];
//prototipi
void leggifile (a [10]);
void faisomma(int *, int *, a [10]);
void faimedia (int *, int *, float *);
//main
int main () {
//dichiarazioni variabili e puntatori
int somma = 0;
int x;
int *psomma, *px;
psomma = &somma;
px = &x;
float media;
//richiamo funzioni
leggifile (persona[10]);
faisomma (psomma, px, persona[10]);
faimedia (&somma, &x, &media);
//calcolo risultato
for (int j = 0; j < 10; j ++) {
if (persona[j].eta < media) {
cout<<endl;
cout<<persona[j].nome;
cout<<endl;
}
}
system("pause");
return 0;
}
//dichiarazione funzioni
void leggifile (a persona[])
{
string nome; int eta, i;
fstream file ("nomi.txt");
while (file >> nome >> eta) {
persona[i].nome = nome;
persona[i].eta = eta;
i++;
}
}
void faisomma(int *psomma, int *px, a persona[10]) {
for (int x = 0; x < 10; x++) {
psomma = psomma + persona[x].eta;
px = &x;
}
}
void faimedia (int *psomma, int *px, float *pmedia){
media = somma / x;
cout<<"Media = "<<media<<endl;
}
Potrebbero esserci svariati errori di distrazione, ma mi interessano solo due cose:
1. Mi dà un errore nell'ultima funzione dove ho usato volutamente i puntatori: capisco che il programma non possa fare calcoli su di essi ma solo sui valori a cui puntano, solo che non riesco a correggerlo e finisco solo per incasinare tutto,
2. un errore che mi dà il compilatore quando cerco di mettere il vettore di struct come parametro di una funzione: "cannot convert 'a' to 'a*' for argument '1' to void leggifile(a*)", e me lo dà uguale per tutte le funzioni (con i parametri diversi, ovviamente).
Prima di aggiungere le funzioni avevo messo tutto nel main e il programma funzionava perfettamente, adesso mi dà sempre questi errori e, quando provo a cambiare qualcosa, cambiano ma non si risolvono.
Non capisco dove sbaglio forse mi sono persa qualche passaggio importante o non saprei, ma spero che qualcuno qui possa aiutarmi