Статистика
Всего в нашей базе более 4 327 657 вопросов и 6 445 963 ответов!

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

10-11 класс

и удовлетворяют след. свойству:
- слово совпадает с начальным отрезком латинского алфавита ('a','ab','abc' и т.д.)

P.s. Только решить её надо не использую строки.Вместо них array of char...
Пример ввода:
writeln('Введите предложение, символ конца - точка');
i := 0;
repeat
inc(i);
read(a[i])
until (a[i] = '.')or(i = n);

Заранее огромное спасибо.

Nikacikachuk 24 февр. 2014 г., 19:07:21 (10 лет назад)
Рейтинг
+ 0 -
0 Жалоба
+ 0 -
Lavrova98
24 февр. 2014 г., 21:54:59 (10 лет назад)

const 
  Letters = ['a'..'z', 'A'..'Z'];
  LineEnds = [#13, #10, #0, '.'];
  MAX_LEN = 255;
var 
  txt: array [0..MAX_LEN] of char;
  bnd: array [0..MAX_LEN, 0..1] of integer;
  tsz, bsz: integer; // размеры массивов
  isLetter, isWord, f1, f2: boolean;
  i, j: integer;
begin
  repeat
    read(txt[tsz]);


    // Определение границ слов   
    isLetter := txt[tsz] in Letters;
    if isLetter and not isWord then
      bnd[bsz, 0] := tsz;
    if isWord and not isLetter then begin
      bnd[bsz, 1] := tsz;
      bsz := bsz + 1;
    end;
    
    isWord := isLetter;
    tsz := tsz + 1;
  until txt[tsz-1] in LineEnds;
  
  if bsz > 1 then begin  
    for i := 0 to bsz-2 do begin
      j := 0; f2 := true;
      f1 := (bnd[bsz-1, 1] - bnd[bsz-1, 0]) = (bnd[i, 1]-bnd[i, 0]); // совпадение длин
      
      while (j < bnd[i, 1] - bnd[i, 0]) and f2 do begin
        f1 := f1 and (txt[bnd[i, 0] + j] = txt[bnd[bsz-1, 0] + j]);
        f2 := f2 and (LowCase(txt[bnd[i, 0] + j]) = Chr(Ord('a') + j));
        j := j + 1;
      end;
      
      // вывод
      if f2 and not f1 then begin
        for j := bnd[i, 0] to bnd[i, 1] - 1 do
          write(txt[j]);
        writeln;
      end;
    end;
  end;
end.

+ 0 -
ALEXANDRAPRIVET
24 февр. 2014 г., 22:34:23 (10 лет назад)

а какой компилятор паскаля используете?

+ 0 -
Fake990
25 февр. 2014 г., 0:56:51 (10 лет назад)

pascal abc

+ 0 -
Zorhyntrezz
25 февр. 2014 г., 3:08:12 (10 лет назад)

Странное условие "решить, не используя строки". Это выворот мозгов у авторов вопроса ("мне надо не столько решение, сколько вас поморочить"). В реальной жизни, когда программист пишет программу. он использует любые доступные средства языка, а не искусственно поставленные ему кем-то ограничения. В Паскаль.abc вообще есть возможность одним оператором разбить строку на элементы динамического массива, каждый из которых будет словом исходной строки.

Ответить

Читайте также

ПАСКАЛЬ. Срочно!

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

Для передачи секретного сообщения используется код, состоящий только из латинских букв (всего используется 26 символов). При этом все символы

кодируются одним и тем же минимально возможным количеством бит. Было передано закодированное сообщение, состоящее из 240 символов. Определите информационный объем пе-реданного сообщения.

Дана последовательность, содержащая от 2 до 30 слов, в каждом из от 1 до 8 символов строчных латинских букв между соседними словами-не менее одного

пробела, за последним словом-точка. Составить программу на языке Паскаль
1) Все слова, которые встречаются в последовательность по одному разу

Дан массив, состоящий из 100 целых чисел:

а) Вывести все числа, которые встречаются в этом массиве по нескольку раз;
б) Вывести все числа, которые встречаются в массиве только по одному разу.

Даны натуральное число n, символы s1,...sn. , группы символов, разделённые пробелами (одним или несколькими) и не содержащие пробелов внутри себя ,

будем называть словами. подсчитать количество букв a в последнем слове данной последовательности

В TPascal



Вы находитесь на странице вопроса "Дана стока состоящая из латинских букв,в которой слова разделены пробелами(одним или несколькими).Напечатать те строки,которые отличны от последнего слова", категории "информатика". Данный вопрос относится к разделу "10-11" классов. Здесь вы сможете получить ответ, а также обсудить вопрос с посетителями сайта. Автоматический умный поиск поможет найти похожие вопросы в категории "информатика". Если ваш вопрос отличается или ответы не подходят, вы можете задать новый вопрос, воспользовавшись кнопкой в верхней части сайта.