Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение буквы в слове, проверка на гласные 
:(
    Опции темы
whitey
Дата 20.12.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Программа должна считывать слова в массив пока не будет введено слово, которое начинается на букву "b". После чего программа должна вывести все слова массива которые имею хотя бы одну гласную букву.
Питался делать через ф-цию. Завис на этом месте. Что не так?
Код
uses crt;
var
n,p: word;
mas:array [1..100] of string;
function Flag(const s: string):boolean;
var
i, k: word;
begin
k:= 0;
Flag:= false;
repeat
begin
       n:=n+1;
       readln(mas[n]);
       if mas[n][1]='b' then
       Flag:=true;
end;
begin
clrscr;
n:=0;
repeat
begin
  n:=n+1;
  readln(mas[n]);
end;
until (flag(mas[n])=true) or (n=100);
p:=n;
for n:=1 to p do
    begin
         for i:=1 to length(mas[n]) do if mas[n][i]='a' then inc(k);
         for i:=1 to length(mas[n]) do if mas[n][i]='e' then inc(k);
         for i:=1 to length(mas[n]) do if mas[n][i]='i' then inc(k);
         for i:=1 to length(mas[n]) do if mas[n][i]='y' then inc(k);
         for i:=1 to length(mas[n]) do if mas[n][i]='o' then inc(k);
         for i:=1 to length(mas[n]) do if mas[n][i]='u' then inc(k);
             if k>1 then
                begin
                     write(mas[n],' ');
                end;
    end;
readkey;
end.


PM MAIL   Вверх
Majar
Дата 20.12.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



вот держи код проги:
Код

program vin_3;
uses
 Crt;
const
 glas: set of char = ['a','o','i','e','u','y'];
var
 mas: array [1..100] of string;
 i, k, j: byte;
begin
 ClrScr;
 writeln('Vvod slov: ');
 i:= 0;
 repeat
  begin
   inc(i);
   readln(mas[i]);
  end;
 until mas[i][1] = 'b';
 writeln('');
 writeln('Slova, imeiyzhie xotia bu 1 glasnyiy bykvy: ');
 for k:= 1 to i do
  for j:= 1 to Length(mas[k]) do
   if mas[k][j] in glas then
    begin
     writeln(mas[k]);
     break;
    end;
 readln;
end.


Цитата

Питался делать через ф-цию. Завис на этом месте. Что не так?

Учись пользоваться типом множество и упрощать логические конструкции
PM MAIL   Вверх
Dobermann
Дата 20.12.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



whitey, у тебя в коде 2 repeat'a, а until - 1, чё за?!?!?!
PM   Вверх
Hades
Дата 20.12.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 8.8.2008

Репутация: нет
Всего: 37



whitey, Majar, 
а прописные буквы('A" 'E' 'O' 'I' 'U' 'Y')? smile 
PM MAIL   Вверх
Majar
Дата 20.12.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Цитата

whitey, Majar, 
а прописные буквы('A" 'E' 'O' 'I' 'U' 'Y')? smile 


Это не принципиально, так как на алгоритм не влияет, надо только расширить множество glas (в этом преимущество множеств)
Если все же надо подправить - пожалуйста.

Исправленный код:
Код

program vin_3;
uses
 Crt;
const
 glas: set of char = ['a','o','i','e','u','y','A','O','I','E','U','Y'];
var
 mas: array [1..100] of string;
 i, k, j: byte;
begin
 ClrScr;
 writeln('Vvod slov: ');
 i:= 0;
 repeat
  begin
   inc(i);
   readln(mas[i]);
  end;
 until mas[i][1] = 'b';
 writeln('');
 writeln('Slova, imeiyzhie xotia bu 1 glasnyiy bykvy: ');
 for k:= 1 to i do
  for j:= 1 to Length(mas[k]) do
   if mas[k][j] in glas then
    begin
     writeln(mas[k]);
     break;
    end;
 readln;
end.
 

Это сообщение отредактировал(а) Majar - 20.12.2008, 20:42
PM MAIL   Вверх
whitey
Дата 20.12.2008, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2008

Репутация: нет
Всего: нет



Цитата(Majar @  20.12.2008,  19:06 Найти цитируемый пост)
Учись пользоваться типом множество и упрощать логические конструкции 

Я так уже делал. Препод сказал переделывайте, мы этого еще не проходили.
PM MAIL   Вверх
volvo877
Дата 21.12.2008, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Majar @  20.12.2008,  18:06 Найти цитируемый пост)
Учись пользоваться типом множество и упрощать логические конструкции 
Ну, и ты учись пользоваться циклом Repeat и упрощать бессмысленные конструкции.

whitey, вот с функцией:
Код
uses crt;

function hasVowels(const s: string): boolean;
var i: integer;
begin
  hasVowels := false;
  for i := 1 to length(s) do
    case upcase(s[i]) of
      'A', 'E', 'O', 'I', 'U': hasVowels := true;
    end;
end;

var
  mas: array[1 .. 100] of string;
  i, n: byte;
begin
  clrscr;
  writeln('Vvod slov: ');
  n := 0;
  repeat
    inc(n);
    readln(mas[n]);
  until mas[n][1] = 'b';

  writeln('');
  writeln('Slova, imeiyzhie xotia bu 1 glasnyiy bykvy: ');
  for i := 1 to n do
    if hasVowels(mas[i]) then writeln(mas[i]);
  readln;
end.

PM MAIL   Вверх
Majar
Дата 21.12.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Цитата

Ну, и ты учись пользоваться циклом Repeat и упрощать бессмысленные конструкции.

цикл repeat в моем коде абсолютно такой же как и в вашем, а бессмысленные конструкции я не использую. Мой код прекрасно работает, а ограничение на использование множеств в первоначальном вопросе не было - так что последите за своими словами. Хоть вы и модератор, это не дает вам право предъявлять необоснованные обвинения.

Это сообщение отредактировал(а) Majar - 21.12.2008, 16:38
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0789 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.