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

Сделать двусвязный цикл из односвязного. Задача Джозевуза - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчитать количество больших букв в тексте; вывести слова, имеющие наименьшее количество букв http://www.cyberforum.ru/cpp-beginners/thread702019.html
С клавиатуры вводится строка. Составить программу, которая подсчитывает количество большых букв в тексте; выводит на экран слова, имеющие наименьшее количество букв удаляет все слова, начинающиеся со малой буквы.
C++ Прикладные науки Всем доброго времени суток! Приступил к изучению программирования в общем и С++ в частности, и задался вопросом, а какие прикладные науки наиболее полезны для практической деятельности программирования? Хотелось бы узнать мнение тех, кто уже работает и зарабатывает на программировании. Интересует именно как все обстоит в действительности, на практике, а не в своем идеальном виде. Понятно,... http://www.cyberforum.ru/cpp-beginners/thread701993.html
Динамический двумерный массив char через new? C++
В общем, нужно создать n-ое количество двухсимвольных строк char. Как правильно выделить память под него, используя new? Просто, следуя задаче, мне нужно куда-то записывать имена файлов, чтобы потом их открыть и с ними работать) Как-то так. Заранее спасибо. Буду рад любой помощи.
Задан массив C(n) . Сформировать матрицу A(n,n) C++
Задан массив C(n) . Сформировать матрицу A(n,n),как произведение массивов C и СT и матрицу B(n,n), элементы которой вычислить по формуле Bij= Aij/max . Решить матричное уравнение X(A+4E)=3B-E, где E – единичная матрица.
C++ Разработать программу, которая вводит данные и выводит тест True если условие истинно, в противном случае False http://www.cyberforum.ru/cpp-beginners/thread701965.html
Разработать программу, которая вводит данные и выводит тест TRUE , если указанное в варианте условие истинно, и FALSE в противном случае. Входные данные: целое трехзначное число Условие: Среди цифр числа есть хотя бы две одинаковые цифры Заранее спасибо.
C++ Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов Добавлено через 12 минут Дан массив задающийся рандомно. Размерность массива от -50 до + 50 подробнее

Показать сообщение отдельно
Михаил Роганин
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 8
19.11.2012, 12:54     Сделать двусвязный цикл из односвязного. Задача Джозевуза
Добрый день. Встала задача сделать программу для реализации считалки Джозефуза на С++ (движение по кругу и удаление каждого пятого элемента, пока не останется один). Сделал для односвязного цикла, а для двусвязного не могу. Прошу помощи.
Вот код с односвязным циклом

Кликните здесь для просмотра всего текста
#include <stdio.h>
#include <string.h>
#include <conio.h>
/*#include <windows.h>
::SetConsolePC(::GetAPC());
::SetConsoleOutputCP(::GetAPC()); */
struct slink
{
char* info ;
struct slink *next;
};

slink *lst1 = 0;

slink* insert( slink *lst, char* a )
{
slink *p = new slink;
p->info = a;
if (lst)
{
p->next = lst->next;
lst->next = p;
}
else { lst = p; lst->next = p; }
return lst;
}

slink* append( slink *lst, char* a )
{
lst = insert(lst,a);
lst = lst ->next;
return lst ;
}

char* peek( slink *lst, int* error )
{
*error = 0;
if (lst==0) {*error=1; return 0;}
return (lst->next)->info ;
}

slink* del( slink *lst, int* error )//удаление
{
slink *p;
*error = 0;
if (lst==0) {*error=1; return 0;}
p=lst->next;
if (p==lst) lst = 0;
else lst->next = p->next;
delete p;
return lst;
}

void show( slink *lst )//показ списка
{
slink* cur = lst->next;
if ( lst)
do
{
printf(" %s ", cur->info ) ;
cur=cur->next;
} while (cur!=lst->next);
else printf("\n список пуст");
}

main() {
char *names[]={"Sergey","Aleksandr","Yuriy","Andrey",
"Pavel","Nikolay","Aleksey"};
int n=7, i,j, err;
for(i=0;i<n;i++)
lst1=append(lst1,names[i]);

clrscr() ;
printf("\n nachalnoe sostoyanie "); show(lst1);
for(i=0; i<n-1;i++)
{
for (j=0;j<4;j++) lst1=lst1->next;
printf("\n udalyaem %s", peek(lst1,&err));
lst1=del(lst1,&err);
printf("\n sostoyanie "); show(lst1);
}
printf("\n posledniy element = %s", peek(lst1,&err));
getch();
lst1 = del(lst1,&err);
}


Буду очень благодарен. РГЗ скоро сдавать, а помочь никто не может.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru