Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 14:58   #1
Alt_Shift
Пользователь
 
Аватар для Alt_Shift
 
Регистрация: 11.11.2010
Сообщений: 74
По умолчанию поиск (сравнение) строки {С++}

Добрый день всем и с прошедшим праздником.

Понимаю что у всех болят головы сегодня и немного не до программирования, но все же вопрос

Есть класс под названием Biblioteka с четырьмя полями в нем.
Код:
Biblioteka *test;
	test=new Biblioteka[kol];
	for (i=0;i<kol;i++)
		{
			cout<<"Введите по очереди название, автора, год выпуска и группу книги \n";
			cin>>n;
			cin>>a;
			cin>>y;
			cin>>v;
		test[i].set(n,a,y,v);
		}
После заполнения необходимо организовать поиск по полям. И вот тут я немогу сообразить как это сделать правильно. Мой вариант поиска по названию не работает

Код:
	char *test1;
	test1=new char[20];
	cin>>test1;
for(i=0;i<kol;i++)
		{
		strcmp(test1,n);
		if(test1==n)
		{cout<<n;
		}
		else
			cout<<"не найдено \n";
		}
понимаю что загвоздка в переборе полей, но не могу понять куда всунуть i для перебора.
Alt_Shift вне форума Ответить с цитированием
Старый 25.04.2011, 19:26   #2
Alt_Shift
Пользователь
 
Аватар для Alt_Shift
 
Регистрация: 11.11.2010
Сообщений: 74
По умолчанию

ап............
Alt_Shift вне форума Ответить с цитированием
Старый 25.04.2011, 19:53   #3
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

А что это за крутой такой метод сравнивания строк?
Код:
strcmp(test1,n);
		if(test1==n)
Не находите немного странным? strcmp сравнивает строки, а вы зачем-то потом еще и указатели сравниваете.
mMAg вне форума Ответить с цитированием
Старый 25.04.2011, 20:21   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
bool found=false;
for(i=0;i<kol;i++)
{
	if (strcmp(test1,test[i].n)==0) { cout << n; found=true; break;} //здесь чуть исправил. ошибся малька.
}
if (!found) { cout << "no matches\n"; }
как-то так

Последний раз редактировалось onewho; 25.04.2011 в 20:34.
onewho вне форума Ответить с цитированием
Старый 25.04.2011, 20:22   #5
Alt_Shift
Пользователь
 
Аватар для Alt_Shift
 
Регистрация: 11.11.2010
Сообщений: 74
По умолчанию

угу, просто со строчными функциями и указателями я не очень дружу. Только где я сравниваю указатель?
Alt_Shift вне форума Ответить с цитированием
Старый 25.04.2011, 20:27   #6
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Цитата:
Сообщение от Alt_Shift Посмотреть сообщение
угу, просто со строчными функциями и указателями я не очень дружу. Только где я сравниваю указатель?
Код:
strcmp(test1,n);
- сравнение строк

Код:
if(test1==n)
- сравнение указателей на первый элемент строки

Вам просто нужно сравнение строк в if вставить.
mMAg вне форума Ответить с цитированием
Старый 25.04.2011, 20:29   #7
Alt_Shift
Пользователь
 
Аватар для Alt_Shift
 
Регистрация: 11.11.2010
Сообщений: 74
По умолчанию

Спасибо, ребята, разобрался
Alt_Shift вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение записи и строки BaronVik Паскаль, Turbo Pascal, PascalABC.NET 2 06.02.2011 22:23
Оптимальный поиск и сравнение строк Utkin Общие вопросы по программированию, компьютерный форум 19 30.06.2010 14:54
Сравнение строки Lifefine Помощь студентам 3 07.03.2010 01:37
Поиск и сравнение vivarius Microsoft Office Excel 9 08.05.2009 12:14
поиск и сравнение в Бд на C++ Жека:) Помощь студентам 9 07.12.2008 18:02