#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <ctime>
using namespace std;
struct List
{
char word[100];
int page[10];
List *next;
List *pred;
};
void CreateList (List *&head,int n,int *g)
{
char w[100];
List *p;
char k;
cout<<"Dobavit' element v spisok? (y/n) :";
cin>>k;
int s=0;
while (k=='y')
{
p=new List;
cout<<"vvedite slovo :";
cin>>w;
strcpy(p->word,w);
char h='y';
n=0;
cout<<"vvedite nomera stranic :"<<endl;
while (h=='y' && n<10)
{
cin>>p->page[n];
n++;
cout<<"eshe? (y/n) :";
cin>>h;
}
g=n;
s++;
p->next=head;
p->pred=head->pred;
head->pred=p;
p->pred->next=p;
cout<<"Dobavit' element v spisok? (y/n) :";
cin>>k;
}
return;
}
int PrintList (List *&head,int *g)
{
int s=0;
List *p;
p=head->next;
if (head->next==head)
{
cout<<"spisok pust";
return 0;
}
else
{
cout<<"predmetnbli ukazatel' :"<<endl;
while (p->next!=head->next)
{
cout<<p->word<<" : ";
for (int i=0;i<g;i++)
if (i!=g-1)
cout<<p->page<<",";
else
cout<<p->page<<".";
cout<<endl;
p=p->next;
s++;
}
}
return 1;
}
void search (List *&head,int r,int *g)
{
if (r)
{
int j=0;
char w[100];
List *p;
p=head->next;
cout<<"zadaite slovo : ";
cin>>w;
int f=0;
while(p->next!=head->next)
{
if (strcmp(p->word,w)==0)
{
cout<<"stranicbl : ";
for (int i=0;i<g[j];i++)
if (i!=g[j]-1)
cout<<p->page<<",";
else
cout<<p->page<<".";
f=1;
}
if (!f)
cout<<"dannoe slovo ne vstrechaets9";
j++;
p=p->next;
}
}
return;
}
int main()
{
char h;
while (1)
{
system("cls");
cout<<"sozdat' predmetnbli ukazatel' ? (y/n) :";
cin>>h;
switch (h)
{
case 'y':
{
List *head;
head=new List;
head->next=head;
head->pred=head;
int t=0;
int k[10];
CreateList(head,t,k);
system("cls");
int r=PrintList(head,k);
char q;
cout<<"iskat' slovo ? (y/n) :";
cin>>q;
while (q=='y')
{
search(head,r,k);
getch();
cout<<endl<<"iskat' slovo ? (y/n) :";
cin>>q;
}
getch();
}
break;
case 'n':
return 0;
}
}
}
Помогите разобраться с кодом программы на C++
Помогите пожалуйста разобраться с кодом программы на C++, завтра надо показать преподавателю, и объяснить что к чему. Пробовал разобраться сам, но не получается, времени уже нету, чтобы разбирать.
Очень надеюсь на вашу помощь!
[SIZE="4"]Задача (на всякий случай, может кому пригодится):[/SIZE]
Предметный указатель организован в виде линейного списка.
Каждая компонента указателя содержит слово и номера страниц, на которых это слово встречается.
Количество номеров страниц, относящихся к одному слову, лежит в диапазоне от одного до десяти.
Написать программу, которая обеспечивает:
- начальное формирование предметного указателя;
- вывод предметного указателя;
- вывод номеров страниц для заданного слова.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
Код:
Цитата:
завтра надо показать преподавателю
Цитата:
времени уже нету
главное вовремя вспомнить :D
Цитата:
Пробовал разобраться сам, но не получается,
так как болел, этого в лекциях не было, другие причины (нужное подчеркнуть).
Цитата:
struct List
{
char word[100];
int page[10];
List *next;
List *pred;
};
{
char word[100];
int page[10];
List *next;
List *pred;
};
структура, содержащая поле типа char и поле типа int. Так же содержит указатели на следующий и предыдущий элемент...
Линейные списки по другому формируются, а тут все как то смешано и перепутано. Мб чего то новое изобрели, я просто не в курсе :).
Сдачу задачи оттянул до субботы... Помогите плз! Очень прошу!
Честно скажу, решение нашел в инете.
Цитата: xiwnik
Насчет бред или нет, я немогу ничего сказать. Но код работает, я проверял.
Сдачу задачи оттянул до субботы... Помогите плз! Очень прошу!
Честно скажу, решение нашел в инете.
Сдачу задачи оттянул до субботы... Помогите плз! Очень прошу!
Честно скажу, решение нашел в инете.
Вот сюда гляньте Связные списки и посмотрите как у вас сделано. ВЫ нашли не совсем хорошее решение вашей задачи
cronya, огромное человеческое спасибо за помощь!