Witam! Jestem początkujący i potrzebuję pomocy, sam siedziałem nad kodem już długo i po prostu nie mam pomysłów gdzie jest błąd.
Program ma pobierac dane; imie, nazwisko, pensje pracownika,
Wpisac moge poprawnie ale gdy chę wyświetlić baze danych wyskakuje dziwny błąd: liczby z kosmosu, nazwisko ma wartość null jakby nie istnialo w pamieci...
Po drugie. w funkcji "usun" tez dzieja sie dziwne rzeczy,
wklejam mój cały kod i liczę na jakąś pomoc gdzie popełniłem błędy, bo program się kompiluje poprawnie:
#include <stdio.h>
#include <stdlib.h>
#define MAX 21
int licznik = 0;
int index;
struct pracownicy {
unsigned int ID;
char imie[40];
char nazwisko[40];
float pensja;
} baza[MAX];
void koniec()
{
system("pause");
exit(0);
}
void dopisz()
{
++licznik;
if (licznik < MAX) {
printf("Podaj imie pracownika. ");
scanf("%s", &baza[licznik].imie);
printf("Teraz podaj nazwisko. ");
scanf("%s", &baza[licznik].nazwisko);
printf("Teraz podaj pensje.");
scanf("%f", &baza[licznik].pensja);
baza[licznik].ID = licznik;
}
else
printf("Baza danych pełna!");
}
void wyswietl()
{
puts("Oto lista Twoich pracownikow: ");
for (index = 0; index < licznik; index++)
printf("id pracownika: %.f, imie: %s, nazwisko: %s, pensja: %.2f zl\n", baza[index].ID, baza[index].imie, baza[index].nazwisko, baza[index].pensja);
}
void blad()
{
printf("Nie ma takiej opcji.\n");
}
void usun()
{
float id2;
if (licznik == 0)
printf("Baza danych pusta!");
else {
printf("Podaj nr id pracownika: ");
scanf("f", &id2);
for (index = 1; index < licznik; index++) {
if (baza[index].ID == id2) {
for (index; index < licznik; index++)
baza[index].ID = baza[index + 1].ID;
}
else if (index == licznik - 1)
printf("podany nr ID nie istnieje!");
}
}
}
int main(void)
{
unsigned int wybor;
while (1) {
printf(" M E N U");
printf("0 - koniec dzialania programu\n");
printf("1 - dopisanie pracownika do bazy\n");
printf("2 - usuniecie pracownika z bazy (wedlug ID)\n");
printf("3 - wyswietlenie aktualnej zawartosci bazy\n\n");
printf("Co wybierasz ? ");
scanf("%u", &wybor);
switch (wybor) {
case 0:
koniec();
break;
case 1:
dopisz();
break;
case 2:
usun();
break;
case 3:
wyswietl();
break;
default:
blad();
break;
}
}
system("PAUSE");
return 0;
}