Автор Тема: Помогите!!!!С/С++  (Прочитано 9401 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Хакамада

  • Старожил
  • ****
  • Сообщений: 504
  • Карма: -66
  • Пол: Женский
    • Просмотр профиля
Помогите!!!!С/С++
« : 20.12.06, 00:45:52 »
Люди!!!! Добрые люди!!!!! [love] [love] помогите студентке, не совсем мыслящей в С++, решить задачку....... пыталась , но так и не смогла сделать   ... стыдно.... -wall-
Надо создать шаблон класса "однонарпавленный линейный список". И использовать его при составлении программы, которая содержит текущую информацию о заявках на авиабилеты:
- пункт назначения,
- номер рейса,
- фамилию и инициалы пассажира,
- желаемую дату вылета.
Программа должна обеспечивать:
- хранение всех заявок в виде списка,
- добавление заявок,
- удаление заявок,
- вывод заявок по заданному номеру рейса и дате вылета,
- вывод всех заявок.
Эх, эта задачка взята из Павловской, "Программирование на языке высокого уровня" , стр 260, 5 задачка.....
............ отблагодарю....... я в безысходности,....  bb:X
Если Вы не знаете как сделать, может подскажете знающих людей???? 8:)8
Заплачу.
[elsite]  [elsite]  [elsite]  [elsite]  [elsite]


Оффлайн Joka

  • Постоялец
  • ***
  • Сообщений: 153
  • Карма: -47
  • Пол: Мужской
  • I love it!
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #1 : 21.12.06, 15:46:25 »
Могу за 30 мин налабать прогу на Delhpi и базу под нее на SQL.

Оффлайн Хакамада

  • Старожил
  • ****
  • Сообщений: 504
  • Карма: -66
  • Пол: Женский
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #2 : 21.12.06, 16:54:17 »
Мне надо на С/ С++....  bb:X
[elsite]  [elsite]  [elsite]  [elsite]  [elsite]

Lelik_*

  • Гость
Re:Помогите!!!!С/С++
« Ответ #3 : 21.12.06, 18:12:52 »
ну класс состоит из элементов, в каждом элементе указатель на следующий

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #4 : 23.12.06, 16:41:48 »
ХАКАМАДА я вчера увидел ВАШУ тему. Я написал для ВАС программу на BC++ версии 3.1
Сейчас очень много разновидностей C++, что я не могу ручаться что она может подойти под версию на которой ВАМ надо ее написать. Но в большинстве случаев синтаксис остается тот же. Я давно уже не пишу на C++  и поэтому не знаю как сейчас сопоставляются некоторые операторы и лексемы на современных версиях. Я вместо оператора GETS  поставил  SCANF, хотя строку лучше берет GETS. Вместо GETCHAR() я иногда использую GETCHE(). Если ВАМ препадают C++, то ВЫ должны знать эти операторы. Раньше когда у меня был слабее компьютер они хорошо выполнялись. Сейчас они иногда не исполняются. Возможно такая версия C++ уже плохо идет на более современных компьютерах. Но это не меняет подхода к задачи.
Вы можете их попробовать в работе. Они закомментированы знаком // - ВЫ это тоже должны знать.
Раньше когда работал на C/C++ ставил return, exit() В этой версии BC++ надо ставить return 0 или return(0), exit 0 или exit(0). Вам задали написать базу данных про авиабилеты. Я написал как ЭТО представил, так что ВЫ можете ее изменить. Да, еще я применил поиск по ПУНКТУ НАЗНАЧЕНИЯ, но ВЫ можете применить и по ФИО и по ДАТЕ ВЫЛЕТА. И еще чтобы остаться в программе ВЫ можете вместо exit(0) писать return 0
Это как ВАМ будет удобно. Также Вы можете добавить свой пункт. Все данные скидываются в файл BZavia.txt
Если ВЫ его откроете, то увидете данные. Если это то, то классы ВЫ сами напишете.
У меня эта программа работает.

Полностью программа находится в файле _prog.txt
Желаю удачи и успеха.
С уважением LEND



Я в постах приведу по частям:
/*Заявки на авибилеты*/
#include "stdio.h"
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <iostream.h>

#define FILENAME "BZavia.txt"
#define TEMPFILE "Temp"
#define MAX 20
FILE *fp, *tp, *printer;
struct BZ                  // структура с полями записей
      {
  char punktn[20];         // Пункт назначения
  char nreis[10];          // Номер рейса
  char fio[50];            // Фамилия и инициалы пассажира
  char datvl[10];          // Дата вылета
  int number;              // Номер ячейки в базе куда заносятся данные
      } disc;              // запись.диск
 int slots[MAX];
 int count;

// **********************************************
       nofind() // Функция - неудачный поиск
        {
         char pause;
         puts("\nПункт назначения с таким именем не найден");
         getche();
        // pause=getchar();
         return 0;
        }
// **********************************************
          openrw() // Открыть файл  для чтения
       {
        if((fp = fopen(FILENAME,"r")) == NULL)
         {
          printf("Невозможно открыть файл %s\n", FILENAME);
          exit(0);
         }
       if((tp = fopen(TEMPFILE,"w")) == NULL)
        {
          printf("Невозможно открыть файл %s\n", TEMPFILE);
          fclose(fp);
          exit(0);
        }
        return 0;
        }

// **********************************************
         openwr() // Открыть файл для записи
      {
       if((fp = fopen(FILENAME,"w")) == NULL)
        {
         printf("Невозможно открыть файл %s\n", FILENAME);
         exit(0);
        }
       if((tp = fopen(TEMPFILE,"r")) == NULL)
       {
       printf("Невозможно открыть файл %s\n", TEMPFILE);
       fclose(fp);
       exit(0);
       }
       return 0;
        }

// **********************************************
      getslots() // Функция определяющая - какие ячейки заняты
         {
          int index;
          index=0;
          count=0;
             if((fp = fopen(FILENAME,"r")) != NULL)
           {
             while(fread(&disc, sizeof(disc), 1, fp)==1)
              {
               slots[index]=disc.number;
               index++;
               count++;
              }
            fclose(fp);
           }
           return 0;
         }
// **********************************************
« Последнее редактирование: 23.12.06, 19:33:43 от LEND »
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #5 : 23.12.06, 16:45:10 »
// дальше
// **********************************************
     showbilet()  //вывод билета на экран
      {
       printf("Пункт назначения: %s\n",disc.punktn);
       printf("Номер рейса: %s\n",disc.nreis);
       printf("ФИО: %s\n",disc.fio);
       printf("Дата: %s\n",disc.datvl);
       printf("Номер ячейки п/п: %d\n",disc.number);
       puts("\n\n");
       return 0;
       }
// **********************************************

           chbilet()  //Изменение данных билета
             {
         char chname[20];
         char fflag;
         int pause;
         fflag='n';
         openrw();
         puts("Редактирование сведений о билете\n");
         printf("Введите название пункта назначения: ");
         scanf("%s",&chname);
         // gets(chname);
         while(fread(&disc, sizeof(disc), 1, fp)==1)
           {
            if(strcmp(disc.punktn,chname)!=0)
             fwrite(&disc, sizeof(disc), 1, tp);
           else
               {
                fflag='y';
                puts("Текущая информация\n");
                showbilet();
                puts("Новая информация\n");

    printf("Введите пункт назначения: ");
    scanf("%s",&disc.punktn);
   //  cin >> disc.punktn; для C++
   // gets(disc.punktn);
    printf("Введите номер рейса: ");
    // &disc.nreis=;
    scanf("%s", &disc.nreis);
    // gets(disc.nreis);
    printf("Введите ФИО: ");
    scanf("%s", &disc.fio);
    // gets(disc.fio);
    printf("Введите дату вылета: ");
    scanf("%s", &disc.datvl);
    // gets(disc.datvl);

      if(count>=MAX)
       {
         puts("K сожалению, свободных ячеек нет\n");
         // pause=getchar();
         getche();
       }
      else
         {
          getslot();
         }
           fwrite(&disc, sizeof(disc), 1, tp);
         }
       }
          fclose(fp);
          fclose(tp);
       if(fflag=='n')
          nofind();
       else
          {
           openwr();
            while(fread(&disc, sizeof(disc), 1, tp)==1)
            fwrite(&disc, sizeof(disc), 1, fp);
            fclose(fp);
            fclose(tp);
           }
        getslots();
        return 0;
        }

// **********************************************
  chcell()  // Изменение номера ячейки
      {
            char chname[20];
            char fflag;
            int pause;
            fflag='n';
       if(count>=MAX)
         {
           puts("K сожалению, свободных ячеек нет\n");
           // pause=getchar();
           getche();
           return 0;
         }
        openrw();
        puts("Изменение номера ячейки\n");
        printf("Введите название пункт назнчения: ");
        scanf("%s",&chname);

        // gets(chname);
        while(fread(&disc, sizeof(disc), 1, fp)==1)
         {
          if(strcmp(disc.punktn,chname)!=0)
           fwrite(&disc, sizeof(disc), 1, tp);
          else
             {
         fflag='y';
         puts("Текущая информация\n");
         showbilet();
         puts("\nНовый номер ячейки\n");
         getslot();
         fwrite(&disc, sizeof(disc), 1, tp);
             }
            }
            fclose(fp);
            fclose(tp);
           if(fflag=='n')
            nofind();
           else
             {
         openwr();
           while(fread(&disc, sizeof(disc), 1, tp)==1)
           fwrite(&disc, sizeof(disc), 1, fp);
           fclose(fp);
           fclose(tp);
             }
             getslots();
             return 0;
   }
// **********************************************
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #6 : 23.12.06, 16:47:33 »
// дальше
// ****************************************************
          loc_punkt()  // Поиск билета по пункту назначения
            {
             char name[20];
             char fflag, pause;
             fflag='n';
         if((fp - fopen(FILENAME,"r")) == NULL)
          {
           printf("Невозможно открыть файл %s\n",FILENAME);
           getche();
           return 0;
           // exit(0);
          }
             puts("Поиск билета по пункту назначения\n");
             printf("Введите название пункта назначения: ");
             // gets(name);
             scanf("%s",&name);
         while(fread(&disc, sizeof(disc), 1, fp)==1)
           {
          if(strcmp(disc.punktn,name)==0)
            {
             fflag='y';
             showbilet();
             printf("Для продолжения нажмите Enter");
             // pause=getchar();
             getche();
             putchar('\n');
            }
           }
          fclose(fp);
          fclose(tp);
          if(fflag=='n')
           nofind();
           return 0;
           }
// **********************************************
          loc_fio() // Поиск по ФИО
            {
             char name[20];
             char fflag, pause;
             fflag='n';
         if((fp - fopen(FILENAME,"r")) == NULL)
          {
           printf("Невозможно открыть файл %s\n",FILENAME);
           getche();
           return 0;
           // exit(0);
          }
             puts("Поиск билета по ФИО\n");
             printf("Введите ФИО: ");
             // gets(name);
             scanf("%s",&name);
         while(fread(&disc, sizeof(disc), 1, fp)==1)
           {
          if(strcmp(disc.fio,name)==0)
            {
             fflag='y';
             showbilet();
             printf("Для продолжения нажмите Enter");
             // pause=getchar();
             getche();
             putchar('\n');
            }
           }
          fclose(fp);
          fclose(tp);
          if(fflag=='n')
           nofind();
           return 0;
           }
// **********************************************
          loc_datvl() // Поиск по Дате вылета
            {
             char name[20];
             char fflag, pause;
             fflag='n';
         if((fp - fopen(FILENAME,"r")) == NULL)
          {
           printf("Невозможно открыть файл %s\n",FILENAME);
           getche();
           return 0;
           // exit(0);
          }
             puts("Поиск билета по ФИО\n");
             printf("Введите ФИО: ");
             // gets(name);
             scanf("%s",&name);
         while(fread(&disc, sizeof(disc), 1, fp)==1)
           {
          if(strcmp(disc.datvl,name)==0)
            {
             fflag='y';
             showbilet();
             printf("Для продолжения нажмите Enter");
             // pause=getchar();
             getche();
             putchar('\n');
            }
           }
          fclose(fp);
          fclose(tp);
          if(fflag=='n')
           nofind();
           return 0;
           }
// **********************************************

      sortcells() // Порядок возрастания номеров ячеек
       {
             struct BZ temp[MAX];
             int index, loop1, loop2, endloop;
             loop1=0;
             loop2=0;
             endloop=0;
             index = 0;
      if((fp = fopen(FILENAME,"r")) == NULL)
          {
           printf("Невозможно открыть файл %s\n", FILENAME);
           exit(0);
          }
         while(fread(&disc, sizeof(disc), 1, fp)==1)
          {
            temp[index]=disc;
            index++;
          }
          fclose(fp);
  if((fp = fopen(FILENAME,"w")) == NULL)
   {
     printf("Невозможно открыть файл %s\n", FILENAME);
     getche();
     return 0;
    // exit(0);
    }
   for(loop1=1; loop1 <MAX+1; loop1 ++)
    {
     for(loop2=0;loop2<count;loop2++)
       if (temp[loop2].number==loop1)
        {
         fwrite(&temp[loop2], sizeof(temp[loop2]), 1, fp);
         endloop++;
        }
       if(endloop==count)
        break;
     }
     fclose(fp);
     return 0;
    }
// **********************************************
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #7 : 23.12.06, 16:50:18 »
// Дальше
// **********************************************
    pbilets()  // печать билетов
        {
               if((fp = fopen(FILENAME,"r")) == NULL)
                {
            printf("Невозможно открыть файл %s\n", FILENAME);
                exit(0);
                }
           if((printer = fopen("prn","w")) == NULL)
              {
          printf("Печатающее устройство не готово к работе\n");
          fclose(fp);
          exit(0);
              }
         while(fread(&disc, sizeof(disc), 1, fp)==1)
              {

            fprintf(printer,"Пункт назначения: %s\n",disc.punktn);
            fprintf(printer,"Номер рейса: %s\n",disc.nreis);
            fprintf(printer,"ФИО: %s\n",disc.fio);
            fprintf(printer,"Дата вылета: %s\n",disc.datvl);
            fprintf(printer,"Номер ячейки п/п: %d\n",disc.number);
            // Номер ячейки можно не печатать
            fprintf(printer,"\n\n");
              }
              fclose(printer);
              fclose(fp);
              return 0;
             }
// **********************************************


// ==================== Основной модуль работы ==================
 main()
      {
      // clrscr();
       char select;
       getslots();
    do
      {
      clrscr();
       puts("Информация о авиабилетах в базе аэропорта\n");
       puts("1 Добавить новый авиабилет в базу\n");
       puts("2 Удалить авиабилет из базы\n");
       puts("3 Редактировать содержимое авиабилета\n");
       puts("4 Изменить номер ячейки\n");
       puts("5 Сортировка авиабилетов\n");
       puts("6 Найти авиабилет\n");
       puts("7 Вывести на печать\n");
       puts("8 Выйти из программы\n");
       printf("Пожалуйста, сделайте Ваш выбор: ");
     select = getchar();
     putchar('\n');
     switch(select)
    {
      case '1':
        adbilet();
        break;
      case '2':
        delbilet();
        break;
      case '3':
        chbilet();
        break;
      case '4':
        chcell();
        break;
      case '5':
        sortcells();
        break;
      case '6':
        loc_punkt();
        break;
      case '7':
        pbilets();
        break;
      case '8':
        break;
      default:
      puts("Ошибка, повторите ввод\n\n");
    }
       }
     while(select!='8');
     return 0;
     }
« Последнее редактирование: 23.12.06, 16:57:09 от LEND »
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #8 : 23.12.06, 22:25:00 »
ХАКАМАДА я дописал программу, но уже ввел класс. Про классы подробно прочитайте сами.
Только уточну - классы это не объекты(переменные), а шаблоны(типы) для создания объектов. Когда нужно, создается экземпляр класса, который называется объектом. Отношение между классом и объектом такое же, как между типом данных и переменной.
Называется класс AVIABILETS
Теперь программа будет начинаться так:
Слово aviabilets ВЫ должны ставить перед всеми функциями
      aviabilets::nofind() и т.д.
Ну вот и все.
  Надо создать шаблон класса "однонарпавленный линейный список".
  И использовать его при составлении программы, которая содержит текущую
  информацию о заявках на авиабилеты:

Может это то?!
Полностью программа находится в файле _prog2.txt
Программа у меня работает.
=================================================

/*Заявки на авибилеты*/
#include "stdio.h"
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <iostream.h>

#define FILENAME "BZavia.txt"
#define TEMPFILE "Temp"
#define MAX 20
//Класс авиабилеты
class aviabilets {
private:
FILE *fp, *tp, *printer;
 int slots[MAX];
 int count;

public:
   nofind();      // Функция - неудачный поиск
   openrw();      // Открыть файл  для чтения
   openwr();      // Открыть файл для записи
   getslots();    // Функция определяющая - какие ячейки заняты
   getslot();     // Функция ввода новой ячейки
   adbilet();     // Добавление билета
   delbilet();    // Удаление данных билета из списка
   showbilet();   // Вывод билета на экран
   chbilet();     // Изменение данных билета
   chcell();      // Изменение номера ячейки
   sortcells();   // Порядок возрастания номеров ячеек
   loc_punkt();   // Поиск билета по пункту назначения
   loc_fio();     // Поиск по ФИО
   loc_datvl();   // Поиск по Дате вылета
   pbilets();     // Печать билетов
 };
 struct BZ                  // структура с полями записей
 {
  // private:
  char punktn[20];         // Пункт назначения
  char nreis[10];          // Номер рейса
  char fio[50];            // Фамилия и инициалы пассажира
  char datvl[10];          // Дата вылета
  int number;              // Номер ячейки в базе куда заносится данные
      } disc;              // запись.диск
// **********************************************
    aviabilets::nofind() // Функция - неудачный поиск
        {
         char pause;
         puts("\nПункт назначения с таким именем не найден");
         getche();
        // pause=getchar();
         return 0;
        }
// **********************************************
     aviabilets::openrw() // Открыть файл  для чтения
       {
        if((fp = fopen(FILENAME,"r")) == NULL)
         {
          printf("Невозможно открыть файл %s\n", FILENAME);
          exit(0);
         }
       if((tp = fopen(TEMPFILE,"w")) == NULL)
        {
          printf("Невозможно открыть файл %s\n", TEMPFILE);
          fclose(fp);
          exit(0);
        }
        return 0;
        }





// **********************************************

// Здесь ВЫ дописываете все функции c aviabilets::ФУНКЦИЯ

// **********************************************




// ==================== Основной модуль ==================
 main()
      {
      aviabilets a; // Создаем объект a на основе класса aviabilets
      // clrscr();
       char select;
      a.getslots();
    do
      {
      clrscr();
       puts("Информация о авиабилетах в базе аэропорта\n");
       puts("1 Добавить новый авибилет в базу\n");
       puts("2 Удалить авиабилет из базы\n");
       puts("3 Редактировать содержимое авиабилета\n");
       puts("4 Изменить номер ячейки\n");
       puts("5 Сортировка авиабилетов билетов\n");
       puts("6 Найти авиабилет\n");
       puts("7 Вывести на печать\n");
       puts("8 Выйти из программы\n");
       printf("Пожалуйста, введите Ваш выбор: ");
     select = getchar();
     putchar('\n');
     switch(select)
    {
      case '1':
      a.adbilet();
        break;
      case '2':
      a.delbilet();
        break;
      case '3':
      a.chbilet();
        break;
      case '4':
      a.chcell();
        break;
      case '5':
      a.sortcells();
        break;
      case '6':
      a.loc_punkt();
        break;
      case '7':
      a.pbilets();
        break;
      case '8':
        break;
      default:
      puts("Ошибка, повторите ввод\n\n");
    }
       }
     while(select!='8');
     return 0;
     }
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Lelik_*

  • Гость
Re:Помогите!!!!С/С++
« Ответ #9 : 23.12.06, 23:38:40 »
LEND, там в условии вроде требуется использование шаблонов. Насколько помню в Borland C++ 3.1 их еще не было, появились в 4.5 или 5..
Хакамада зацени еще такой вариант

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #10 : 24.12.06, 17:01:31 »
2Lelik_*
Да, в условии требуется использование шаблонов.
Я с самого начала хотел предоставить самой ХАКАМАДЕ дописать классы. Потом решил, что надо дописать их самому, если уж начал писать такую программу. И опять же думал предоставить ей написать шаблон класса.
Но ВЫ написали свое сообщение:
LEND, там в условии вроде требуется использование шаблонов.
Насколько помню в Borland C++ 3.1 их еще не было, появились в 4.5 или 5..
Хакамада зацени еще такой вариант

Извиняюсь, но ВЫ плохо помните. В Borland C++ 3.1 шаблоны классов уже давно были реализованы.
Эта еще одна реализация полиморфизма не была предусмотрена только в первом компиляторе языка С++ фирмы Borland - Turbo C++ v.1.0 - механизм шаблонов еще не был приведен. Во всех последующих версиях во всех современных компиляторах шаблоны классов и функций уже существуют.
Но все равно я польщен и благодарен за то что ВЫ тоже написали программу. Я ее еще не смотрел, но уверен что она создана хорошо(маленький обьем). Ведь дойти до классов, констукторов, деструкторов и т.д. не каждый может. Я конечно могу ошибаться, но пока так предполагаю. Вот зачем дают такие задачи студентам?

2Хакамада
Про шаблоны классов обязательно прочитайте.
Полностью программа находится в файле _prog3.txt
Я продолжу.
Шаблон класса(шаблон класса aviabilets).
Легко!!!
Шаблон в студию:


/*Заявки на авибилеты*/
#include "stdio.h"
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <iostream.h>

#define FILENAME "BZavia.txt"
#define TEMPFILE "Temp"
#define MAX 20
//Шаблон - класс авиабилеты
template <class T>              // Шаблон класса aviabilets
class aviabilets {
private:
FILE *fp, *tp, *printer;
 int slots[MAX];
 int count;

public:
  nofind();      // Функция - неудачный поиск
  openrw();      // Открыть файл  для чтения
  openwr();      // Открыть файл для записи
  getslots();    // Функция определяющая - какие ячейки заняты
  getslot();     // Функция ввода новой ячейки
  adbilet();     // Добавление билета
  delbilet();    // Удаление данных билета из списка
  showbilet();   // Вывод билета на экран
  chbilet();     // Изменение данных билета
  chcell();      // Изменение номера ячейки
  sortcells();   // Порядок возрастания номеров ячеек
  loc_punkt();   // Поиск билета по пункту назначения
  loc_fio();     // Поиск по ФИО
  loc_datvl();   // Поиск по Дате вылета
  pbilets();     // Печать билетов

 };
 struct BZ                  // структура с полями записей
 {
  // private:
  char punktn[20];         // Пункт назначения
  char nreis[10];          // Номер рейса
  char fio[50];            // Фамилия и инициалы пассажира
  char datvl[10];          // Дата вылета
  int number;              // Номер ячейки в базе куда заносится данные
      } disc;              // запись.диск

// **********************************************
   template<class T>
   aviabilets<T>::nofind() // Функция - неудачный поиск
        {
         char pause;
         puts("\nПункт назначения с таким именем не найден");
         getche();
        // pause=getchar();
         return 0;
        }
// **********************************************
     template<class T>
     aviabilets<T>::openrw() // Открыть файл  для чтения
       {
        if((fp = fopen(FILENAME,"r")) == NULL)
         {
          printf("Невозможно открыть файл %s\n", FILENAME);
          exit(0);
         }
       if((tp = fopen(TEMPFILE,"w")) == NULL)
        {
          printf("Невозможно открыть файл %s\n", TEMPFILE);
          fclose(fp);
          exit(0);
        }
        return 0;
        }


// **********************************************
                                 template<class T>
// Здесь ВЫ дописываете все функции c aviabilets<T>::ФУНКЦИЯ

// **********************************************


// ==================== Основной модуль ==================
 main()
      {
        aviabilets<char> a; // Создаем объект a на основе
        char select;        // шаблона класса aviabilets
        a.getslots();
    do
      {
      clrscr();
       puts("Информация о авиабилетах в базе аэропорта\n");
       puts("1 Добавить новый авибилет в базу\n");
       puts("2 Удалить авиабилет из базы\n");
       puts("3 Редактировать содержимое авиабилета\n");
       puts("4 Изменить номер ячейки\n");
       puts("5 Сортировка авиабилетов билетов\n");
       puts("6 Найти авиабилет\n");
       puts("7 Вывести на печать\n");
       puts("8 Выйти из программы\n");
       printf("Пожалуйста, введите Ваш выбор: ");
     select = getchar();
     putchar('\n');
     switch(select)
    {
      case '1':
      a.adbilet();
        break;
      case '2':
      a.delbilet();
        break;
      case '3':
      a.chbilet();
        break;
      case '4':
      a.chcell();
        break;
      case '5':
      a.sortcells();
        break;
      case '6':
      a.loc_punkt();
        break;
      case '7':
      a.pbilets();
        break;
      case '8':
        break;
      default:
      puts("Ошибка, повторите ввод\n\n");
    }
       }
     while(select!='8');
     return 0;
     }


Желаю удачи и успеха.
Программа у меня работает.
Как только ВЫ перепишите(если конечно ВАМ еще это надо) - я удалю лишние посты.
И еще, поздравляю всех с НОВЫМ ГОДОМ!
С уважением LEND
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

VerteX

  • Гость
Re:Помогите!!!!С/С++
« Ответ #11 : 24.12.06, 17:13:06 »
Compiling...
Cpp1.cpp
C:\Documents and Settings\VerteX\Ðàáî÷èé ñòîë\Cpp1.cpp(533) : error C2065: 'clrscr' : undeclared identifier
Error executing cl.exe.


ОП!!!

Lelik_*

  • Гость
Re:Помогите!!!!С/С++
« Ответ #12 : 25.12.06, 11:26:46 »
VerteX
ты в чем компилишь-то? надо в BC++ 3.1 под DOS

LEND
маленький объем потому что это просто пример, там далеко не вся требуемая функциональность :) пусть сама добавляет функции. согласен, для студента задачка сложная слишком, разве что она на ВМК МГУ учится

Оффлайн LEND

  • Пользователь
  • **
  • Сообщений: 95
  • Карма: 155
  • Истина как всегда где-то рядом
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #13 : 25.12.06, 23:02:35 »
ХАКАМАДА!
И последний заключительный этап. Выносим шаблон класса с функциями в отдельный файл.
Я создал TEMPLATE.AVB
Ты можешь назвать файл как хочешь, только он должен быть 8 символов и расш. 3 символа - потому что
программа под DOS. 
Заносим в этот файл шаблон класса aviabilets

// =================== Файл TEMPLATE.AVB ======================
#define FILENAME "BZavia.txt"
#define TEMPFILE "Temp"
#define MAX 20
//Шаблон - класс авиабилеты
template <class T>              // Шаблон класса aviabilets
class aviabilets {
private:
FILE *fp, *tp, *printer;
 int slots[MAX];
 int count;

public:
  nofind();      // Функция - неудачный поиск
  openrw();      // Открыть файл  для чтения
  openwr();      // Открыть файл для записи
  getslots();    // Функция определяющая - какие ячейки заняты
  getslot();     // Функция ввода новой ячейки
  adbilet();     // Добавление билета
  delbilet();    // Удаление данных билета из списка
  showbilet();   // Вывод билета на экран
  chbilet();     // Изменение данных билета
  chcell();      // Изменение номера ячейки
  sortcells();   // Порядок возрастания номеров ячеек
  loc_punkt();   // Поиск билета по пункту назначения
  loc_fio();     // Поиск по ФИО
  loc_datvl();   // Поиск по Дате вылета
  pbilets();     // Печать билетов

 };
 struct BZ                  // структура с полями записей
 {
  // private:
  char punktn[20];         // Пункт назначения
  char nreis[10];          // Номер рейса
  char fio[50];            // Фамилия и инициалы пассажира
  char datvl[10];          // Дата вылета
  int number;              // Номер ячейки в базе куда заносится данные
      } disc;              // запись.диск

// **********************************************
   template<class T>
   aviabilets<T>::nofind() // Функция - неудачный поиск
        {
         char pause;
         puts("\nПункт назначения с таким именем не найден");
         getche();
        // pause=getchar();
         return 0;
        }
// **********************************************
     template<class T>
     aviabilets<T>::openrw() // Открыть файл  для чтения
       {
        if((fp = fopen(FILENAME,"r")) == NULL)
         {
          printf("Невозможно открыть файл %s\n", FILENAME);
          exit(0);
         }
       if((tp = fopen(TEMPFILE,"w")) == NULL)
        {
          printf("Невозможно открыть файл %s\n", TEMPFILE);
          fclose(fp);
          exit(0);
        }
        return 0;
        }


// **********************************************
                                 template<class T>
// Здесь ВЫ дописываете все функции c aviabilets<T>::ФУНКЦИЯ

// **********************************************
// ===========================================================

Переносим этот файл(TEMPLATE.AVB) в директорию где находятся файлы шаблонов
других классов и библиотек *.h
Ты их знаешь:
#include "stdio.h"
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <iostream.h>
и другие


Создаем другой файл - ABILET.CPP
В него переносим

// ========================= ABILET.CPP ======================
/*Заявки на авибилеты*/
#include  <template.avb> // Указываем файл шаблон класса aviabilets
#include  <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <iostream.h>

// ++++++++++++++++++++ Основной модуль ++++++++++++++++++++++
 main()
      {
       aviabilets<char> a; // Переводим в класс a
       char select;
       a.getslots();
    do
      {
      clrscr();
       puts("Информация о авиабилетах в базе аэропорта\n");
       puts("1 Добавить новый авибилет в базу\n");
       puts("2 Удалить авиабилет из базы\n");
       puts("3 Редактировать содержимое авиабилета\n");
       puts("4 Изменить номер ячейки\n");
       puts("5 Сортировка авиабилетов билетов\n");
       puts("6 Найти авиабилет\n");
       puts("7 Вывести на печать\n");
       puts("8 Выйти из программы\n");
       printf("Пожалуйста, введите Ваш выбор: ");
     select = getchar();
     putchar('\n');
     switch(select)
    {
      case '1':
      a.adbilet();
        break;
      case '2':
      a.delbilet();
        break;
      case '3':
      a.chbilet();
        break;
      case '4':
      a.chcell();
        break;
      case '5':
      a.sortcells();
        break;
      case '6':
      a.loc_punkt();
        break;
      case '7':
      a.pbilets();
        break;
      case '8':
        break;
      default:
      puts("Ошибка, повторите ввод\n\n");
    }
       }
     while(select!='8');
     return 0;
     }
Компилируем и получаем программу ABILET.EXE
Вообщем у нас есть основная программа ABILET.CPP и файл шаблон класса - TEMPLATE.AVB
Программа ABILET.EXE у меня работает. Работает и на другом компьютере.
Вот и все.
Программы TEMPLATE.AVB я переделал в TEMPLATE.TXT, а ABILET.CPP в ABILET.TXT т.к. здесь на форуме можно загружать только файлы с определенными расширениями. Потом ты их переделай как я их указал в начале. Если все сделаешь как я написал - все получится.
Желаю успешно сдать все экзамены и зачеты в этом году.
LEND
« Последнее редактирование: 26.12.06, 19:03:50 от LEND »
В мире временном, сущность которого - тлен,
Не сдавайся вещам несущественным в плен. © О.Х.

Оффлайн Хакамада

  • Старожил
  • ****
  • Сообщений: 504
  • Карма: -66
  • Пол: Женский
    • Просмотр профиля
Re:Помогите!!!!С/С++
« Ответ #14 : 27.12.06, 23:22:02 »
LEND !!!
Здравствуйте!!!  [love2]
Я благодарна Вам. Вы благородный Человек. ;--p
Как здорово, что на земле такие люди ещё остались.
Спасибо  Вам за помощь, Вы очень мне помогли.
Программа написана прекрасна, всё понятно, спасибо за комментарии.
Всё работает.
П.с. Зачем студенту такие задачи? у меня специальность - прикладная математика и информатика в хорошем университете, поэтому и требуют.
СПАСИБО!!!СПАСИБО!!!СПАСИБО!!!СПАСИБО!!!СПАСИБО!!!СПАСИБО!!!СПАСИБО!!!

[elsite]  [elsite]  [elsite]  [elsite]  [elsite]

Оффлайн eiteria

  • Новичок
  • *
  • Сообщений: 1
  • Карма: 0
    • Просмотр профиля
Re: Помогите!!!!С/С++
« Ответ #15 : 15.10.10, 01:13:16 »
проблема с этой же задачей.копмиляятор ругается и выдает ошибки.кто-нибудь спустя столько лет еще может объяснить в чем проблема?
airport.obj : error LNK2028: unresolved token (0A00030F) "public: void __thiscall aviabilets<char>::getslot(void)" (?getslot@?$aviabilets@D@@$$FQAEXXZ) referenced in function "public: int __thiscall aviabilets<char>::chbilet(void)" (?chbilet@?$aviabilets@D@@$$FQAEHXZ)

буду бесконечно благодарна!

Оффлайн Kasen

  • Старожил
  • ****
  • Сообщений: 905
  • Карма: 10
  • Пол: Мужской
  • Тупайа пихота.
    • Просмотр профиля
Re: Помогите!!!!С/С++
« Ответ #16 : 15.10.10, 09:11:02 »
проблема с этой же задачей.копмиляятор ругается и выдает ошибки.кто-нибудь спустя столько лет еще может объяснить в чем проблема?
airport.obj : error LNK2028: unresolved token (0A00030F) "public: void __thiscall aviabilets<char>::getslot(void)" (?getslot@?$aviabilets@D@@$$FQAEXXZ) referenced in function "public: int __thiscall aviabilets<char>::chbilet(void)" (?chbilet@?$aviabilets@D@@$$FQAEHXZ)

буду бесконечно благодарна!
В чем будет выражена благодарность?

Оффлайн benderrr

  • Новичок
  • *
  • Сообщений: 2
  • Карма: 0
    • Просмотр профиля
Re: Помогите!!!!С/С++
« Ответ #17 : 28.05.13, 18:35:40 »
Люди добрые, у меня таже задача. Не компилится. Кто-нить может помочь?
« Последнее редактирование: 17.06.13, 15:53:17 от benderrr »

Оффлайн GERMES

  • Постоялец
  • ***
  • Сообщений: 201
  • Карма: 124
  • Пол: Мужской
  • Жизнь это скорость
    • Просмотр профиля
Re: Помогите!!!!С/С++
« Ответ #18 : 07.06.13, 12:05:52 »
Свет далекого луча...
Удивительно, видать задача актуальна и по сей день. Почему ее задают, непонятно. А ведь сколько лет прошло.  LEND написал на все времена.

Оффлайн benderrr

  • Новичок
  • *
  • Сообщений: 2
  • Карма: 0
    • Просмотр профиля
Re: Помогите!!!!С/С++
« Ответ #19 : 17.06.13, 15:50:52 »
Свет далекого луча...
Удивительно, видать задача актуальна и по сей день. Почему ее задают, непонятно. А ведь сколько лет прошло.  LEND написал на все времена.

Можешь помочь? чет не компилится? Может я что то не так делаю? вроде все в компилятор скопипастил. Или может кто-нибудь весь код в один файл скинуть?