Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 14
1

Программа на строки

17.01.2021, 14:22. Просмотров 1374. Ответов 3
Метки нет (Все метки)

Дана строка русских слов разделенных пробелом в конце стоит точка. Необходимо найти процентное соотношение гласных и согласных букв в каждом слове предшествующему самому длинному последнему по порядку. Не могу найти ошибку в программе. Вот сама программа:
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
Uses crt;
const
glasn=['а','е','ё','и','о','у','э','ю','я'];
soglasn=['б','в','г','д','ж','з','й','к','л','м','н','п','р','c','т','ф','х','ц','ч','ш','щ','ъ','ь'];
var
  stroka:string;
  nach_sl:integer;
  kol_bukv:integer;
  max_slovo:string;
  max_dl:integer;
  i,n:integer;
  slovo:string;
  kol_gl, kol_sgl:integer;
  proc_gl, proc_sgl:real;
begin
  textcolor(15);
  textbackground(1);
  clrscr;
  {Ввод исходных данных}
  Writeln('Задача:');
  Writeln('1)найти самое длинное слово (последнее по порядку)');
  Writeln('2)Найти процентное соонтошение гласных и согласных букв в словах, предшествующих самому длинному');
  Writeln('Введите набор слов через пробел и поставьте в конце точку');
  Readln(stroka);
  clrscr;
  Writeln('Задача:');
  Writeln('1)найти самое длинное слово (последнее по порядку)');
  Writeln('2)Найти процентное соонтошение гласных и согласных букв в словах, предшествующих самому длинному');
  Writeln(stroka);
  nach_sl:=1;
  max_dl:=0;
  for i:=1 to length(stroka) do
    if (stroka[i]=' ') or (stroka[i]='.') then
       begin
         kol_bukv:=i-nach_sl;
         if max_dl<=kol_bukv then
            begin
              max_dl:=kol_bukv;
              max_slovo:=copy(stroka,nach_sl,kol_bukv);
            end;
            nach_sl:=i+1;
        end;
   writeln('Самое длинное слово из перечисленных (последнее по порядку)- ',max_slovo);
   nach_sl:=1;
   kol_gl:=0;
   kol_sgl:=0;
   proc_gl:=0;
   proc_sgl:=0;
   for i:=1 to pos(max_slovo,stroka) do
   if (stroka[i]=' ') or (stroka[i]='.')
   then
   begin
   if stroka[i] in glasn then inc(kol_gl);
   if stroka[i] in soglasn then inc(kol_sgl);
   kol_bukv:=kol_gl+kol_sgl;
   proc_gl:=kol_gl*100/kol_bukv;
   proc_sgl:=kol_sgl*100/kol_bukv;
   slovo:=copy(stroka,nach_sl,kol_bukv);
   nach_sl:=i+1;
   writeln(' В слове  ',slovo,' Количество согласных(в процентах) ',proc_sgl,' Количество гласных(в процентах)',proc_gl);
   end;
   readln;
   end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2021, 14:22
Ответы с готовыми решениями:

программа вводит две строки. Из более длинной строки программа выводит все символы,коды которых >70. В коротко
программа вводит две строки. Из более длинной строки программа выводит все символы,коды которых...

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

Есть программа которая сравнивает строки. Нужно вывести заданные строки и результат на консоль (TASM)
Есть программа которая сравнивает строки. Нужно вывести заданные строки и результат на консоль.У...

Программа должна определить длину введенной строки L и, если длина L нечетная, то удаляется символ, стоящий посередине строки.
19. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши &quot;Ввод&quot;....

3
ildwine
17.01.2021, 15:17
  #2

Не по теме:

Строго говоря, мягкий и твёрдый знаки не являются ни гласными ни согласными буквами.

0
Модератор
62552 / 46721 / 32203
Регистрация: 18.05.2008
Сообщений: 113,075
17.01.2021, 15:45 3
Лучший ответ Сообщение было отмечено i_i как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
writeln('Самое длинное слово из перечисленных (последнее по порядку)- ',max_slovo);
   if pos(max_slovo,stroka)=1 then
    begin
     writeln('Максимальное слово первое');
     exit;
    end;
   nach_sl:=1;
   kol_gl:=0;
   kol_sgl:=0;
   proc_gl:=0;
   proc_sgl:=0;
   for i:=1 to pos(max_slovo,stroka) do
   if stroka[i] in glasn then inc(kol_gl)
   else if stroka[i] in soglasn then inc(kol_sgl);
   kol_bukv:=kol_gl+kol_sgl;
   proc_sgl:=kol_sgl*100/kol_bukv;
   slovo:=copy(stroka,nach_sl,kol_bukv);
   nach_sl:=i+1;
   writeln(' До  слова ',max_slovo,' количество согласных(в процентах) ',proc_sgl,' количество гласных(в процентах)',proc_gl);
   end.
0
0 / 0 / 0
Регистрация: 17.01.2021
Сообщений: 14
17.01.2021, 19:01  [ТС] 4
Спасибо большое. Просто я только учусь. Вот и не всё получается.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2021, 19:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написать программу, высчитывающую длину строки. Если длина строки меньше 10, то программа удаляет все заглавные буквы
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int i=0, k, size=0; char *s =...

Написать программу, высчитывающую длину строки. Если длина строки меньше 10, то программа удаляет все заглавные буквы
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int i=0, k, size=0; char *s =...

В описании программа, которая складывает 2 строки, дополните ее, чтобы она прибавляла не все, а n символов из одной строки в другую
#include &lt;stdio.h&gt; char * mystrcat(char*,char*,int); int main() { char...

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

Ввести с клавиатуры строку символов.Признак окончания ввода строки - нажатие клавиши 'ввод'.Программа должна определить длину введенной строки L
Помогите пожалуйста:gbye: Ввести с клавиатуры строку символов.Признак окончания ввода строки -...

Программа, котороя копирует строку в другую строку заданной длины и размещает текст первой строки по центру второй строки
Создать функцию котороя копирует строку в другую строку заданной длины и размещает текст первой...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.