Перейти к содержанию

Вопрос по векторам


Рекомендуемые сообщения

Я засел за книгу Страуструпа с нуля. Вообще, я знаю 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. Прошу прощения за столь идиотский вопрос Smile

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...