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

Двухсвязные списки - C++

Восстановить пароль Регистрация
 
fantomart
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 41
11.05.2011, 14:59     Двухсвязные списки #1
Нужна программа считалочка. Т.е. допустим сидят четверо детей и один из них по этой считалочке считает. на ком закончил, тот вылетает. И так пока не останется один. Количество слов в считалочке вводим с клавиатуры. Вывести как они вылетают - порядок и кто выйграл. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2011, 14:59     Двухсвязные списки
Посмотрите здесь:

C++ списки С++
C++ C++ списки
C++ Списки в С++
C++ списки
C++ Списки
Списки в c++ C++
Списки, как склеить списки между собой? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
olleg90
 Аватар для olleg90
34 / 34 / 6
Регистрация: 06.01.2011
Сообщений: 90
12.05.2011, 10:29     Двухсвязные списки #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
#include <fstream>
 
using namespace std;
 
/*структура узла*/
struct node 
{
  char name[15]; // Информационное поле
  node *rlink, *llink; // Поля для связи с другими полями
};
 
void main()
{
setlocale  (LC_CTYPE,"rus");
node *k,*q,*l,*r; 
int i=0,round=1,words,persons=0;
char f_name[15],word[20],string[80];
 
//ввод из файла
cout<<"Введите имя файла с участниками считалки"<<endl;
cin>>f_name;
ifstream person(f_name);
if(!person) {
            cerr<<"Файл не найден"<<endl;//сообщение если файл ненайден 
            system ("pause");
            return;
            }
 
/*формируем первый узел*/
k = new node;
person>>k->name;
k->rlink = NULL;
k->llink = NULL;
q= r = k;
persons++;
/*формируем остальные узлы*/
while(!person.eof())
{
    k = new node;
    k->rlink = q;
    q->llink = k;
    q = k;
    person>>k->name;    
    persons++;
}
/*после формирования*/
q->llink = NULL;
l = q;
 
person.close();
 
cout<<"Введите имя файла с самой считалочкой"<<endl;
cin>>f_name;
ifstream in (f_name);
if(!in) {   cerr<<"Файл не найден"<<endl;//сообщение если файл ненайден 
            system ("pause");
            return;
        }
 
while(!in.eof()){i++;in>>word;}
words=i;
cout<<"слов в считалке "<<words<<endl;
 
 
/*выводим имена слева направо и справо налево*/
k = r;
cout<<"имена (по порядку)"<<endl<<"-------------------"<<endl;
while (k != NULL)   
{
    cout<<k->name<<endl;
    k=k->llink;
}
k = l;
cout<<"имена (реверс)"<<endl<<"-------------------"<<endl;
while (k != NULL)   
{
    cout<<k->name<<endl;
    k=k->rlink;
}
 
/*делаем список циклическим*/
r->rlink=l;
l->llink=r;
system ("pause");
/*формируем отчет*/
ofstream out ("log.txt");
out<<"считалочка: "<<endl;
in.seekg(0);//указатель в начало потока 
while(in.getline(string,sizeof(string)))out<<string<<endl;
out<<"###############################"<<endl;
out<<"слов в считалочке найдено "<<i<<endl;
out<<"###############################"<<endl;
 
node *tmp=l;
 
while (persons!=1)
{
    out<<"раунд №"<<round<<endl<<"игроки: "<<endl;
    k=tmp;
    i=persons;
    while(i--)
    {
        out<<k->name;
        k=k->llink;
        if (i)out<<",";
        else {out<<"."<<endl; break;}
    }
    i=words;
    k=tmp;
    while (i--)
    {
        k=k->rlink;
        cout<<k->name<<endl;
    }
    tmp=k->rlink;
    out<<"В этом раунде победил(а) "<<k->name<<endl;
    k->rlink->llink=k->llink;
    k->llink->rlink=k->rlink;
    delete k;
out<<"###############################"<<endl;
round++;
persons--;
}
out<<"остался "<<tmp->name;
out.close();
}
Вложения
Тип файла: txt person.txt (58 байт, 19 просмотров)
Тип файла: txt text.txt (103 байт, 17 просмотров)
Yandex
Объявления
12.05.2011, 10:29     Двухсвязные списки
Ответ Создать тему
Опции темы

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