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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2009, 16:41   #1
Yura_n
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 23
По умолчанию поиск в линейном списке

Всем привет! У меня такая задачка: Текст помощи для некоторой программы организован в виде линейного списка.
Каждая компонента текста помощи содержит термин(слово)и текст,содержащий пояснения к этому термину.
Количество строк текста относящегося к одному термену составляет от одной до пяти.
Написать программу, которая обеспечивает:
1) Начальное формирование текста помощи;
2) вывод текста помощи;
3) Вывод поясняющего текста для заданого термина.

1 и 2 пункты я сделал,а вот поиск по терминам не получается.Может кто подскажет?

вот код:
Код:
#include<iostream.h>
#include<string.h>

struct text
{
	char termin[30];      
	char poiasnenie[40];
	text * next;
	text *pred;
};
text *first,*last,*temp;
void add()     // funkciia dobavlenia zapisei;
{
cout<<"Vvedite termin"<<endl;
	cin>>temp->termin;
	cout<<"Vvedite poiasnenie "<<endl;
			cin>>temp->poiasnenie;
			
			temp->next=new text;
			temp->next->pred=temp;
			temp=temp->next;
			last=temp;
		return;
}
void prosmotr()   //funkciia prosmotra vsego soderjimogo teksta;
{
	temp=first;
	while(temp!=last)
	{
			cout<<"Termin: "<<temp->termin<<endl;
			cout<<"Poiasnenie k terminu: "<<temp->poiasnenie<<endl;
			cout<<"________________________________________________"<<endl;
		temp=temp->next;
	}
}
void prosmotr1()//funkciia prosmotra poiasneniia k vvedennomu s klaviaturi terminu;
{
	char q[30];
	cout<<"vvedite termin: ";
	cin>>q;
	
}

void main()
{
	int n;
	temp = new text;
	first=temp;
	first->pred=NULL;
m:cout<<"dobaviti termin<<1>>; prosmotr vsego teksta<<2>>; prosmotr odnogo termina<<3>>;"<<endl;
	cin>>n;
switch (n){
	case 1:add(); break;
	case 2:prosmotr(); break;
	case 3:prosmotr1(); break;}
goto m;
}
Yura_n вне форума Ответить с цитированием
Старый 20.07.2009, 19:48   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
void prosmotr1()
{
	char q[30];
	cout<<"vvedite termin: ";
	cin>>q;

            temp=first;
	while(temp!=last)
	{
	    if(strcpy(q,temp->termin)==0)
               {	
	         cout<<"Termin: "<<temp->termin<<endl;
	         cout<<"Poiasnenie k terminu: "<<temp->poiasnenie<<endl;
	         cout<<"________________________________________________"<<endl;
               }
               else
               {
	         temp=temp->next;
               } 
	}
	
}

Последний раз редактировалось counter; 20.07.2009 в 19:51.
counter вне форума Ответить с цитированием
Старый 20.07.2009, 21:04   #3
Yura_n
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 23
По умолчанию

спасибо,разобрался.
мне теперь вот надо реализовать вот это:" Количество строк текста относящегося к одному термену составляет от одной до пяти. "как лучше сделать,массив char poiasnenie[5][40]; или такой же список?В общем у меня и так и так не получается...
Yura_n вне форума Ответить с цитированием
Старый 20.07.2009, 23:35   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

можно использовать массив строк char poiasnenie[5][40], что именно не получается?
counter вне форума Ответить с цитированием
Старый 21.07.2009, 00:21   #5
Yura_n
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 23
По умолчанию

я пытался сделать такой же список,но не доходит до меня как его правильно организовать.Я совсем путаюсь в этих указателях. А вот если через массив строк то что у меня не верно?::
Код:
void add()     // funkciia dobavlenia zapisei;
{
cout<<"Vvedite termin"<<endl;
	cin>>temp->termin;
	cout<<"Vvedite poiasnenie "<<endl;
	for (int i=0;i<5;i++)
	{
		for (int j=0;j<40;j++)
		cin>>temp->poiasnenie[i][j];
	}
			
			temp->next=new text;
			temp->next->pred=temp;
			temp=temp->next;
			last=temp;
		return;
}
void prosmotr()   //funkciia prosmotra vsego soderjimogo teksta;
{
	temp=first;
	while(temp!=last)
	{
			cout<<"Termin: "<<temp->termin<<endl;
			cout<<"Poiasnenie k terminu: ";
				for (int i=0;i<5;i++)
				{
					cout<<endl;
						for(int j=0;j<40;j++)
							cout<<temp->poiasnenie[i][j]<<endl;
				}
			cout<<"________________________________________________"<<endl;
		temp=temp->next;
	}
}
Yura_n вне форума Ответить с цитированием
Старый 21.07.2009, 18:40   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Код:
void add()     // funkciia dobavlenia zapisei;
{
cout<<"Vvedite termin"<<endl;
	cin>>temp->termin;
	cout<<"Vvedite poiasnenie "<<endl;
	for (int i=0;i<5;i++)
	{
		cin>>temp->poiasnenie[i];  // тут вроде так нужно, вы вводите строку  целиком а не посимвольно
	}
			
			temp->next=new text;
			temp->next->pred=temp;
			temp=temp->next;
			last=temp;
		return;
}
и тут тоже

Код:
void prosmotr()   //funkciia prosmotra vsego soderjimogo teksta;
{
	temp=first;
	while(temp!=last)
	{
			cout<<"Termin: "<<temp->termin<<endl;
			cout<<"Poiasnenie k terminu: ";
				for (int i=0;i<5;i++)
				{
					cout<<endl;
					cout<<temp->poiasnenie[i];
				}
			cout<<"________________________________________________"<<endl;
		temp=temp->next;
	}
}
counter вне форума Ответить с цитированием
Старый 22.07.2009, 01:58   #7
Yura_n
Пользователь
 
Регистрация: 15.01.2009
Сообщений: 23
По умолчанию

и еще вопрос:
в poiasnenie мне нужно целую строку вводить а не только одно слово,это через cin не получится,мне сказали через getline().Я сделал но не получается что то.Может я не правильно написал?
Код:
void add()     // funkciia dobavlenia zapisei;
{
cout<<"Vvedite termin"<<endl;
	cin>>temp->termin;
	cout<<"Vvedite poiasnenie "<<endl;
	for (int i=0;i<5;i++)
	{
		cin.getline(temp->poiasnenie[i], sizeof(temp->poiasnenie[i]));cin.getline(temp->poiasnenie[i], sizeof(temp->poiasnenie[i]));
	}
			
			temp->next=new text;
			temp->next->pred=temp;
			temp=temp->next;
			last=temp;
		return;
}
Yura_n вне форума Ответить с цитированием
Старый 22.07.2009, 17:17   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Yura_n
в poiasnenie мне нужно целую строку вводить а не только одно слово,это через cin не получится,мне сказали через getline().Я сделал но не получается что то.Может я не правильно написал?
Код:
cin.getline(temp->poiasnenie, sizeof(temp->poiasnenie));
и цикл не нужен.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.07.2009, 21:43   #9
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
и цикл не нужен.
цикл нужен, т.к. нужно ввести 5 строк


Код:
struct text
{
	char termin[30];      
	char poiasnenie[5][40];
	text * next;
	text *pred;
};
ввод
Код:
for (int i=0;i<5;i++)
{
     cin.getline(temp->poiasnenie[i], sizeof(temp->poiasnenie[i]));
}
вывод
Код:
for (int i=0;i<5;i++)
{
     cout<<temp->poiasnenie[i]<<"\n";
}
counter вне форума Ответить с цитированием
Старый 23.07.2009, 01:42   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от counter
цикл нужен, т.к. нужно ввести 5 строк
А да.. Просто когда писал, взял объявление из первого поста.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с поиском в списке Freez Общие вопросы C/C++ 1 21.05.2009 12:51
поиск IP в списке TaTT DoGG PHP 6 13.08.2008 18:53
количество фамилий в списке Гуля Паскаль, Turbo Pascal, PascalABC.NET 8 29.04.2008 13:01
Пусто в выпадающем списке? ZORRO2005 Microsoft Office Excel 6 10.01.2008 11:59