Strukturen + malloc() + dynamisches Feld

scremo

Grünschnabel
Hi,
ich habe hier folgende Aufgabenstellung:
"Definieren Sie ein Struktur, die für jede Person die folgenden Informationen aufnimmt.
1. Geschlecht (Typ char, m oder w)
2. Körpergröße
3. Gewicht
Schreiben Sie ein C-Programm, das n solche Datensätze einliest und in einem dynamisch angefordertem Feld speichert. Anschließen soll eine Statistik - nach Männern und Fraun getrennt - gemäß unten angegebener Form ausgegeben werden. Die Gewichtsklassen sind durch flogende Formeln bestimmt (g ... Gewicht, h ... Körpergröße).
Übergewicht: g > 1.05h - 105
Untergwicht: g < 0.8h - 80
Normalgewicht: sonst
Weiter sind das Durchschnittsgewicht und die Durchschnittsgröße nach Frauen und Männer getrennt zu bestimmen und auszugeben."

Code:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

typedef struct {
	char s;
	int h;
	int g;
} Person;

int w_hei(int x, Person *p);
int main(int argc, char *argv[]) {
	Person *ptr = NULL;
	int n, i = 0, j =0;
	int erg = 0;
	
	puts("Wieviele Personen wollen Sie eingeben? ");
	scanf("%d", &n);
	ptr = (Person *) malloc(n * (sizeof(Person)));
	if(ptr == NULL) {
		puts("Kein Speicherplatz mehr vorhanden.");
	}
	else {		
		while(i<n) {
			fflush(stdin);
			puts("Geschlecht: ");
			scanf("%c", &ptr[i].s);
			puts("Groesse: ");
			scanf("%d", &ptr[i].h);
			puts("Gewicht: ");
			scanf("%d", &ptr[i].g);
			i++;
		}
	}
	erg = w_hei(n, ptr);
	printf("%d", erg);
	free(ptr);
	return EXIT_SUCCESS;
}

int w_hei(int x, Person *p) {
	int i = 0, j = 0, w_count = 0, w_gro = 0;
	int wh = 0;

	while(i<x) {
		if(p[i].s == 'w') {
			w_count++;
			wh = p[i].h++;
		}
		i++;
	}
	return wh/w_count; 
}

Das ist zur Zeit alles was ich zusammengebracht habe.
Die Funktioniert funktioniert nicht wirklich, es wär auch nett wenn mir einer sagt ob das andere auch 100%ig funktioniert, denn so sicher bin ich mir dabei auch nicht :)

Bitte um rasche Hilfe.
 
Tschuldige, aber ich weiß ehrlich gesagt nicht wo dein Problem liegt? Vielleicht bin ich ja blind, aber... egal.
Willst du wissen ob deine Funktion w_hei() funktioniert? wofür soll die denn gut sein?
 
Heyo,
ich denke mal die "int w_hei(int x, Person *p)" funktion sollte
float als return type haben
und also

Code:
return (float)((float)wh/(float)w_count);

oder erkläre dein problem genauer
 
Zurück