Реализовать расписание авиарейсов. Доработать программу - C (СИ)
Формулировка задачи:
Реализовать расписание авиарейсов, в котором для каждого рейса указаны: пункт назначения, время вылета, продолжительность полета, количество свободных мест. Обеспечить сортировку записей по времени прибытия и поиск записей по наличию свободных мест.
Необходимо дополнять данные, вводимые раньше (здесь они затираются, при повторном вводе)
HEEEEELLLLLPPPP
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
struct rasp
{
char punkt[20];
int time;
int polet;
int mest;
};
void input(struct rasp *a);
void output(struct rasp *a);
void sortprib(struct rasp *a,int f);
void poisk(struct rasp *a,int f);
int vvod(struct rasp *a);
void vivod(struct rasp *a,int f);
void input(struct rasp *a)
{
printf("vvedite punkt naznachenia -> ");
scanf("%s",&a->punkt);
printf("vvedite vrema vileta -> ");
scanf("%d",&a->time);
printf("vvedite prodolzitelnost poleta -> ");
scanf("%d",&a->polet);
printf("vvedite kolichestvo cvobodnix mest ->");
scanf("%d",&a->mest);
return;
}
void output(struct rasp *a)
{
printf("%s\t\t%d\t\t%d\t\t%d\n",a->punkt,a->time,a->polet,a->mest);
return;
}
void sortprib(struct rasp *a,int f)
{
int i;
struct rasp t;
printf("\sortirovano po t pribitia\n");
for(i=1;i<f;i++)
{
while((a[i].time+a[i].polet)<(a[i-1].time+a[i-1].polet))
{
t=a[i-1];
a[i-1]=a[i];
a[i]=t;
if (i>1)
i--;
}
}
return;
}
void poisk(struct rasp *a,int f)
{
int i,j;
printf("\npoisk cvobodnix mest\n");
printf("vvedite kol-vo cvobodnyx mest -> ");
scanf("%d",&j);
for(i=0;i<f;i++)
{
if (j<=a[i].mest)
output(&a[i]);
}
return;
}
int vvod(struct rasp *a)
{
int i,f,c;
f=1;
for(i=0;i<f;i++)
{input(&a[i]);
printf("\nprodolzit ? 1-yes 0-no\n");
scanf("%d",&c);
if (c==1) f++;}
return f;
}
void vivod(struct rasp *a,int f)
{
int i;
printf("Punkt Naznnia\tt vileta\tt poleta\tkolvo svobx mest\n");
for(i=0;i<f;i++)
output(&a[i]);
return;
}
void main(void)
{
struct rasp s[10];
int n,v;
clrscr();
while(1)
{
printf("\n1. vvod dannih\n");
printf("2. sortirovka po t pribitia\n");
printf("3. poisk po nalichiy cvobodnix mest\n");
printf("4. vivod dannih\n");
printf("5. VIHOD\n");
printf("\n viberete deistvie:");
scanf("%d",&v);
switch (v)
{
case 1:{n=vvod(s);break;}
case 2:{sortprib(s,n);break;}
case 3:{poisk(s,n);break;};
case 4:{vivod(s,n);break;};
case 5:{exit(1);}
}
}
}Решение задачи: «Реализовать расписание авиарейсов. Доработать программу»
textual
Листинг программы
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
class TCity{
public:
char NameCity[50];
char NameCountry[50];
int KodCity;
int KodCountry;
TCity();
~TCity();
};
class TFlight{
private:
TCity* Avia;
int n;
int N;
TCity Set1;
TCity Set2;
public:
void PrintInfo();
bool IsLocal();
TCity* SetCity();
TCity* SetCity1(char* namecity1, char* country1, int kodcity1, int kodcountry1);
TCity* SetCity2(char* namecity2, char* country2, int kodcity2, int kodcountry2);
bool Check(char* namecity1, char* namecity2);
TFlight();
TFlight(int a);
~TFlight();
};
TFlight::TFlight(){
n=0;
N=100;
Avia = new TCity[N];
}
TFlight::TFlight(int a){
n=0;
N=a;
Avia = new TCity[N];
}
TFlight::~TFlight(){
delete [] Avia;
}
TCity* TFlight::SetCity(){
if (n<N)
{
n++;
return &(Avia[n-1]);
}
else
return NULL;
}
TCity* TFlight::SetCity1(char* namecity1, char* namecountry1, int kodcity1, int kodcountry1){
TCity* e = SetCity();
if(e)
{
strcpy(e->NameCity, namecity1);
strcpy(e->NameCountry, namecountry1);
e->KodCity = kodcity1;
e->KodCountry = kodcountry1;
}
return e;
}
TCity* TFlight::SetCity2(char* namecity2, char* namecountry2, int kodcity2, int kodcountry2){
TCity* f = SetCity();
if(f)
{
strcpy(f->NameCity, namecity2);
strcpy(f->NameCountry, namecountry2);
f->KodCity = kodcity2;
f->KodCountry = kodcountry2;
}
return f;
}
bool TFlight::Check(char* namecity1, char* namecity2){
if((namecity1 = "\0") && (namecity2 = "\0"))
return 0;
else
return 1;
}
Объяснение кода листинга программы
- Создается класс TCity с полями NameCity, NameCountry, KodCity и KodCountry.
- Создается класс TFlight с полями Avia, n, N, Set1, Set2, а также методы PrintInfo, IsLocal, SetCity, SetCity1, SetCity2, Check и конструкторы TFlight и TFlight(int a).
- В конструкторе TFlight инициализируются поля n и N, а также выделяется память под массив Avia.
- В методе SetCity1(char namecity1, char namecountry1, int kodcity1, int kodcountry1) создается новый объект TCity и заполняются его поля.
- В методе SetCity2(char namecity2, char namecountry2, int kodcity2, int kodcountry2) создается новый объект TCity и заполняются его поля.
- В методе Check(char namecity1, char namecity2) проверяется пустота строк namecity1 и namecity2.
- Если оба строковых параметра пусты, то возвращается 0, иначе возвращается 1.