Dimagank Опубликовано 9 января, 2007 Жалоба Поделиться Опубликовано 9 января, 2007 Я засел за книгу Страуструпа с нуля. Вообще, я знаю C++ не слишком плохо, но векторы там встретил первый раз и решил написать программу, чтобы проверить, как они работают. Вот код этой программы после исправления всех глупых ошибок (прошу прощения за слишком длинный пост); #include <iostream> #include <vector> #include <string> struct User { std::string First_Name; std::string Last_Name; int Year_Old; std::string Business; int Payment; int Capital; bool Flag; }; void Call_Error (int Error) { if (Error==0) { std::cout<<"Error 0: User does not exist.\n"; } if (Error==1) { std::cout<<"Error 1: User already exist.\n"; } if (Error==2) { std::cout<<"Error 2: Invalid number.\n"; } } void Add_User (User Spisok[], int Num, std::string a1, std::string a2, int a3, std::string a4, int a5, int a6) { // Add user to list if (Num < 1) { Call_Error (2); } if (Spisok[Num].Flag == 0) { Spisok[Num].First_Name = a1; Spisok[Num].Last_Name = a2; Spisok[Num].Year_Old = a3; Spisok[Num].Business = a4; Spisok[Num].Payment = a5; Spisok[Num].Capital = a6; Spisok[Num].Flag = 1; } else { Call_Error (1); } } void Delete_User (User Spisok[], int Num) { if (Spisok[Num].Flag == 1) { Spisok[Num].Flag = 0; } else { Call_Error (0); } } void Show_List_Users (User Spisok[], int Max) { int Num; for (Num=0; Num<Max; Num++) { if (Spisok[Num].Flag==1) { std::cout<<Spisok[Num].First_Name<<" "<<Spisok[Num].Last_Name<<", "<<Spisok[Num].Year_Old<<", "<<Spisok[Num].Business<<"for $"<<Spisok[Num].Payment<<"/m. Full capital - $"<<Spisok[Num].Capital<<"\n"; } } } void Show_User (User Spisok[], int Num) { if (Spisok[Num].Flag==1) { std::cout<<Spisok[Num].First_Name<<" "<<Spisok[Num].Last_Name<<", "<<Spisok[Num].Year_Old<<", "<<Spisok[Num].Business<<"for $"<<Spisok[Num].Payment<<"/m. Full capital - $"<<Spisok[Num].Capital<<"\n"; } else { Call_Error (0); } } void Show_Numbers_Users (User Spisok[], int Max) { int Num; for (Num=0; Num<Max; Num++) { if (Spisok[Num].Flag==1) { std::cout<<Num<<", "; } } std::cout<<"\n"; } int main() { vector<User> Spisok(1000); int n, i, Max=1000, OldMax=1000; std::string a, b, d; int c, e, f; for (n=0; n<=Max; n++) { Spisok[n].Flag = 0; } std::cout<<"\n\n\n Hello! Welcome to program 'User List 0.1'! Here you can rule your new book: you can add user, delete him, show all added users, show numbers of them (if list of them very big for your screen) and show a single user.\n\n"; Begin: std::cout<<"Choose one of following actions you need:\n"; std::cout<<"'0' - exit; '1' - add user to list; '2' - delete user from list; '3' - show user of list; '4' - show all users of list; '5' - show numbers that list has: "; std::cin>>n; if (n==0) { exit (0); } if (n==1) { std::cout<<"\nUser number: "; std::cin>>n; if (n > Max) { OldMax = Max; Max = n - 1; Spisok.resize(Max); for (i=OldMax+1; i<=Max; i++) { Spisok.Flag = 0; } } std::cout<<"/nFirst name: "; std::cin>>a; std::cout<<"/nLast name: "; std::cin>>b; std::cout<<"/nOld: "; std::cin>>c; std::cout<<"/nBusiness: "; std::cin>>d; std::cout<<"/nPayment: "; std::cin>>e; std::cout<<"/nCapital: "; std::cin>>f; Add_User (Spisok[Max], (n-1), a, b, c, d, e, f); std::cout<<"\n\n"; goto Begin; } if (n==2) { std::cout<<"Number of user: "; std::cin>>n; Delete_User (Spisok[Max], n); std::cout<<"\n\n"; goto Begin; } if (n==3) { std::cout<<"Number of user: "; std::cin>>n; Show_User (Spisok[Max], n); std::cout<<"\n"; goto Begin; } if (n==4) { Show_List_Users (Spisok[Max], Max); std::cout<<"\n"; goto Begin; } if (n==5) { Show_Numbers_Users (Spisok[Max], Max); std::cout<<"\n"; goto Begin; } return (0); } Как видно, программа создает список пользователей с их "характеристиками". Список можно "редактировать" с помощью набора определенных процедур для этого. Но программа почему-то отказывается компилиться (gcc-4.1.1-30, ессно, компилю при помощи g++), не принимая мою инициализацию вектора типа User. Сообщения выдаются следующие: Ошибки g++: Vector.cpp:170:2: warning: no newline at end of file Vector.cpp: In function ‘int main()’: Vector.cpp:105: error: ‘vector’ was not declared in this scope Vector.cpp:105: error: expected primary-expression before ‘>’ token Vector.cpp:105: error: ‘Spisok’ was not declared in this scope В инете не смог найти ничего похожего. Пробовал подключить #include <vector>, но такого не существует. Что я сделал не так? Заранее спасибо. P.S. Прошу прощения за столь идиотский вопрос Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
EL[michlen] Опубликовано 9 января, 2007 Жалоба Поделиться Опубликовано 9 января, 2007 std::vector Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Dimagank Опубликовано 9 января, 2007 Автор Жалоба Поделиться Опубликовано 9 января, 2007 Хм... Точно! Как всегда, глупейшая ошибка Большое спасибо! Тему можно закрывать... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.