Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2016, 18:29   #1
als208
Новичок
Джуниор
 
Регистрация: 22.12.2015
Сообщений: 2
По умолчанию Помогите исправить код

Подскажите, пожалуйста, в чем ошибка:

Код:
/*Дана полоска длиной 2 ^ k клеток и шириной в одну клетку.
Полоску несколько раз сгибают пополам так, чтобы ее правая половина оказывалась под левой.
Сгибают до тех пор, пока сверху остается больше одной клетки.Написать программу, которая
пронумерует клетки так, что после завершения сгибания полоски номера клеток в полученной
колонке будут упорядочены : 1, 2, 3, 4, ..., 2 ^ k.*/

#include <iostream>
#include <cmath>
using namespace std;

 struct input
{
	unsigned int last, next, now;
};
 unsigned int  k = 2;
 unsigned int  kn = pow(2, k);
 input *m = new input[kn];

 void concat(unsigned int a, unsigned int b)
 {
	 unsigned int i, j, nj;
	 unsigned  int n = pow(2, k);
	 i = a;
	 while (m[i].next != n + 1)
		 i = m[i].next;

	 j = b;
	 while (m[j].next != n + 1) //вот здесь программа вылетает
		 j = m[j].next;

	 while (j != 0)
	 {
		 nj = m[j].last;
		 m[i].next = j;
		 m[j].last = i;
		 i = j;
		 j = nj;
	 }
	 m[i].next = n + 1;
 }

void main()
 {
	 unsigned  int  i, j, cn, half, nj;

	 unsigned  int n = pow(2, k);
	 for (i = 1; i < n; i++)
	 {
		 m[i].last = 0;
		 m[i].next = n + 1;
		 m[i].now = 0;
	 }

	 cn = n;
	 while (cn > 1) //Сгибание полоски
	 {
		 half = cn / 2;
		 for (i = 1; i < half; i++)
		 {
			 concat(i, cn - i + 1);
		 }
			 cn = half;
	 }

	 j = 1;
	 for (i = 1; i < n; i++) //Нумерация клеток
	 {
		 m[j].now = i;
		 j = m[j].next;
	 }
	 for (i = 1; i < n; i++)
	 {
		 cout << m[i].now << " ";
	 }
 }
als208 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОМОГИТЕ исправить код по С# 1сумрак C# (си шарп) 8 29.05.2015 21:18
C++ помогите исправить код. lebronjenya Общие вопросы C/C++ 6 30.03.2015 15:28
Помогите исправить код exbv1 Общие вопросы Delphi 8 16.03.2015 14:32
ПОМОГИТЕ ИСПРАВИТЬ КОД SofiNNN Общие вопросы C/C++ 3 18.11.2014 22:14
Помогите исправить код Tanuska___:) БД в Delphi 4 07.08.2008 17:40