Другие языки программирования и технологии
Народ! Помогите, не могу решить задачу по С++
Массив заполнен только нулями и единицами.Определите, будет ли полученная последовательность периодической и, если да, то найдите длину наименьшего периода. Тест. 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; Результат: последовательность периодическая. Т=4
Ищем первую единицу, потом итерация для подсчета элементов пока не попадется единица. Длинну такого первого периода пишем в переменную. Потом уже точно так же проверяем до конца все остальные элементы, и если находим хотя бы один период другой длинны, то сразу же прерываем цикл и пишем что последовательность непериодична. Если не выкинуло с цикла - то в конце выводим длинну самого первого периода, который записали. Как-то так
А про "наименьший период" я вообще не вьехал - судя по условию ведь все периоды должны быть одинаковые, разве нет? Или 1 0 0 0 1 0 0 1 0 0 0 тоже будет периодической последовательностью? Если да - то тогда какой-то бред выходит оО
А про "наименьший период" я вообще не вьехал - судя по условию ведь все периоды должны быть одинаковые, разве нет? Или 1 0 0 0 1 0 0 1 0 0 0 тоже будет периодической последовательностью? Если да - то тогда какой-то бред выходит оО
Начиная для х от 1 до половины размера массива проверяй будут ли повторяться элементы массива с номерами i, i+x, i+2x и т. д. до nх <= N равны. где N - размер исходного массива.
Если да, то послед. повторяется с периодом х.
Не получится пиши в агент $
Если да, то послед. повторяется с периодом х.
Не получится пиши в агент $
Предложите свой вариант. Вам подскажут/исправят/дополнят.
#include <iostream>
using std::cin;
using std::cout;
int i,j;
const int size = 12; //размер масива input
int input[size] = {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0};
int section_size=size/2;
int * section; //наименьшее звено
int scan_position=1;
int current_section_size=1;
bool find_section=false;
bool FindSection(); // доп функция (во избежания goto)
void main(void)
{
section = new int[section_size];
section[0]=input[0];
while (scan_position <= section_size)
{
if (FindSection())
{
find_section=true;
break;
}
else
{
section[current_section_size]=input[current_section_size++];
++scan_position;
}
}
if (find_section)
{
cout<<"\n Result =";
for(i=0; i<current_section_size;>;
}
}
else
{
cout<<"\n Array don't have a chain.";
}
cin>>i; //задержка для просмотра результата
}
bool FindSection()
{
for (i=scan_position; i<size;>)
++i;
else
return false;
}
--i;
}
return true;
}
код написано и проверено на Microsoft Visual Studio 2005
коментарии было лень писать
using std::cin;
using std::cout;
int i,j;
const int size = 12; //размер масива input
int input[size] = {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0};
int section_size=size/2;
int * section; //наименьшее звено
int scan_position=1;
int current_section_size=1;
bool find_section=false;
bool FindSection(); // доп функция (во избежания goto)
void main(void)
{
section = new int[section_size];
section[0]=input[0];
while (scan_position <= section_size)
{
if (FindSection())
{
find_section=true;
break;
}
else
{
section[current_section_size]=input[current_section_size++];
++scan_position;
}
}
if (find_section)
{
cout<<"\n Result =";
for(i=0; i<current_section_size;>;
}
}
else
{
cout<<"\n Array don't have a chain.";
}
cin>>i; //задержка для просмотра результата
}
bool FindSection()
{
for (i=scan_position; i<size;>)
++i;
else
return false;
}
--i;
}
return true;
}
код написано и проверено на Microsoft Visual Studio 2005
коментарии было лень писать
Похожие вопросы
- Народ помогите пожалуйста, не могу решить задачу на С++
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Помогите решить задачу на Турбо паскале
- Помогите решить задачу.
- помогите пожалуйста решить задачу по работе компьютера!
- Помогите решить задачу на программирование!
- Народ помогите осталась одна задача и все.
- Помогите решить задачу на Basic
- Пожалуйста, народ, помогите как можно быстрее решить хотя бы одну из задач Турбо Паскаля.
- Помогите решить задачи на Си! Пожалуйста!!!