Cześć, mam do zrobienia taki program:
W tablicy struktur mogą być przechowywane informacje o osobach wypożyczających książki z pewnej biblioteki, dla każdej: imię, nazwisko, data, sygnatura książki (liczba).
Program ma: dopisywać inforamcje o kolejnej osobie
znajdować info o osobie zwracającej książkę
usuwać informacje o osobie która tę książkę oddała i robić wydruk tablicy struktur.
Oto co stworzyłem:
#include <stdio.h>
#include <math.h>
struct wypozyczenie {
char imie[10];
char nazwisko[10];
char* data[10];
int sygnatura;
};
int main()
{
int i = 0, j = 0, a;
char imie2[10];
printf("podaj ile osob chcesz wpisać \n");
scanf("%d", &j);
struct wypozyczenie d[j];
a = j;
printf("podaj informacje o osobie \n");
for (i = 0; i < j; i++) {
printf("imie (maks 10 znakow) \n");
scanf("%s", &d[i].imie);
printf("nazwisko (maks 10 znakow) \n");
scanf("%s", &d[i].nazwisko);
printf("podaj sygnature ksiazki \n");
scanf("%d", &d[i].sygnatura);
printf("podaj date (odzielone kropkami) \n");
scanf("%s", &d[i].data);
printf("________________ \n");
}
printf("jesli chcesz jeszcze kogos wpisac wcisnij 1, a jesli nie to cokolwiek innego \n");
scanf("%d", &j);
switch (j) {
case 1:
printf("podaj ile osob chcesz wpisać \n");
scanf("%d", &j);
printf("podaj informacje o osobie/osobach \n");
for (i = 0; i < j; i++) {
printf("imie (maks 10 znakow) \n");
scanf("%s", &d[i].imie);
printf("nazwisko (maks 10 znakow) \n");
scanf("%s", &d[i].nazwisko);
printf("podaj sygnature ksiazki \n");
scanf("%d", &d[i].sygnatura);
printf("podaj date (odzielone kropkami) \n");
scanf("%s", &d[i].data);
printf("________________ \n");
}
break;
default:
printf("nie chciales nikogo wiecej wpisac \n");
break;
}
system("cls");
printf("podaj imie osoby oddajacej ksiazke: \n");
scanf("%s", &imie2);
for (i = 0; i < a; i++) {
if (imie2 == *d[i].imie) {
printf(" %s \n %s \n %s \n %d \n", &d[i].data, &d[i].imie, &d[i].nazwisko, &d[i].sygnatura);
j = i;
}
}
printf("jesli chcesz skasowac informacje o tej osobie to wcisnij 1, a jesli nie to cokolwiek innego \n");
scanf("%d", &i);
switch (i) {
case 1:
d[j].data = 0;
d[j].imie = 0;
*d[j].nazwisko = 0;
d[j].sygnatura = 0;
break;
default:
printf("nie chciales usuwac \n");
break;
}
printf("zawartosc tablicy to: \n");
printf("nr | data | imie | nazwisko | sygnatura | \n");
for (i = 0; i != a; i++) {
printf(" %d| %s | %s | %s | %d | \n", i + 1, d[i].data, d[i].imie, *d[i].nazwisko, d[i].sygnatura);
printf("____ \n");
}
return 0;
getch();
}
Problem jest taki:
tam gdzie jest if i porównanie dwóch imion, kiedy odpalam program tylko prosi o imię, a potem nic nie porównuje, wydruk dziwnie działa i nie wypisuje wszystkich osób. Proszę o pomoc, tylko błagam was: jestem całkiem zielony i nie tłumaczcie mi w stylu "masz UB", albo w jakiś skomplikowany sposób, tylko jak idiocie.
Przepraszam za problem.
Przepraszam jeśli znów źle oznaczyłem program, jest napisane w waszych poradnikach ```, natomiast ja uznałem że to ''', bo wcześniej nigdy ` nie używałem tego symbolu i zauważyłem różnicy, więc ostatnio zaznaczyłem przez ''', a na cpp0x, tagi były [cpp] i [cpp/] więc w pierwszych postach uznałem że tutaj też tak jest, więc jeśli znów jest źle to przepraszam jak to zobaczę to poprawię, nie musicie tego od razu wyrzucać do kosza.