Spotykam się dziś z następującym problemem: napisałem program który wykorzystuje zagnieżdżone struktury, oraz tworzy tablicę takich struktur tworząc prostą bazę danych z możliwością edytowania jej przez użytkownika oraz wypisywania jej aktualnego stanu (jest interaktywne menu). Wszystko działa tak jak chciałem. Chciałbym jednak aby czynności w case1 i case 2 (wpisywanie i wypisywanie) odbywały się w osobnych funkcjach, a casy jedynie wywoływały te funkcje. Chciałbym uzyskać pomoc jak powinny wyglądać te funkcje, ich argumenty oraz wywołania.
#include <stdio.h>
#include <stdlib.h>
#define dl 50
const char * teksty[4]=
{
"Model: ",
"Procesor: ",
"Grafika: ",
"Cena: "
};
struct specyfikacja
{
char procesor[dl];
char grafika[dl];
};
struct komputer
{
char model[dl];;
struct specyfikacja SPC;
float cena;
};
int main()
{
int i=0;
int spr;
struct komputer PC[dl];
int licznik=0;
int menu;
int koniec=0;
while(1)
{
printf("MENU:\n");
printf("Dopisanie nowych komputerow do listy.[1]\n");
printf("Wypisanie aktualnego stanu bazy danych.[2]\n");
printf("Zakonczenie dzialania programu.[3]\n");
scanf("%d", &menu);
switch(menu)
{
case 1:
while(1)
{
fflush(stdin);
printf("Podaj model komputera.\n");
gets(PC[i].model);
printf("Podaj typ procesora.\n");
gets(PC[i].SPC.procesor);
printf("Podaj typ grafiki.\n");
gets(PC[i].SPC.grafika);
printf("Podaj cene.\n");
scanf("%f", &PC[i].cena);
fflush(stdin);
licznik++;
i++;
printf("Czy chcesz wprowadzic nastepny komputer?\n TAK-1, NIE-0\n");
scanf("%d", &spr);
fflush(stdin);
if (spr==0)
break;
else
continue;
}
break;
case 2:
fflush(stdin);
for(i=0 ; i<licznik ; i++)
{
printf("PC%d: \n", i+1);
printf("%s%s\n", teksty[0], PC[i].model);
printf("%s%s\n", teksty[1], PC[i].SPC.procesor);
printf("%s%s\n", teksty[2], PC[i].SPC.grafika);
printf("%s%.2f\n", teksty[3], PC[i].cena);
}
break;
case 3:
koniec=1;
break;
default:
koniec=1;
break;
}
if(koniec==1)
break;
else
continue;
}
system("pause");
return 0;
}