Hallo zusammen,
ich möchte einzelne Elemente der struct "z" in der Funktion "durchschnittslohn" berechnen und anschließend ausgeben.
Leider kann ich bei der Ausgabe nur ein Element ansprechen. Wie schleife ich die Elemente in der Funktion und gebe dies zurück?
ich möchte einzelne Elemente der struct "z" in der Funktion "durchschnittslohn" berechnen und anschließend ausgeben.
Leider kann ich bei der Ausgabe nur ein Element ansprechen. Wie schleife ich die Elemente in der Funktion und gebe dies zurück?
Code:
#include <stdio.h>
#include <stdlib.h>
typedef struct x
{
int nummer;
char nachname[20];
char vorname[20];
char bank[20];
char blz[9];
char konto[8];
float stundenlohn;
int anzahlStunden;
} MA;
float durchschnittslohn(int counter, struct x);
int main(void)
{
MA z[100];
char mitarbeiterDatei[]="mitarbeiter.txt";
char stundenDatei[]="stunden.txt";
FILE *ma_fp, *std_fp;
int counter, i, ma_nummer, stunden, gefunden;
if ((ma_fp=fopen(mitarbeiterDatei,"r"))==NULL)
{
printf("Mitarbeiter-Datei konnte nicht geoeffnet werden.\n");
exit(1);
}
else
printf("Mitarbeiter-Datei erfolgreich geoeffnet.\n");
if ((std_fp=fopen(stundenDatei,"r"))==NULL)
{
printf("Stunden-Datei konnte nicht geoeffnet werden.\n");
exit(1);
}
else
printf("Stunden-Datei erfolgreich geoeffnet.\n");
printf("\n");
counter=0;
while (!feof(ma_fp))
{
fscanf(ma_fp,"%d %s %s %s %s %s %f",
&z[counter].nummer,
z[counter].nachname,
z[counter].vorname,
z[counter].bank,
z[counter].blz,
z[counter].konto,
&z[counter].stundenlohn);
z[counter].anzahlStunden=0;
counter++;
}
counter--; // wieso
while (!feof(std_fp))
{
gefunden=0;
ma_nummer=0;
stunden=0;
fscanf(std_fp,"%d %d",&ma_nummer,&stunden);
for (i=0;i<counter;i++)
{
if (ma_nummer==z[i].nummer)
{
z[i].anzahlStunden+=stunden;
gefunden=1;
break;
}
}
if (!gefunden)
printf("Falsche Mitarbeiternummer: %d\n",ma_nummer);
}
printf("\n");
for (i=0;i<counter;i++)
{
printf("Gehaltsauszug\n");
printf("Name: %s, %s\n",
z[i].nachname,
z[i].vorname);
printf("Konto: %s, BLZ: %s\n",
z[i].konto,
z[i].blz);
printf("Bank: %s, Betrag: %.2f Euro\n\n",
z[i].bank,
z[i].stundenlohn*
(float)z[i].anzahlStunden);
}
printf("Counter %d\n",counter);
//Mein Funktionsaufruf (im printf)
printf("Durchschnittslohn %f\n",durchschnittslohn(counter, z[1]));
fclose(ma_fp);
fclose(std_fp);
system("PAUSE");
return 0;
}
//Meine Funktion
float durchschnittslohn(int counter, struct x z2)
{
float gesamtlohn = 0;
int i;
for (i=0;i<counter;i++)
{
gesamtlohn = gesamtlohn + z2.stundenlohn * z2.anzahlStunden;
}
return gesamtlohn/counter;
}