С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_Anna_
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 5
#1

Какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент - C++

29.03.2013, 21:34. Просмотров 594. Ответов 2
Метки нет (Все метки)

Создать структуру с именем Subject с полями: фамилия, имя. Сформиро-вать замкнутое кольцо (односвязный список, у которого последний эле-мент хранит адрес первого) из нескольких структур. С клавиатуры вводится целое чило n. Определить, какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент (по типу детской считалочки).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 21:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент (C++):

Из последовательности удалять каждый K-ый элемент до тех пор, пока не останется одно число - C++
Всем привет. Есть следующее задание: Данна последовательность длинной N (1, 2, ..., N). Дано число K. Из последовательности удалять...

Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент - C++
Создать циклический список, в котором находятся элементы от 1 до N. Нужно написать программу, которая удаляет каждый второй элемент из...

Удалить с очереди каждый второй элемент - C++
Помогите пожалуйста, реализовать программу на С++ , мое задание: ознакомится с созданием и обработкой, удалением односвязных списков и...

Добавить элемент в середину очереди, если число элементов четное, и после середины, если нечетное - C++
Задача: сделать обычную очередь, но с еще одним методом vip_push(int a), который добавляет элемент в середину очереди, если кол-во...

Вывести содержимое списка в следующем порядке: первый элемент, последний элемент, второй элемент, предпоследни - C++
#include <iostream> #include <list> #include <iterator> void output(std::list<int> myList, std::list<int>::iterator iter1,...

Поменять местами минимальный элемент с первым элементом массива, а максимальный элемент с последним - C++
Здравствуйте. Помогите пожалуйста написать программу: для поиска минимального и максимального элементов массива из 15 действительных чисел....

2
_Anna_
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 5
04.04.2013, 21:45  [ТС] #2
Исправьте пожалуйста код. Создать структуру с именем Subject с полями: фамилия, имя. Сформиро-вать замкнутое кольцо (односвязный список, у которого последний эле-мент хранит адрес первого) из нескольких структур. С клавиатуры вводится целое чило n. Определить, какой элемент останется в кольце последним, если начать по очереди удалять из списка каждый n элемент (по типу детской считалочки).

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
struct subject
{char name[20];
char surname[20];
bool del;
subject *next;
};
subject *head=NULL;
subject *current=head;
subject *last;
int const h=5;
for (int i=0; i<h; i++)
{current=new subject;
current->next=head;
head=current;
cout<<"Структура "<<i+1<<endl;
cout<<"Фамилия: ";
cin>>current->surname;
cout<<"Имя: ";
cin>>current->name;
current->del=0;
current=current->next;
}
last=current;
current->next=head;
current=head;
cout<<"Введенный вами список:"<<endl;
for (int i=0; i<h; i++)
{cout<<"Фамилия"<<endl;
cout<<current->surname<<endl;
cout<<"Имя"<<endl;
cout<<current->name<<endl;
current=current->next;
}
cout<<"Введите n"<<endl;
int n;
cin>>n;
bool b;
int k=0;
current=head;
for (int i=0; i<h-1; i++)
{b=1;
for (int c=0; c<n; c++)
    current=current->next;
if (current->del==1)
    while (b!=0)
        {b=current->del;
        current=current->next;
        }
current->del=1;
}
cout<<"Оставшийся элемент"<<endl;
current=head;
for (int i=0; i<h; i++)
{if (current->del==0)
    {cout<<"Фамилия"<<endl<<current->surname<<endl;
    i=h;}
current=current->next;
}
getch();
}
0
_Anna_
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 5
28.04.2013, 11:50  [ТС] #3
С удалением n элемента всё равно не получается

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
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    struct subject
    {char name[20];
    char surname[20];
    bool del;
    subject *next;
    };
    subject *head=NULL;
    subject *current=head;
    subject *last;
    int const h=5;
    char c;
    //printf("Ввести данные о субъекте? д/н");
    //c=getche();     
    //формирование списка с клавиатуры
    int l=h;
    while (l!=0)//c=='д' || c=='Д')  
    {
        if (head) 
        { 
        current->next=new subject; 
        current=current->next; 
        }
        else     
        {
            head=new subject; 
            current=head;   
        }
        
        cout << "Ввод " << h-l+1 << "-й структуры" << endl;
        cout << "Фамилия: ";
        cin >> current->surname;
        cout << "Имя: ";
        cin >> current->name;
        current->next=0;
        current->del=0;
        --l;        
    }
    last=current;
    current->next=head;
    current=head;
    cout<<"Введенный вами список:"<<endl;
    for (int i=0; i<h; i++)
    {
        cout<<"Фамилия"<<endl;
        cout<<current->surname<<endl;
        cout<<"Имя"<<endl;
        cout<<current->name<<endl;
        current=current->next;  
    }
    cout<<"Введите n"<<endl;
    int n;
    cin>>n;
    bool b;
    int k=0;
    current=head;
    for (int i=0; i<h-1; i++)
    {
        b=1;
        for (int c=0; c<n; c++)
            current=current->next;
        if (current->del==1)
        while (b!=0)
        {
            b=current->del;
            current=current->next;
        }
    current->del=1;
    }
    cout<<"Оставшийся элемент"<<endl;
    current=head;
    for (int i=0; i<h; i++)
    {
        if (current->del==0)
        {
            cout<<"Фамилия"<<endl<<current->surname<<endl;
            cout<<"Имя"<<endl<<current->name<<endl;
            i=h;
        }
    current=current->next;
    }
    getch();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2013, 11:50
Привет! Вот еще темы с ответами:

Однонаправленный список элементов (удвоить каждый элемент списка) - C++
Сформировать однонаправленный список элементов типа char и написать программу следующих операций над ним: а) удвоить каждый элемент списка.

Реализовать двухсвязный список. Каждый элемент списка может содержать один объект - C++
Здравствуйте, мне нужно было реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех...

Поделить каждый элемент матрицы на элемент из этого же столбца, находящийся на главной диагонали - C++
Дана матрица А размером 8х7, поделить каждый элемент столбца на элемент этого столбца, который находится на главной диагонали, если этот...

Построить матрицу В, каждый элемент которой - минимальный элемент матрицы А из указанной области - C++
Дана матрица A (NxN размер). Нужно построить матрицу В, каждый элемент которой - минимальный элемент матрицы А из указанной области(внизу...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.