Program z prostym menu

Odpowiedz Nowy wątek
2016-05-31 16:21

Rejestracja: 4 lata temu

Ostatnio: 1 miesiąc temu

Lokalizacja: Gliwice

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");
}
edytowany 1x, ostatnio: RybaSG, 2016-05-31 16:38

Pozostało 580 znaków

2016-05-31 16:28

Rejestracja: 6 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Kraków

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.

edytowany 1x, ostatnio: szweszwe, 2016-05-31 16:53
Czy słowo proszę to jest według Ciebie rozkaz ? Przydałaby się umiejętność czytania ze zrozumieniem, co ? Nie chcesz - nie pomagaj. Bo Twoja wypowiedź to jest dopiero kpina ;) Ale rozumiem, obudziła się polska mentalność i żądza hejtu, musiałeś to zrobić. - RybaSG 2016-05-31 16:31

Pozostało 580 znaków

Odpowiedz

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