Witam, dostałem zadanie o treści:
Oblicz płacę pracownika fizycznego. Zadeklaruj strukturę o polach: imię nazwisko, liczba godzin, stawka, premia w %.Napisz funkcje do wczytywania danych, obliczania płacy i wyświetlania. Zastosuj przetwarzanie struktur przez zmienną i wskaźnik. Wywołaj te funkcje.
Natomiast ja poszedłem dalej i postanowiłem zrobić to tak, że użytkownik podaje liczbę pracowników, pierwsza funkcja wczytuje dane na temat tych pracowników (każdy pracownik to oddzielna tablica), druga funkcja oblicza płacę, a trzecia wyświetla... No i pojawił się problem, bo w książce którą czytam nie było za wiele o tablicach struktur, których wielkość określa użytkownik.. Napisałem tylko tyle na razie, ale już tutaj mam problemy, bo czasami jest potrzebny podwójny enter żeby pobrało wybrane dane
#include <stdio.h>
#include <stdlib.h>
struct placa
{
char imie_nazwisko[40];
float liczba_godzin;
float stawka;
float premia;
};
void wczytajDane(int n, struct placa *pracownik);
int main()
{
int n;
printf("Podaj ilosc pracownikow: ");
scanf("%d", &n);
struct placa pracownik[n];
wczytajDane(n, &pracownik);
return 0;
}
void wczytajDane(int n, struct placa *pracownik)
{
int i;
printf("Podaj imie i nazwisko pracownika\n");
for(i = 0; i < n; i++)
{
while (getchar()!='\n')
continue;
gets(pracownik[i].imie_nazwisko);
printf("\nPodaj liczbe przepracowanych godzin: ");
scanf("%f", &pracownik[i].liczba_godzin);
printf("\nPodaj stawke: ");
scanf("%f", &pracownik[i].stawka);
printf("\nPodaj premie: ");
scanf("%f", &pracownik[i].premia);
while (getchar()!='\n')
continue;
if(i<n)
printf("\nPodaj imie i nazwisko kolejnego pracownika: \n");
}
}
Co tutaj poprawić? Dobrze wywołuję wszystko itp?