Witam.
Zadaniem było stworzenie aplikacji konsolowej, która będzie dodawać, wyświetlać i usuwać studentów. Dodawanie działa, natomiast wyświetlanie listy studentów już nie. Oto mój kod:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<malloc.h>
struct Student
{
char* imie;
char* nazwisko;
int wiek;
int nrIndeksu;
};
struct Tablica
{
int aktualny;
struct Student studenci[20];
};
struct Tablica tablica;
void DodajStudenta(char* i, char* n, int w, int nr) {
if (tablica.aktualny < 20) {
int a = tablica.aktualny;
tablica.studenci[a].imie = malloc(strlen(i) + 1);
strcpy(tablica.studenci[a].imie, i);
tablica.studenci[a].nazwisko = malloc(strlen(n) + 1);
strcpy(tablica.studenci[a].nazwisko, n);
tablica.studenci[a].wiek = w;
tablica.studenci[a].nrIndeksu = nr;
++a;
printf("Dodano!");
}
else
printf("Nie ma miejsca");
}
void WypiszDane() {
int j = 1;
for (int i = 0;i < tablica.aktualny;i++) {
printf("\n %i. %s %s %i %i \n", j, tablica.studenci[i].imie, tablica.studenci[i].nazwisko, tablica.studenci[i].wiek, tablica.studenci[i].nrIndeksu);
j++;
}
}
int UsunPoNazwisku(char* naz) {
for (int i = 0; i < tablica.aktualny; i++) {
if (strcmp(naz, tablica.studenci[i].nazwisko) == 0) {
free(tablica.studenci[i].imie);
free(tablica.studenci[i].nazwisko);
while (i < tablica.aktualny) {
tablica.studenci[i] = tablica.studenci[i + 1];
i++;
}
tablica.aktualny--;
return tablica.studenci[i].nrIndeksu;
}
}
return -1;
}
void main() {
char pom[2];
char op = 'x';
char imie[20], nazwisko[40];
int w, nr;
tablica.aktualny = 0;
while (op != 'q') {
printf("d-dodawanie studenta\n");
printf("w-wyswietlenie tablicy\n");
printf("u-usuwanie studenta\n");
printf("q-wyjscie z programu\n");
printf("Wybierz opcje");
scanf("%1s", pom);
op = *pom;
switch (op)
{
case 'd':
printf("Wprowadz imie studenta");
scanf("%s", imie);
printf("Wprowadz nazwisko studenta");
scanf("%s", nazwisko);
printf("Wprowadz wiek studenta");
scanf("%i", &w);
printf("Wprowadz nr indeksu studenta");
scanf("%i", &nr);
DodajStudenta(imie, nazwisko, w, nr);
break;
case 'w':
WypiszDane();
break;
case 'u':
printf("Wprowadz nazwisko studenta");
scanf("%s", nazwisko);
UsunPoNazwisku(nazwisko);
break;
case 'q':
break;
}
}
}
Z góry dziękuję za odpowiedź.