Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Illegal structure operation, В 5 версии ошибки, а в 6 - нет 
:(
    Опции темы
I_Am_Rock
  Дата 1.7.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: нет
Всего: 15



Всем добрый день.

Подскажите, пожалуйста.
Написал такую программу в Builder 6, где все прекрасно работает.
Но нужно (увы), чтобы программа работала и в Builder 5.

А она показывает ошибки.
Сначала ругалась на ' it-> ' - я заменил на ' (*it). ' и теперь с этим нормально

Но появились другие ошибки - смотрите скриншот. http://tlt-images1.narod.ru/img/4e0e03a81d43f.jpg

Что делать - не пойму.  smile 

Код

#include <fstream>
#include <stdlib>
#include <stdio>
#include <algorithm>
#include <list>

// пространство имен std
using namespace std;

// стуктура для хранения данных автобуса
struct autobus
{
        int num_auto;           // номер автобуса
        char fio[30];           // ФИО
        int num_route;          // номер маршрута
};

// функция для выезда и въезда автобуса
// два аргумента: списки - из какого и куда
// список (list) с шаблонным типом - структорой автобуса
void autoMove(list<autobus>& a_list, list<autobus>& b_list)
{
        int i;
        list<autobus>::iterator it;                     // итератор списка
        printf("Vvedite nomer avtobusa: ");
        scanf("%d", &i);                                // вводим номер автобуса
        // циклом проходим по списку, инициализируя итератор it первым элементом
        for (it = a_list.begin(); it != a_list.end(); it++)
                if ((*it).num_auto == i) break;   // если находим номер, выходим из цикла
        // если не дошли до конца (т.е. нашли номер)...
        if (it != a_list.end())
                b_list.splice (b_list.end(), a_list, it); // перемещаем
        // ...иначе
        else printf("Etogo avtobusa v etom spiske net\n");
}

// функция для отображения списка с автобусами
// аргумент - какой именно список (в парке или в пути)
void autoList(list<autobus>& a_list)
{
        list<autobus>::iterator it;     // итератор
        // если рамер списка не равен 0 (т.е. есть элементы)...
        if (a_list.size() != 0)
                // то проходим циклом с итератором it
                for (it = a_list.begin(); it != a_list.end(); it++)
                        // выводим результаты
                        printf("%d\t%s\t%d\n", (*it).num_auto, (*it).fio, (*it).num_route);
        // ...иначе
        else printf("Spisok pust!\n");
}


// главная программа
int main(int argc, char* argv[])
{
        int r, i;                       // вспомогательные переменные
        list<autobus> in_park;          // список автобусов в парке
        list<autobus> in_route;         // список автобусов в пути
        autobus buf;

        printf("Vibor tipa vvoda dannyh:\n1) iz faila\n2) s pomosh'u klaviatury\n\n");
        scanf("%d", &r);

        if (r == 1) {                           // если 1, то из файла...
        
                ifstream in("auto.txt");
                // заполняем список автобусами
                // пока не достигнем конца файла
                while ( !in.eof() ) {
                        in >> buf.num_auto;
                        in >> buf.fio;
                        in >> buf.num_route;
                        in_park.push_back(buf);
                }
                system("CLS");
                printf("Dannye zagruzheny\n");
                system("PAUSE");

        } else if (r == 2) {                    // ...если 2, то с клавиатуры...
        
                system("CLS");
                printf("Vvod kolichestva voditelei: ");
                // узнаем сколько автобусов пользователь введет
                scanf("%d", &i);

                // в цикле заполняем список автобусов
                for (; i > 0; --i)
                {
                        printf("Nomer avtobusa: ");
                        scanf("%d", &buf.num_auto);
                        printf("FIO voditely: ");
                        scanf("%s", &buf.fio);
                        printf("Nomer marshruta: ");
                        scanf("%d", &buf.num_route);
                        in_park.push_back(buf);
                }

                printf("\nDannye zagruzheny\n");
                system("PAUSE");

        } else return 0;                        // ...иначе выходим


        // цикл с постусловием
        do {
                // очищаем экран
                // и выводим меню
                system("CLS");
                printf("Menu:\n1) Avtobus uehal\n2) Avtobus priehal\n");
                printf("3) Spisok, kto v parke\n4) Spisok, kto uehal\n0) Vihod\n\n");
                scanf("%d", &r);
                system("CLS");
                // что ввел пользователь
                switch (r)
                {
                        case 1:
                        printf("1) Avtobus uehal\n\n");
                        // autoMove - из парка в путь
                        autoMove(in_park, in_route);
                        break;

                        case 2:
                        printf("2) Avtobus priehal\n\n");
                        // autoMove - в парк
                        autoMove(in_route, in_park);
                        break;

                        case 3:
                        printf("3) Spisok, kto v parke\n\n");
                        // autoList - список, кто в парке
                        autoList(in_park);
                        break;

                        case 4:
                        printf("4) Spisok, kto uehal\n\n");
                        // autoList - список, кто уехал
                        autoList(in_route);
                        break;
                }
                system("PAUSE");

        } while (r != 0);       // условие выхода - нажатие 0

        return 0;
}


PM MAIL WWW   Вверх
borisbn
Дата 4.7.2011, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



I_Am_Rock, открой этот list.h (где-то в каталоге дебилдера) и посмотри, что там на 676-й строке.
Возможно list требует, чтобы в твоей структуре был описан оператор <.

и ещё, ты говоришь
Цитата(I_Am_Rock @  1.7.2011,  20:38 Найти цитируемый пост)
Написал такую программу в Builder 6, где все прекрасно работает.Но нужно (увы), чтобы программа работала и в Builder 5.

а на скрине не Builder, а Borland C++. Чему верить ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0482 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.