Всем добрый день.
Подскажите, пожалуйста. Написал такую программу в Builder 6, где все прекрасно работает. Но нужно (увы), чтобы программа работала и в Builder 5.
А она показывает ошибки. Сначала ругалась на ' it-> ' - я заменил на ' (*it). ' и теперь с этим нормально
Но появились другие ошибки - смотрите скриншот. http://tlt-images1.narod.ru/img/4e0e03a81d43f.jpg
Что делать - не пойму.
| Код | #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; }
|
|