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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2020, 09:08   #1
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию Анализ массива

Последовательность объектов a1, a2,…, a n называется
"Периодический", если он состоит только из повторяющихся подмножеств ( например 1,4,5,6,1,4,5,6....1,4,5,6).
Требуется выяснить периодическая ли последовательность B(b1,b2,b3,...bn) состоящая из реальных чисел. Если ответ положительный ,то выяснить ее период. Если отрицательный , то выяснить подмножество , которое встречается чаше в последовательности B. Изначально нужно записать в файл массив B , оттуда загрузить в оперативную память параллельно выводя на экран.Повторяющееся подмножества выразить другими цветами.
Вот такое вот интересное задание , буду очень благодарен за помощь , программа может быть и на языке c++ и pascal.Очень хотелось ,чтобы и объяснения были , потому-что задача для меня очень интересная.
Заранее спасибо за помощь.Я смог написать программу которая проверяет переодческая ли последовательность.
Код:
Код:
Uses Crt;
Type Vector = Array [1..99] of integer;
Var X : Vector; n,i,j,c,k : integer;p:boolean;
Begin
p:=true;
Repeat
ClrScr;
Write('n>1='); Readln(n);
Until n>1;
For i:=1 to n do begin
Write('X',i,' '); Readln(X[i]) end;
j:=2;i:=1;
While ((X[j]<>X[1]) and (j<=n)) do
j:=j+1;k:=j;
if (x[j]=x[1]) then begin
While (((j+1)<=n)and p) do begin
if (x[j+1]<>x[i+1]) then p:=false else c:=0;
j:=j+1;i:=i+1;
if (k mod i =0)then i:=1 else c:=0 end;
write(p) end else write('false');
readln;readln

End.

Последний раз редактировалось BDA; 21.10.2020 в 01:18.
SerobGrigoryan вне форума Ответить с цитированием
Старый 20.10.2020, 20:42   #2
SerobGrigoryan
Пользователь
 
Регистрация: 09.10.2020
Сообщений: 16
По умолчанию

немножко доработал . Осталось сложная часть)
Код:
Program Kursyin4;
Uses Crt;
Type Vector = Array [1..99] of real;
Var X : Vector; i,j,t,n : integer;k:real;p:boolean;
f:file of real;
Begin
Assign(f,'massiv');
Rewrite(f);
p:=true;
Repeat
ClrScr;
Write('n>1='); Readln(n);
Until n>1;
For i:=1 to n do begin
Write('X',i,' '); Readln(k);
write(f,k ) end;
close(f);
Reset(f);
For i:= 1 to n do begin
read(f,x[i]);write(x[i]:8:2,' ') end;
writeln;
j:=2;
While ((X[j]<>X[1]) and (j<n)) do
j:=j+1;k:=j;t:=j-1;j:=j-1;
if (x[j+1]=x[1]) then begin
While ((j<n) and p) do
begin
j:=j+1;i:=1;k:=k+t;
While ((j<k-1)and p) do begin
if (x[j+1]<>x[i+1]) then p:=false;
j:=j+1;i:=i+1 end
end end else p:=false;
if p
then write('Hajordakanutyun@ ',t,' parberutyamb parberakan hajordakanutyun e')
else write('Hajordakanutyun@ parberakan che');
readln;readln;

End.

Последний раз редактировалось BDA; 21.10.2020 в 01:18.
SerobGrigoryan вне форума Ответить с цитированием
Старый 23.10.2020, 09:08   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
Требуется выяснить периодическая ли последовательность B(b1,b2,b3,...bn) состоящая из реальных чисел.
Отмечу, что такие операции:
Код:
...
if (x[j+1]=x[1]) then begin
...
Выполнять с реальными числами не следует.
Далеко не все вещественные (реальные) числа представимы в ЭВМ в двоичном виде точно.
Пример:
Число 1.33 > 00111111 10101010 00111101 01110001
Но это ...

Возможно, что для вещественных (реальных) чисел следует использовать строковое представление, в котором следует ограничить представление десятичной части количеством цифр.

Но в этот вопрос надо погружаться ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 23.10.2020, 10:51   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Возможно, что для вещественных (реальных) чисел следует использовать строковое представление,
Или Abs(разности) < epsilon
digitalis на форуме Ответить с цитированием
Старый 25.10.2020, 00:02   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
Требуется выяснить периодическая ли последовательность B(b1,b2,b3,...bn) состоящая из реальных чисел.
digitalis
Цитата:
Или Abs(разности) < epsilon
Это так, если предполагается, что период может иметь разброс порядка epsilon.
Из выложенного условия этого не следует.
ТС, как я понял, нужно точное решение.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.10.2020, 10:53   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Пожалуй, да. Одно и то же число real может иметь чуть-чуть разное представление в разных случаях, если оно получено разными путями: например, чтением - и результатом арифметической операции. Если в обоих случаях оно read, то скорее всего, получим одно и то же.
Но общий подход к сравнению real никто не отменял
digitalis на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мат анализ vadiprog Помощь студентам 2 21.10.2012 05:14
инициализация массива, вывод массива и обработка массива должны быть реализованы с помоshью функций airesjke Помощь студентам 0 02.03.2012 16:14
Анализ ПО ImmortalAlexSan Свободное общение 14 27.11.2011 23:56
Задачи на заполнение и анализ элеметов массива Sketch_45 Помощь студентам 1 17.03.2011 12:18
ABC анализ aliya_n_g Microsoft Office Excel 7 14.01.2011 08:48