Форум программистов, компьютерный форум CyberForum.ru

поиск в очень маленькой БД - C++

Восстановить пароль Регистрация
 
Feodarron
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 26
25.01.2011, 16:15     поиск в очень маленькой БД #1
Есть вот такая регистрационная форма, мне нужно по введенному имени найти всех зарегистрированных с таким же именем.
Код
#include<conio.h>
#include<string>
#include<iostream>
using namespace std;
	struct registration{
		string name;
		string surname;
		int age;
		string address;
		string email;
	};
Код
#include"stdafx.h"
#include"head_one.h"
void main(void)
{
setlocale(0,"");
registration r[10];
int n=10;
registration* r2=new registration[n];
int i=1,choice,search;
string namesearch;
cout<<"Введите данные для регистрации"<<endl;
cout<<"Введите имя"<<endl;
cin>>r[i].name;
cout<<"Введите фамилию"<<endl;
cin>>r[i].surname;
cout<<"Введите возраст"<<endl;
cin>>r[i].age;
cout<<"Введите адрес"<<endl;
cin>>r[i].address;
cout<<"Введите адрес электронной почты"<<endl;
cin>>r[i].email;
i++;
cout<<"Для повторной регистрации нажмите 1"<<endl;
cout<<"Для поиска по регистрационным данным нажмите 2"<<endl;
cout<<"Для выхода из программы нажмите 3"<<endl;
cin>>choice;
switch(choice)
{ case 1: { cout<<"Введите данные для регистрации"<<endl;
			cout<<"Введите имя"<<endl;
			cin>>r[i].name;
			cout<<"Введите фамилию"<<endl;
			cin>>r[i].surname;
			cout<<"Введите возраст"<<endl;
			cin>>r[i].age;
			cout<<"Введите адрес"<<endl;
			cin>>r[i].address;
			cout<<"Введите адрес электронной почты"<<endl;
			cin>>r[i].email;
			i++;
			
		  }
case 2:   { cout<<"Для поиска по имени введите 10"<<endl;
			cin>>search;
			switch(search)
			{case 10: { getline(cin,namesearch);
						int f;
						for(i=0;i<10;i++)
						{ f=(r[i].name).find(namesearch,0);
						  if( f!=-1)
						  	{ cout<<r[i].name<<endl;}
						}
						break;
					 }
			}
		  }
case 3:    { exit;}
}
}
в строке case 10: { getline(cin,namesearch); при выполнении программы нет этого ввода строки. на экран выдается первое имя, потом еще 9 пустых строк и конец программе. Как сделать нормальный поиск и чтобы была возможность вернуться к
Код
cout<<"Для повторной регистрации нажмите 1"<<endl;
cout<<"Для поиска по регистрационным данным нажмите 2"<<endl;
cout<<"Для выхода из программы нажмите 3"<<endl;
, а не завершение работы программы после выполнения одного из case ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
25.01.2011, 17:04     поиск в очень маленькой БД #2
нет ввода, потому что после ввода цифры объект cin оставляет во входном потоке символ \n
попробуйте так
C++
1
2
cin>>search;
cin.get();
Feodarron
0 / 0 / 0
Регистрация: 25.01.2011
Сообщений: 26
25.01.2011, 20:43  [ТС]     поиск в очень маленькой БД #3
Только вот не могли бы объяснить что происходит когда пишем
Код
cin.get();
просто не люблю писать не зная того, что пишу)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
25.01.2011, 21:07     поиск в очень маленькой БД #4
Feodarron, get ждёт ввода одного символа в поток, достаёт этот символ из потока и возвращает его. В данном случае мы просто ожидаем нажатия клавиши, поэтому сам символ нам не важен и он возвращается в никуда.
Yandex
Объявления
25.01.2011, 21:07     поиск в очень маленькой БД
Ответ Создать тему
Опции темы

Текущее время: 08:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru