Programma con funzioni e struct?

di il
1 risposte

Programma con funzioni e struct?

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

1 Risposte

  • Re: Programma con funzioni e struct?

    1. Prova con l'operatore *
    *pmedia = (*psomma) / (*px);
    2. Prova a passare l'array come puntatore ad a
    void leggifile (a *);
    void faisomma(int *, int *, a *);
Devi accedere o registrarti per scrivere nel forum
1 risposte