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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Посимвольным считыванием файла определить, является он символьным или бинарным http://www.cyberforum.ru/cpp-beginners/thread1160236.html
Условие : Посимвольным считыванием файла определить, является он символьным или бинарным, вывести статистику (наиболее часто используемые символы). Помогите разобраться с условием.Я знаю что есть режимы работы с файлами(символьный и бинарный).но не пойму как я буду поcимвольно определять какой это файл.
C++ После компилировки программа вылетает Я решил написать простенькую программу по преобразованию градусов Цельсия в градусы Фаренгейта в Code::Blocks ,но после компилировки когда я ввожу значение цельсия и нажимаю Enter то программа вылетает, но в конструкторе(Code::Blocks) когда я нажимаю Run всё прекрасно работает.Как сделать так что бы не вылетало?:help: // Классическое начало. #include <stdio.h> #include <iostream> int main... http://www.cyberforum.ru/cpp-beginners/thread1160218.html
C++ Распечатать анкетные данные студентов, получивших на последней сессии оценки "2".
Распечатать анкетные данные студентов, получивших на последней сессии оценки "2".
C++ Напишите программу для нахождения всех слов, которые встречаются в каждом из двух предложений.
Напишите программу для нахождения множества всех слов, которые встречаются в каждом из двух заданных предложений.
C++ MPI процессы http://www.cyberforum.ru/cpp-beginners/thread1160185.html
пусть n-количество процессов. процесс с номером 0 запрашивает у пользователя элементы квадратной матрицы размерности n и рассылает их всем остальным так, что i-ый процесс получает i-ую строку матрицы. затем i-ый процесс вычисляет произведение элементов в i-ом столбце матрицы и прибавляет к нему i.вычисленные значения собираются на процессе с номером 0 и выводятся на экран.вычисления выполняются с...
C++ Вычислить сумму тех целых чисел на интервале(A,B), которые равны двойке в произвольной целой степени Что то я задачку не понял , может кто объяснить? Вычислить сумму тех целых чисел на интервале(A,B), которые равны двойке в произвольной целой степени. подробнее

Показать сообщение отдельно
RoNNeR
1 / 1 / 1
Регистрация: 27.07.2012
Сообщений: 22
28.04.2014, 17:06     Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент
Создать циклический список, в котором находятся элементы от 1 до N. Нужно написать программу, которая удаляет каждый второй элемент из списка и в конце выводит на экран последний оставшийся элемент.
Код:
C++ (Qt)
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
// списки.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Node
    {int Num;
    Node* next;
    
    };
 
typedef Node *PNode;
 
void Add (int x, Node *Head);
 
void Show (PNode Head, int z);
void Del (int x, Node *Head);
 
 
int _tmain(int argc, _TCHAR* argv[])
{Node *Head,*Tail;
Head = Tail = 0;
int size = 0;
int n,i;
PNode Sp = new Node;
Sp -> Num = 1;
Sp -> next = NULL;
cout << "enter N\n";
cin >> n;
 
Add (n, Sp);
Show (Sp, n);
Del (n, Sp);
 
cout << endl << endl;
 
Show (Sp, n);
 
system ("pause");
    return 0;
}
 
void Add (int x, Node *Head)
    {for (int i = 2; i <= x; i++)
        {
        Node *temp = new Node;
        Node *q = Head;
        while (q -> next != 0)
                q = q->next;
    
            temp -> Num = i;
            temp -> next = q -> next;
            q -> next = temp;
            
            }
 
    }
 
void Show (PNode Head, int z)
    {Node *temphead = Head;
    int temp = z;
 
    while (temp != 0)
        {cout << temphead -> Num << " ";
        temphead = temphead -> next;
        temp --;
        }
    }
void Del (int x, Node *Head)
    {Node *q = Head;
    Node *temp = Head;
    int k = 1;
    while (q -> next != 0)
                q = q->next;
    q -> next = Head;
    while (x != 1)
        {int z = x;
        if (k = 2)
            {while (z != 0)
                {temp = q;
                
                q = temp -> next;
                delete (temp);
                z--;
                }
            k = 1;
            }
        else {q = q -> next; k++;}
        x--;
        }
    }
Помогите, пожалуйста сделать задачу. Не работает удаление.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru