Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2015, 13:19   #1
angry_frip
Новичок
Джуниор
 
Регистрация: 26.05.2015
Сообщений: 1
По умолчанию C++. Определить операции извлечения и вставки в классе.

Задание:
1) Определить класс с именем AEROFLOT, содержащий следующие поля: а) Название пункта назначения рейса; б) номер рейса; в) тип самолёта. Определить методы доступа к этим полям и перегруженные операции извлечения и вставки для объектов типа AEROFLOT.
2) Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из семи объектов типа AEROFLOT; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения; б) вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры; в) если таких рейсов нет, выдать на дисплей соответствующее сообщение

2 часть задания сделал и описал класс.

Помогите в классе описать хотя бы операции извлечения вставки.

Насчёт извлечения вставки, сказали сделать выбор (оператор выбирает вариант): или ввод вручную (как в данной программе) или извлечение вставку из файла (Т.е. в файл записывает через пробел данные вида "name number type", а извлечение уже 2 файла: 1) Отсортированный вывод записей (56-62 строка), 2) Вывод записей определённого типа самолёта (65-80 строка)

Код:
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <cstring>
 
using namespace std;
 
class aeroflot{
  public:
      char name [30];
      int number;
      char type [30];
      
      static int cmp(const void * a, const void * b)
      {
        return strcmp(((aeroflot*)a) ->name, ((aeroflot*)b) ->name);
      }
      }A[10];
      
      
 
int main(){
    setlocale(LC_ALL, "Russian");
    
 
    char type[30];
    int i = 0;
    int kol = 0;
    int n;
    
    char a [30]; 
    char b;
                   
    
        cout << "Сколько записей вы хотите ввести? (максимум 7): ";
        do{
             cin >> n;
             if (n>7){
                      cout << "Вы ввели больше 7, повторите ввод: ";
                      }
                      }while(n>7);
        
        cout << "\n\n";
        
        //Ввод записей
        for (i=0; i<n; i++){
            cout << "Введите название пункта назначения рейса : ";
                 cin >> a;
                 
                   int x; //счётчик
                   char character; //символ
                   
                   x = 0; 
                     while(a[x]){
                                 character = a[x]; //выдеделяём символ
                                 b = (char)tolower(character); //переводим его в строчный вид
                                 a[x] = b; //выделенному символу присваем строчный вид
                                 x++;
                                 }
                 strcpy (A[i].name, a);
                 
            cout << "Введите номер рейса: ";
                 cin >> A[i].number;
                 
            cout << "Введите тип самолёта: ";
                 cin >> a;
                 
                 x = 0;
                     while(a[x]){
                                 character = a[x]; //выдеделяём символ
                                 b = (char)tolower(character); //переводим его в строчный вид
                                 a[x] = b; //выделенному символу присваем строчный вид
                                 x++;
                                 }
                 strcpy ( A[i].type, a);
            cout << "\n\n";
            }
            
       
       qsort (A, n, sizeof(aeroflot), aeroflot::cmp);
 
        
        //Вывод записей
        cout << "Вывод записей на экран \n";
             for (i=0; i<n; i++){
                 cout << A[i].name <<
                  " " << A[i].number <<
                  " " << A[i].type<<"\n\n";
                 }    
        
        //Вывод записей определённого типа самолёта
        cout << "Введите тип самолёта: ";
             cin >> type;  
        
             int x = 0;
             char character;
             
             while(type[x]){
                                 character = type[x]; //выдеделяём символ
                                 b = (char)tolower(character); //переводим его в строчный вид
                                 type[x] = b; //выделенному символу присваем строчный вид
                                 x++;
                                 }
                                 
        cout << "Вывод номер рейсов и пунктов назначение, обслуживаемых типом "<<
                type<<"\n";
              
              for (i=0; i<n; i++){
                  if (strcmp(A[i].type, type)==0){
                    cout << A[i].name << setw(11) << A[i].number << endl;
                    kol++;
                  }
              }
              
              if (kol==0){
                 cout << "Таких записей нет \n";
                 }
        system ("pause");  
}

Заранее спасибо!
angry_frip вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Без операции деления на 2 определить. Си nataqwest Помощь студентам 3 19.12.2014 23:06
Прогресс извлечения файлов из архива KPOBOCiCb Компоненты Delphi 1 15.02.2013 12:35
Программа для извлечения паролей Таня.Ку Софт 7 12.05.2012 15:44
Извлечения из домена, IP адреса Dominatorsha Работа с сетью в Delphi 1 31.05.2011 13:04
Как определить время работы процедуры или операции? Roof Общие вопросы Delphi 7 18.01.2009 21:56