Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 13.11.2014, 14:20   #1 (permalink)
Mokingbird
Новичок
 
Регистрация: 13.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post Pascal: найти в строке все прогрессии

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

Входные данные:
1 3 4 6 2 4 6 8 1 3 5

Выходные данные:
2 4 6 8
1 3 5
Mokingbird вне форума   Ответить с цитированием

Старый 13.11.2014, 14:20
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Аналогичные обсуждения могут просветить решение проблемы

Найти ошибку в математических формулах. Pascal
Поиск в строке Turbo Pascal
Дан массив A(n,m). Найти количество элементов в каждой строке, меньшего диагонального
Pascal. Помогите найти ошибку
Pascal ABC, ООП. Не могу найти ошибку

Старый 13.11.2014, 15:00   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,357
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Например, так:
Код:
Const
 N=11;
 A:Array[1..N] of Integer=(1, 3, 4, 6, 2, 4, 6, 8, 1, 3, 5);

Var
 i:Integer;
 flag,flag1:boolean;

Begin
 for i:=1 to N do write(A[i],' ');
 writeln;
 i:=0;
 flag1:=false;
 flag:=true;
 Repeat
  Inc(i);
  repeat
   if (A[i+1]-A[i])=(A[i+2]-A[i+1]) then
    begin
     flag1:=true;
     if flag then
      begin
       write(A[i],' ',A[i+1],' ',A[i+2]);
       flag:=false;
      end
     else
      write(' ',A[i+2]);
     if i<N-2 then Inc(i);
    end;
  until (i>=N-2) or ((A[i+1]-A[i])<>(A[i+2]-A[i+1]));
  if i<N-2 then
   begin
    if flag1 then
     begin
      writeln;
      flag1:=false;
     end;
    flag:=true;
   end;
 Until i>=N-2;
 Readln
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 13.11.2014, 15:16   #3 (permalink)
Mokingbird
Новичок
 
Регистрация: 13.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Наверное неточно сформулировала задание.. Строка типа String, и ее вводить с консоли через пробел. Но все равно спасибо)
Mokingbird вне форума   Ответить с цитированием
Старый 13.11.2014, 15:43   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,357
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Mokingbird Посмотреть сообщение
Наверное неточно сформулировала задание.. Строка типа String, и ее вводить с консоли через пробел. Но все равно спасибо)
О, Боже - это еще городить преобразование строки в массив? Обязательно? Последовательный ввод чисел не годится?
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 13.11.2014, 15:53   #5 (permalink)
Mokingbird
Новичок
 
Регистрация: 13.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
О, Боже - это еще городить преобразование строки в массив? Обязательно? Последовательный ввод чисел не годится?
Увы, обязательно :С задание дано на строки.
Mokingbird вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.11.2014, 16:02   #6 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,357
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Mokingbird Посмотреть сообщение
Увы, обязательно :С задание дано на строки.
Тогда еще вопрос: нельзя ли через вспомогательный файл? Т.е. строку записать в файл и считать из него уже числа? Это бы сильно упростило дело.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 13.11.2014, 16:06   #7 (permalink)
Mokingbird
Новичок
 
Регистрация: 13.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Тогда еще вопрос: нельзя ли через вспомогательный файл? Т.е. строку записать в файл и считать из него уже числа? Это бы сильно упростило дело.
Файлы можно)))
Mokingbird вне форума   Ответить с цитированием
Старый 13.11.2014, 16:23   #8 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,357
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Mokingbird Посмотреть сообщение
Файлы можно)))
Вот:
Код:
Var
 N,i:Integer;
 flag,flag1:boolean;
 A:Array[1..100] of Integer;
 f:Text;
 S:String;

Begin
 Writeln('Enter the string: ');
 Readln(S);
 Assign(f,'fff.txt');
 Rewrite(f);
 Write(f,S);
 Close(f);
 Reset(f);
 N:=0;
 Repeat
  Inc(N);
  Read(f,A[N]);
 Until EoF(f);
 Close(f);
 Erase(f);
 writeln;
 i:=0;
 flag1:=false;
 flag:=true;
 Repeat
  Inc(i);
  repeat
   if (A[i+1]-A[i])=(A[i+2]-A[i+1]) then
    begin
     flag1:=true;
     if flag then
      begin
       write(A[i],' ',A[i+1],' ',A[i+2]);
       flag:=false;
      end
     else
      write(' ',A[i+2]);
     if i<N-2 then Inc(i);
    end;
  until (i>=N-2) or ((A[i+1]-A[i])<>(A[i+2]-A[i+1]));
  if i<N-2 then
   begin
    if flag1 then
     begin
      writeln;
      flag1:=false;
     end;
    flag:=true;
   end;
 Until i>=N-2;
 Readln
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 13.11.2014, 16:28   #9 (permalink)
Mokingbird
Новичок
 
Регистрация: 13.11.2014
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Огромнейшее вам спасибо!!!
Mokingbird вне форума   Ответить с цитированием
Старый 13.11.2014, 16:31   #10 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,357
Сказал(а) спасибо: 289
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от Mokingbird Посмотреть сообщение
Огромнейшее вам спасибо!!!
Да не за что. Только вот не уверен я, что Ваши преподы это примут: могут потребовать, чтобы числа из строки выколупывать. Обращайтесь, если что - сделаем.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.