Cześć,
Mam zamiar stworzyć prosty program z menu i bazą danych. Program po wybraniu opcji 1 ma pozwolić użytkownikowi na wprowadzenie nowych samochodów. Po opcji 2 ma pokazywać bazę, a po 3 ma usunąć wybraną pozycję danych konkretnego samochodu. Napotkałem sporo problemów i zwracam się z prośbą o pomoc w ich rozwiązaniu.
Proszę przetestować kod. Z tego co zauważyłem, to po wpisaniu samochodów do bazy danych i próbie ponownego wpisania te wpisane drugi raz zastępują te wpisane za pierwszym razem. Kolejny błąd to krzaczki po wyborze opcji nr 3.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct car
{
char mark[25];
char colour[25];
int mileage;
int age;
};
void add ( struct car [100] , int );
void dele ( struct car [100], int , int) ;
void show ( struct car[100], int ) ;
void clear ( void ) ;
int main()
{
int i, N = 0, del = 0;
char choose;
struct car cars[100];
char menu[] ="Choose :\n1) Add new car\n2) Show cars data\n3) Delete car data\n0) Exit ";
do
{
clear();
printf("%s\n",menu);
choose=_getch();
switch(choose)
{
case '1':
clear();
printf("How many new cars ?");
scanf("%d", &N);
add(cars, N) ;
break;
case '2':
clear();
printf("Data about cars : \n");
show (cars, N);
break;
case '3':
clear();
printf("Delete car data : ");
dele(cars, del, N);
break;
}
}while ( choose != '0' );
return 0;
}
void show(struct car cars[], int N)
{
int i ;
for (i=0; i < N; i++)
printf("%2d) Mark: %12s Colour: %10s Mileage: %6d Age: %d\n",i+1,cars[i].mark,cars[i].colour,cars[i].mileage,cars[i].age);
printf("Press key\n");
_getch();
}
void add ( struct car cars[100] , int N )
{
int i ;
for(i = 0; i < N; ++i)
{
printf("Mark : ");
scanf("%s", &cars[i].mark);
printf("colour : ");
scanf("%s", &cars[i].colour);
printf("mileage : ");
scanf("%d", &cars[i].mileage);
printf("age : ");
scanf("%d", &cars[i].age);
}
}
void dele ( struct car cars[100], int del, int N )
{
int i ;
for(i = del - 1; i < N; ++i)
{
cars[i] = cars [ i + 1 ];
}
}
void clear ()
{
system("cls");
}