Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 13
1

Напечатать все слова, отличающиеся от последнего слова, перед печатью перенеся последнюю букву в начало слова

16.03.2012, 20:58. Показов 1156. Ответов 1
Метки нет (Все метки)

Слова текста из малых латинских букв записаны не менее чем через один пробел; текст оканчивается точкой. Без использования конструкции String:
а) Написать программу ввода такого текста с клавиатуры;
б) Напечатать все слова, отличающиеся от последнего слова, перед печатью перенеся последнюю букву в начало слова.

Проблема с пунктом "Б", а именно: 1. все слова, состоящие из букв верхнего регистра, либо слова в которых присутствует заглавная буква, не должны выводиться на экран, либо переводиться в буквы нижнего регистра.
допустим, после сообщения "input text" мы ввели :
пробел(далее обозначаю как _ ) _ _ пАПа _ _ и _ МАМА _ _ _ и _ _ сын _ _ и_ _ сын_ и _ _ _ _ .
Не должны выводиться слова с заглавными буквами (либо переводится в маленькие буквы) , и слова схожие с последним ( тоесть ни одного слова "и" в данном случае.) Ребят, помогите откорректировать алгоритм, пожалуйста!
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var
  words:array[0..40,0..80] of char;
  wordLength:array[0..40] of byte;
  i,j,k:byte;
  ch:char;
  dif:boolean;
begin
  writeln('Input text');
  i:=1;
  j:=1;
  repeat
    repeat
      read(ch);
    until ch<>#32;
    while (ch<>#32) and (ch<>#46) do
      begin
        words[i,j]:=ch;
        read(ch);
        inc(j);
      end;
    if ch=#32 then
      begin
        wordLength[i]:=j-1;
        inc(i);
        j:=1;
      end;
  until ch=#46;
  k:=i;
  wordLength[k]:=j-1;
  writeln('Words that differ from last one with last letter at start');
  for i:=1 to k-1 do
    begin
      j:=1;
      while (j<=wordLength[i]) and (words[i,j]=words[k,j]) do
        inc(j);
      dif:=j<=wordLength[i];
      if dif then
        begin
          if wordLength[i]>1 then
            begin
              ch:=words[i,wordLength[i]];
              for j:=wordLength[i] downto 2 do 
                words[i,j]:=words[i,j-1];
              words[i,1]:=ch;
            end;
          for j:=1 to wordLength[i] do
            write(words[i,j]);
          write(#32);
        end;
    end;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2012, 20:58
Ответы с готовыми решениями:

Напечатать все слова, перенеся их последнюю букву в начало
Текст задан строкой: var St: string. Напечатать все слова, перенеся их последнюю букву в начало....

Напечатать все слова, отличные от последнего, поменяв первую и последнюю букву каждого слова
Дана последовательность, содержащая от 2 до 20 слов, в каждом из которых от 2 до 10 латинских...

Напечатать все слова, отличные от последнего слова, преобразовав по правилу: перенести первую букву в конец слова
Помогите пожалуста решыть: 10.18. Программа. Дана последовательность, содержащая от 2 до 30 слов,...

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

1
trainspotting
1086 / 486 / 384
Регистрация: 11.11.2010
Сообщений: 773
16.03.2012, 22:07 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
function LowerChar(d:char):char;
begin
  case d of 
    'A'..'Z','А'..'П': inc(d,32);
    'Р'..'Я': inc(d,80);
    'Ё': d:='ё';
  end;
  LowerChar:=d;
end;
var
  words:array[0..40,0..80] of char;
  wordLength:array[0..40] of byte;
  i,j,k:byte;
  ch:char;
  dif,isWord:boolean;
  s:string;
begin
  writeln('Input text');
  i:=1;
  j:=1;
  repeat
    repeat
      read(ch);
    until ch<>#32;
    isWord:=false;
    while (ch<>#32) and (ch<>#46) do
      begin
        words[i,j]:=LowerChar(ch);
        read(ch);
        inc(j);
        isWord:=true;
      end;
    if isWord then
      begin
        wordLength[i]:=j-1;
        inc(i);
        j:=1;
      end;
  until ch=#46;
  k:=i-1;
  writeln('Words that differ from last one with last letter at start');
  for i:=1 to k-1 do
    begin
      if wordLength[i]=wordLength[k] then
        begin
          j:=1;
          while (j<=wordLength[i]) and (words[i,j]=words[k,j]) do
            inc(j);
          dif:=j<=wordLength[i];
        end
      else
        dif:=true;
      if dif then
        begin
          if wordLength[i]>1 then
            begin
              ch:=words[i,wordLength[i]];
              for j:=wordLength[i] downto 2 do 
                words[i,j]:=words[i,j-1];
              words[i,1]:=ch;
            end;
          for j:=1 to wordLength[i] do
            write(words[i,j]);
          write(#32);
        end;
    end;
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2012, 22:07

Напечатать все слова, отличные от последнего слова, предварительно перенеся первую букву в конец слова
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских...

Напечатать все слова, отличные от последнего слова, предварительно удалив из каждого слова последнюю букву
1) Программа. Дан текстиз строчных русских букв, закоторым следует точка. Напечатать этот текст...

Напечатать все слова, перенеся первую букву каждого слова в конец слова
приветствую вас))) помогите пожалуйста даме... Текст задан строкой var St: string; Напечатать...

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru