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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 18:53   #11
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

Понимаю, а можете сказать, что не так в моей программе указанной выше?
Lodyr вне форума Ответить с цитированием
Старый 20.12.2009, 18:59   #12
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Если на вскидку, то несколько циклов While, мне не нравятся. С ними можно легко запутаться.
Попробуйте трассировать программу (клавиша F7).
psycho-coder вне форума Ответить с цитированием
Старый 20.12.2009, 20:05   #13
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

вот что я думаю сделать по выводу на экран этих слов
begun:=1;
repeat
i:=begun+1;
r:=mas 2[i]-mas 2[i-1];
while (i<=10) and (r=mas[i+1]-mas[i]) do
inc(i);
if (r<>mas[i+1]-mas[i]) then
r:=0;
r:=mas[i+1]-mas[i];
writeln(mas1[i] and mas1[i-1]);
until (i>=10);

просто не знаю, как мне цикл написать...
то есть чтобы выписал мне эти слова, не пойму как это сделать...
Lodyr вне форума Ответить с цитированием
Старый 20.12.2009, 21:06   #14
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вы хотите просто вывести эти слова из массива на экран?
psycho-coder вне форума Ответить с цитированием
Старый 20.12.2009, 21:33   #15
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

да
чтобы он на экран выписал те слова, которые образуют арифметчиескую прогрессию
например:
я пошел велосипед (1 5 9)
пошел кто ф (5 3 1)
Lodyr вне форума Ответить с цитированием
Старый 20.12.2009, 21:36   #16
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

по порядку нужно, без перестановок и сведению к виду арифметической прогрессии = то есть что дали то и дали))))
Lodyr вне форума Ответить с цитированием
Старый 20.12.2009, 22:36   #17
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

тут момент такой еще получился, если во фразе будет расположены на близком расстоянии чужой символ от буквы = то в массив слов заносится езе и этот чужой символ (запятая, точка)

непонятно, почему у нас элементы массива с нуля начинается?
Lodyr вне форума Ответить с цитированием
Старый 20.12.2009, 22:39   #18
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вывод написал, сейчас сделаю проверку на знаки препинания.
psycho-coder вне форума Ответить с цитированием
Старый 20.12.2009, 23:39   #19
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Вот полный код
Код:
Program q;
Uses Crt;

var
  mas1: array [0..10] of String;
  mas2: array [0..10] of Byte;
  s, tmp: String;
  i, j: Integer;
  res, len: Integer;
  WordEnum: Byte;

begin
  ClrScr;
  Readln(s);

  tmp := '';
  WordEnum := 0;

  len := Length(s);

  for i := 0 to len do
    case s[i] of
      '0'..'9': Continue;
      'A'..'Z': Continue;
      'a'..'z': Continue;
      'Ђ'..'Ї': Continue; { от А(бол.) до п(мал.) }
      'а'..'п': Continue; { от р(мал.) до я(мал.) }
      else s[i] := #32;
    end;

  for i := 1 to len do
  begin
    if (s[i] = #32) and (s[i+1] = #32) then Continue;

    if (s[i] = #32) and (s[i+1] <> #32) then
    begin
      mas1[WordEnum] := tmp + #32;
      Inc(WordEnum);
      tmp := '';
      Continue;
    end;
    tmp := tmp + s[i];
    mas1[WordEnum] := tmp ;
    mas2[WordEnum] := Length(tmp);
  end;

  j := 0;

  for i := 1 to WordEnum do
  begin
    res := Abs(mas2[i] - mas2[i-1]);
    len := Abs(mas2[i] - mas2[i+1]);

    if res = len then
    begin
      for j := j to i + 1 do
        Writeln(mas1[j]);
      Inc(j);
    end;
    {WriteLn(mas2[i]); }
  end;

  ReadKey;
end.
psycho-coder вне форума Ответить с цитированием
Старый 21.12.2009, 07:32   #20
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

вот что выдает \ программа успешно завершена, нажмите любую клавишу = и все, слов не видно в строке вывода...
Код:
    res := Abs(mas2[i] - mas2[i-1]);
    len := Abs(mas2[i] - mas2[i+1]);
я как понимаю вы берете по модулю? но если разность будет такая:
велосипед лежит ё = разность 2 и 1 будет (-4), и разность 3 и 2 будет (-4), по сути не меняют ситуацию.

еще вопрос, почему у нас элементы в массивах с 0 начинаются?
как то можно заменить чтобы от 1 до 10 или до 100

Код:
ClrScr;
== очистка экрана?
Код:
 звездочка 32
==как можно ее заменить? на пробел, как Вы писали ранее?

Код:
  i, j: Integer;
  res, len: Integer;
==что означает j и rez(получение разности 2 и 1 элемента)?
Lodyr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Занести слова в массив [Delphi] Lemo Помощь студентам 4 20.12.2009 18:03
Все ли эти слова написаны с большой буквы dip Помощь студентам 11 02.11.2009 20:42
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47
Определить, что строка содержит буквы motorway Microsoft Office Excel 5 06.07.2009 17:23
Си. Вычеркнуть из слова X те буквы, которые встречаются в слове Z. hen Помощь студентам 1 29.04.2009 15:32