Program z prostym menu

0

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");
}
1

To może napisz konkretnie jakie są problemy a nie dajesz kod i każesz siebie testować i poprawiać. Kpina!

Edit!
Za każdym razem dodając nowy samochód zaczynasz indeksować tablicę gdzie je przechowujesz od 0 przez to nadpisujesz już dodane dane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1