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
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;
}
#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
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă