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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подсчитать количество больших букв в тексте; вывести слова, имеющие наименьшее количество букв http://www.cyberforum.ru/cpp-beginners/thread702019.html
С клавиатуры вводится строка. Составить программу, которая подсчитывает количество большых букв в тексте; выводит на экран слова, имеющие наименьшее количество букв удаляет все слова, начинающиеся со малой буквы.
C++ Прикладные науки Всем доброго времени суток! Приступил к изучению программирования в общем и С++ в частности, и задался вопросом, а какие прикладные науки наиболее полезны для практической деятельности программирования? Хотелось бы узнать мнение тех, кто уже работает и зарабатывает на программировании. Интересует именно как все обстоит в действительности, на практике, а не в своем идеальном виде. Понятно,... http://www.cyberforum.ru/cpp-beginners/thread701993.html
C++ Считать количество строк в файле и записать в масив
есть класс Book #ifndef BOOK_H_ #define BOOK_H_ #include<iostream> #include<string> using namespace std; class Book { private: std::string name;
Динамический двумерный массив char через new? C++
В общем, нужно создать n-ое количество двухсимвольных строк char. Как правильно выделить память под него, используя new? Просто, следуя задаче, мне нужно куда-то записывать имена файлов, чтобы потом их открыть и с ними работать) Как-то так. Заранее спасибо. Буду рад любой помощи.
C++ Задан массив C(n) . Сформировать матрицу A(n,n) http://www.cyberforum.ru/cpp-beginners/thread701971.html
Задан массив C(n) . Сформировать матрицу A(n,n),как произведение массивов C и СT и матрицу B(n,n), элементы которой вычислить по формуле Bij= Aij/max . Решить матричное уравнение X(A+4E)=3B-E, где E – единичная матрица.
C++ Разработать программу, которая вводит данные и выводит тест True если условие истинно, в противном случае False Разработать программу, которая вводит данные и выводит тест TRUE , если указанное в варианте условие истинно, и FALSE в противном случае. Входные данные: целое трехзначное число Условие: Среди цифр числа есть хотя бы две одинаковые цифры Заранее спасибо. подробнее

Показать сообщение отдельно
Михаил Роганин
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 8

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

19.11.2012, 12:54. Просмотров 351. Ответов 1
Метки (Все метки)

Добрый день. Встала задача сделать программу для реализации считалки Джозефуза на С++ (движение по кругу и удаление каждого пятого элемента, пока не останется один). Сделал для односвязного цикла, а для двусвязного не могу. Прошу помощи.
Вот код с односвязным циклом

Кликните здесь для просмотра всего текста
#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);
}


Буду очень благодарен. РГЗ скоро сдавать, а помочь никто не может.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru