Informatică, întrebare adresată de anabuzenco, 9 ani în urmă

Se consideră un depou de locomotive cu o singură intrare și cu o singură linie de cale ferată, care poate cuprinde oricâte locomotive. Să se scrie programul care realizează dispecerizarea locomotivelor din depou. Programul prelucrează comenzi de intrare în depou a unei locomotive, de ieșire din depou a unei locomotive și de afișare a locomotivelor din depou.
Ajutati-ma cineva, va rog. Rezolvarea in c++ si Pascal.

Răspunsuri la întrebare

Răspuns de Utilizator anonim
5
#include <stdio.h>
#include <stdlib.h>
typedef struct n
{
    int cod;
    struct n *urm;
} nod;

void afisare_meniu()
{
    printf("1. Display the depou\n2. Add locomotiva\n3. Remove locomotiva\
               \n4. Exit\n\nCititi o valoare in [0,4]: ");
}

void adaugare_stiva(nod **vf, int x)
{
    nod*p;
    p=(nod*)malloc(sizeof(nod));
    p->cod=x;
    p->urm=*vf;
    *vf=p;
}

void afisare_stiva(nod* vf)
{
    if(vf==NULL)
        printf("Depou gol");
    else
        while(vf!=NULL)
        {
            printf("%d | ",vf->cod);
            vf=vf->urm;
        }
    printf("\n");
}

void stergere_stiva(nod **vf)
{
    nod *x;
    x=(*vf);
    (*vf)=(*vf)->urm;
    free(x);
}

int main()
{
    nod *vf=NULL;
    int opt,x;
    while(1)
    {
citire:
        afisare_meniu();
        scanf("%d",&opt);
        if(opt==4)
        {
            printf("\nTerminare program. Apasati o tasta pentru iesire");
            getch();
            return 0;
        }
        switch(opt)
        {
        case 1:
            afisare_stiva(vf);
            printf("Apasati o tasta pentru continuare");
            getch();
            system("cls");
            break;
        case 2:
            printf("Codul locomotivei: ");
            scanf("%d",&x);
            adaugare_stiva(&vf,x);
            printf("Apasati o tasta pentru continuare");
            getch();
            system("cls");
            break;
        case 3:
            stergere_stiva(&vf);
            printf("Locomotiva a fost deletata");
            printf("\nApasati o tasta pentru continuare");
            getch();
            system("cls");
            break;
        default:
            system("cls");
            printf("Valoare necunoscuta. Cititi din nou:\n\n");
            goto citire;
            break;
        }

    }
    printf("\nTastati o tasta pentru terminare");
    getch();
    return 0;
}
Alte întrebări interesante