Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 20:14   #1
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
Радость Прошу проверить на неправильность..

Здравствуйте форумчане, сейчас сижу делаю себе лабу в институт, задание такое:
Дана строка символов, содержащая русские слова, разделенные пробелами. Удалить из слов с четной длиной все гласные, а из слов с нечетной длинной – все согласные. Полученные слова вывести на экран в лексикографическом виде.
Вот код, он как бы работает, но есть такие входные данные, при которые он не хочет выдавать правильный ответ, к примеру таким словом является слово "на"
вот код:
Код:
program aaa;
uses Crt;
const gla: set of char=['А','а','Е','е','И','и','О','о','У','у','Ы','ы','Э','э',
     'Ю','ю','Я','я'];
      so:set of char=['Б','б','В','в','Г','г','Д','д','Ж','ж','З','з','К','к',
      'Л','л','М','м','Н','н','П','п','Р','р','С','с','Т','т','Ф','ф','Х','х',
      'Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ','Ь','ь'];
var mas:array[1..50] of string;//массив слов
    q:integer;//счетчик слов
    str:string;//строка
    i:integer;//циклический счетчик
    slovo:string; //очередное слово
    n:integer;//счетчик для букв
    max,min:integer;
begin
{ввод строки}
Writeln('Введите строку');
readln(str);
{присвоение начального значения счетчикам}
i:=1;
q:=1;
repeat
if str[i]=char(#32) then
 begin
  slovo:=copy(str,1,i-1);//копируем очередное слово
  mas[q]:=slovo;//заносим его в массив
  inc(q);//повышаем счетчик кол-ва слов
  delete(str,1,i);//удаляем использованное строчное слово
  i:=1; //присваиваем начальное значение
  end;
if i=length(str) then
 begin
  slovo:=copy(str,1,i);//копируем очередное слово
  mas[q]:=slovo;//заносим его в массив
  {присваиваем значение больше длинны строки чтоб
  выйти из цикла}
  i:=length(str)+1;
  end;
inc(i);
until i>length(str);
Writeln('Вид разобранной по словам строки:');
for i:=1 to q do
 begin writeln(mas[i]);end;
{разбираем каждое слово массива на состовляющие}
  n:=1;
for i:=1 to q do
 begin
  slovo:=mas[i];
  if (length(slovo) mod 2=0) then
   begin
    repeat
      if slovo[n] in gla then
       begin
        delete(slovo,n,1);n:=1;
        end;
       n:=n+1;
      until n=length(slovo);
    end;
  if not(length(slovo) mod 2=0) then
   begin
    repeat
      if slovo[n] in so then
       begin
        delete(slovo,n,1);n:=1;
        end;
       inc(n);
      until n>=length(slovo);
    end;
    n:=1;
   mas[i]:=slovo;
  end;
Writeln('Вид разобранной по словам строки:');
for i:=1 to q do
 begin writeln(mas[i]);end;
 readln;
 end.
CodeExpert вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверить расширение Dimarik Общие вопросы C/C++ 2 16.08.2009 16:23
Проверить прогу Рітка-кулеметчиця Помощь студентам 5 30.01.2009 12:26
Проверить выражение fosto Общие вопросы Delphi 1 16.12.2008 01:52
Прошу проверить код программы Pashtet Паскаль, Turbo Pascal, PascalABC.NET 1 19.11.2008 11:50
Прошу помощи. Нада проверить правильность составления проги. И помочь исправить ошибку Ascor Общие вопросы C/C++ 4 03.06.2008 10:54