Реализовать расписание авиарейсов. Доработать программу - 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;
    
}

Объяснение кода листинга программы

  1. Создается класс TCity с полями NameCity, NameCountry, KodCity и KodCountry.
  2. Создается класс TFlight с полями Avia, n, N, Set1, Set2, а также методы PrintInfo, IsLocal, SetCity, SetCity1, SetCity2, Check и конструкторы TFlight и TFlight(int a).
  3. В конструкторе TFlight инициализируются поля n и N, а также выделяется память под массив Avia.
  4. В методе SetCity1(char namecity1, char namecountry1, int kodcity1, int kodcountry1) создается новый объект TCity и заполняются его поля.
  5. В методе SetCity2(char namecity2, char namecountry2, int kodcity2, int kodcountry2) создается новый объект TCity и заполняются его поля.
  6. В методе Check(char namecity1, char namecity2) проверяется пустота строк namecity1 и namecity2.
  7. Если оба строковых параметра пусты, то возвращается 0, иначе возвращается 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы