Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 4

Поиск в строке слов, в которых больше половины букв гласные

12.11.2009, 08:52. Показов 3339. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасте. дана строка слов. найти в ней слова в которых больше половины букв гласные и выдать на экран в алф. порядке... Препод дал алгоритм, иначе не примет: ввести строку, разбить ее на слова,для каждого слова посчитать к-во гласных, выдать на экран нужные слова. Вот что я накарякал, прошу помочь))):
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
program a1;
const n=4;
type  mas= array [1..n] of string;slovo=string[10];
var  st: string;slv:mas; i,j,r,kol,nmax:byte; c:string[10];
 procedure slova (s:string;var msl:mas; var k:byte);{procedyra videlenu9 clov iz stroki}
 var r:string[10]; l,i,nc,kc:byte;
begin s:=' '+s+' '; l:=length(s); k:=0;
for i:=1 to l-1 do begin
if (s[i]=' ')and(s[i+1]<>' ') then nc:=i+1;
if (s[i]<>' ')and(s[i+1]=' ') then begin
kc:=i; k:=k+1;   r:=copy(s,nc,kc-nc+1);   msl[k]:=r;
end;end;end;
 
function gl(v:slovo):boolean;{fynkcui9 provekri yclovi9}
var d{kol-vo vxozdenui bykv},i,l:byte;
begin l:=length(v);d:=0;
for i:=1 to l do if (v[i]='a')or(v[i]='i')or(v[i]='o')or(v[i]='y')or
(v[i]='e')or(v[i]='u') then d:=d+1;
gl:=d>l/2;end;
 
 
begin writeln('vvedi stroky iz' ,n, 'slov');readln(st);
slova(st,slv,kol);
for i:=kol downto 1 do begin nmax:=1;
for j:=2 to i do if slv[j]>slv[nmax] then nmax:=j;
c:=slv[nmax]; slv[nmax]:=slv[i];slv[i]:=c;end;
for i:=1 to kol do writeln (slv[i]);end.
в данный момент программа просто сортирует введенные слова по алфавиту, я не связал проверку условия с выводом на экран(ну что бы брались только слова где больше половины гласных)))), не знаю как...ПОМОГИТЕ!!! заранее благодарю
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2009, 08:52
Ответы с готовыми решениями:

Найти слова, в которых больше половины гласных букв (a,e,i,o,u,y)и выдать их на экран.
Дана строка текста.Найти слова, в которых больше половины гласных букв (a,e,i,o,u,y)и выдать их на экран.

В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются.
В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются.

Удалить из слов ,длина которых больше двух букв, первую букву
Задана символьная последовательность из слов(символов) разделяющийся хотя бы одним пропуском. Выдалить из слов длинна которых больше двух...

7
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
12.11.2009, 09:17
Цитата Сообщение от tyty Посмотреть сообщение
Вот что я накарякал
и тут вы чертовски правы... оч трудно читебельный текст....
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 4
12.11.2009, 09:51  [ТС]
скажи что не понятно я постараюсь обьяснить))

Добавлено через 4 минуты
кстати к свединию гласные буквы это a,e,i,u,o,y. я вроде сделал первые 2 шага в алгоритме, а это функция которая распознает слова где >1\2 глассных...
Pascal
1
2
3
4
5
6
function gl(v:slovo):boolean;{fynkcui9 provekri yclovi9}
var d{kol-vo vxozdenui bykv},i,l:byte;
begin l:=length(v);d:=0;
for i:=1 to l do if (v[i]='a')or(v[i]='i')or(v[i]='o')or(v[i]='y')or
(v[i]='e')or(v[i]='u') then d:=d+1;
gl:=d>l/2;end;
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
12.11.2009, 09:56
tyty, да все понятно. я могу разобрать код, просто читать НЕ удобно... не думаете вы о тех кому все это читать...

Добавлено через 1 минуту
Цитата Сообщение от tyty Посмотреть сообщение
это функция которая распознает слова
очень безобразная функция... правильнее будет выглядеть она вот так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function Pr(s:string):boolean;
const
  gl=['а','е','о','ё','у','ю','я','э','е','A','Е','У','Ё','О','Э','Ю','Я']//допишете если что-то потерял
var
  i,count:integer;
begin
  count:=0;
  for i:=1 to length(s) then
    if s[i] in gl then
      inc(count);
  if count>length(s) div 2 then
    Result:=true
  else
    Result:=false
end;
0
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 4
12.11.2009, 10:13  [ТС]
извеняюсь может так будет лучще
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
program a1;
const n=4;
type  mas= array [1..n] of string;
slovo=string[10];
var  st: string; 
slv:mas;
i,j,r,kol,nmax:byte;
c:string[10];
 
procedure slova (s:string;var msl:mas; var k:byte);{procedyra videlenu9 clov iz stroki}
var r:string[10];  
l,i,nc,kc:byte;
begin 
 s:=' '+s+' '; l:=length(s);
 k:=0;
 for i:=1 to l-1 do  
 begin
  if (s[i]=' ')and(s[i+1]<>' ')  then nc:=i+1;
  if (s[i]<>' ')and(s[i+1]=' ')   then  
begin
kc:=i;
k:=k+1;
r:=copy(s,nc,kc-nc+1);
msl[k]:=r;
end;end;end;
 
function gl(v:slovo):boolean;{fynkcui9 provekri yclovi9}
var d{kol-vo vxozdenui bykv},i,l:byte;
begin 
l:=length(v);
d:=0;
for i:=1 to l do 
  if (v[i]='a')or(v[i]='i')or(v[i]='o')or(v[i]='y')or
   (v[i]='e')or(v[i]='u') then d:=d+1;
gl:=d>l/2;end;
 
 
begin writeln ('vvedi stroky iz' ,n, 'slov');
 readln(st);
  slova(st,slv,kol);
for i:=kol downto 1 do
      begin nmax:=1;
for j:=2 to i do 
 if slv[j]>slv[nmax] then nmax:=j;
c:=slv[nmax];
 slv[nmax]:=slv[i];
slv[i]:=c;end;
for i:=1 to kol do writeln (slv[i]);end.
хотя я не вижу разницы...

Добавлено через 6 минут
Цитата Сообщение от Inadequate Посмотреть сообщение
Pascal
1
2
3
4
5
6
  count:=0;
  for i:=1 to length(s) then
    if s[i] in gl then
      inc(count);
  
end;
что значит inc?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
12.11.2009, 10:30
Цитата Сообщение от tyty Посмотреть сообщение
что значит inc?
вот потому что вы не знаете что такое inc вы и не видите разницы...
inc это процедура повышения на 1, т.е. это тоже самое что i:=i+1;
а задание ваше я уже почти дописал и без вашего кода. сейчас только для больших букв проверку доделаю и выложу...

Добавлено через 14 минут
tyty, короче вот сие чудо, если что пропустил скажите, я невыспался немного но вроде все работает так как нужно:
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
var
  max,i,j,t1,t2:integer;
  s,temp,temp1,temp2:string;
  a:array[1..255]of string;
{функция проверки доли гласных}
function Pr(s:string):boolean;
const
  gl=['а','е','о','ё','у','ю','я','э','е','A','Е','У','Ё','О','Э','Ю','Я'];//допишете если что-то потерял
var
  i,count:integer;
begin
  count:=0;
  for i:=1 to length(s) do
    if s[i] in gl then
      inc(count);
  if count>length(s) div 2 then
    Result:=true
  else
    Result:=false
end;
{основная программа}
begin
  writeln('Введите строку...');
  readln(s);
  max:=0;
  temp:='';
  for i:=1 to length(s) do
  begin
    if s[i]<>' ' then
      temp:=temp+s[i];
    if (s[i]=' ') or (i=length(s)) then
    begin
      if (temp<>'') and Pr(temp) then
      begin
        inc(max);
        a[max]:=temp;
      end;
      temp:=''
    end;
  end;
  {сортируем массив}
  for i:=1 to max-1 do
  begin
    temp1:=a[i];
    t1:=ord(temp1[1]);
    if ord(t1)<200 then
      t1:=t1+34;
    for j:=i+1 to max do
    begin
      temp2:=a[j];
      t2:=ord(temp2[1]);
      if t2<200 then
        t2:=t2+34;
      if t2<t1 then
      begin
        temp:=a[i];
        a[i]:=a[j];
        a[j]:=temp
      end;
    end;
  end;
  {выводим}
  writeln('Массив:');
  for i:=1 to max do
    write(a[i],' ');
  writeln
end.
1
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 4
12.11.2009, 10:55  [ТС]
спасибо! все работает на 5, хотя я не понимаю половины))), например что такое орд?
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
12.11.2009, 11:00
tyty, У Вас встроенный Хэлп в Паскале есть. И там все написано и inc и ord. На худой конец есть книги в инете по Паскалю и Гугль. Нельзя же спрашивать то, что есть в этих источниках, это же не алгоритм придумывать, а просто прочитать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2009, 11:00
Помогаю со студенческими работами здесь

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

Подсчитать, сколько в строке слов, длина которых больше заданной
Разработать программу, которая определяет в строке из 5 слов количество слов длиннее четырех символов. Слова разделены одним пробелом. ...

Определить в каждой строке слова в которых гласных букв больше чем согласных
Пожалуйста, помогите оч срочно надо. Завтра уже сдавать. дан текстовый файл. Определить в каждой строке слова в которых гласных букв...

Определить количество слов в строке, длина которых больше чем 3 символа
Составить программу которая определяет количество слов в строке, длина которых больше чем 3 символа

Ввести в массив слов все слова из предложения, в которых гласных букв больше, чем согласных
В общем, задача 1 курса: Пользователь вводит предложение.. Нужно ввести в массив слов все слова из этого предложения, в которых гласных...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru