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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2010, 18:03   #1
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию Операции над словом

Помогите пожалуйста в программе надо при выполнении условия в слове удалить глухие согласные и продублировать гласные, с первой частью справляется прога вроде более-менее, а вот на второй выдает ошибку(
Delphi у меня 2010 поэтому и ansistring
Код:
procedure DoublingOfVowels(MassOfStr : ansistring; var len : integer);
var
  x : integer;
begin
  x := 1;
  while x <= len do begin
    if MassOfStr[x] in BigVowels+SmallVowels then begin
      inc(len);
      Move(MassOfStr[x+1], MassOfStr[x+2], len-(x+1));
      MassOfStr[x+1] := MassOfStr[x];
      inc(x);
      continue;
    end;
    inc(x);
  end;
  SetLength(MassOfStr,len);
end;

procedure OperationsOnWord(MassOfStr : ansistring);
var
  x,len : integer;
begin
  len := length(MassOfStr);
  x := 1;
  while x <= len do begin
    if MassOfStr[x] in BigConsonants+SmallConsonants then begin
      Delete(MassOfStr,x,1);
      dec(len);
      continue;
    end;
    inc(x);
  end;
  DoublingOfVowels(MassOfStr,len);
  SetLength(MassOfStr,len);
  Write(MassOfStr);
end;
Помогите пожалуйста
Macmeprag вне форума Ответить с цитированием
Старый 16.10.2010, 18:41   #2
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

немного переделал doublingvowels
Код:
procedure DoublingOfVowels(var MassOfStr : ansistring; var len : integer);
var
  x : integer;
begin
  x := 1;
  MassOfStr := MassOfStr+ ' ';
  while x <= len do begin
    if MassOfStr[x] in BigVowels+SmallVowels then begin
      inc(len);
      Move(MassOfStr[x+1], MassOfStr[x+2], len-(x+1));
      MassOfStr[x+1] := MassOfStr[x];
      inc(x,2);
      continue;
    end;
    inc(x);
  end;
  SetLength(MassOfStr,len);
end;
вход на котором я тестирую прогу это
а аб ааб аба ааабпф абаб абба аааа
на 3-ем слове сдыхает даблинг вовелс=(
Macmeprag вне форума Ответить с цитированием
Старый 16.10.2010, 18:45   #3
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Что такое
BigVowels+SmallVowels и
BigConsonants+SmallConsonants:confu sed:
baster128 вне форума Ответить с цитированием
Старый 16.10.2010, 18:47   #4
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

Это константы, большие/маленькие гласные/согласные, с ними все впорядке, программа не на этом шаге выдает ошибку
Macmeprag вне форума Ответить с цитированием
Старый 16.10.2010, 19:09   #5
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Продублировать я так понимаю поставить рядом
такую же
procedure DoublingOfVowels(var MassOfStr : ansistring);
var
x,len : integer;
begin
x := 1;
len:=Length(MassOfStr);
while x <= len do begin
if MassOfStr[x] in BigVowels+SmallVowels then begin
inc(len,2);
Insert(MassOfStr, MassOfStr[x+1],x);
end;
end;

Последний раз редактировалось baster128; 16.10.2010 в 19:13.
baster128 вне форума Ответить с цитированием
Старый 16.10.2010, 19:16   #6
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

[DCC Error] Project1.dpr(61): E2197 Constant object cannot be passed as var parameter
на строчке с инсертом, даже компилятор не пропустил
Macmeprag вне форума Ответить с цитированием
Старый 16.10.2010, 19:30   #7
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Убери var из заголовка
procedure DoublingOfVowels(MassOfStr : ansistring);
Дай мне множество это, а то я у себя скомпелить не могу
baster128 вне форума Ответить с цитированием
Старый 16.10.2010, 19:37   #8
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

Код:
const
  BigConsonants = ['П','Ф','К','Ш','С','Т','Х','Ц','Ч','Щ'];
  SmallConsonants = ['п','ф','к','ш','с','т','х','ц','ч','щ'];
  BigVowels = ['А','Я','И','Ю','Ы','О','Э','Е','У'];
  SmallVowels = ['а','я','и','ю','о','э','е','у'];
Macmeprag вне форума Ответить с цитированием
Старый 16.10.2010, 19:41   #9
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

Код:
{$APPTYPE CONSOLE}
{$I+,Q+,R+}

uses
  SysUtils;
const
  BigConsonants = ['П','Ф','К','Ш','С','Т','Х','Ц','Ч','Щ'];
  SmallConsonants = ['п','ф','к','ш','с','т','х','ц','ч','щ'];
  BigVowels = ['А','Я','И','Ю','Ы','О','Э','Е','У'];
  SmallVowels = ['а','я','и','ю','о','э','е','у'];
  NMax = 1000;
  Separator = [chr(32)..chr(64)];
type
  TArr = array of ansistring;
var
  str       : ansistring;
  MassOfStr : TArr;
  f         : integer;

procedure ReadData(var str : ansistring);
var
  s : string;
begin
  while not EoF do begin
    ReadLn(s);
    str := str + s;
  end;
end;

procedure AlphabetSort(var MassOfStr : TArr; f : integer);
var
  i,j,x : integer;
  s     : ansistring;
begin
  for i := 0 to f do
    for j := 0 to f do
      for x := 1 to length(massOfStr[i]) do begin
        if MassOfStr[i,x] = MassOfStr[j,x] then
          continue;
        if MassOfStr[i,x] < MassOfStr[j,x] then begin
          s := MassOfStr[i];
          MassOfStr[i] := MassOfStr[j];
          MassOfStr[j] := s;
          break;
        end
        else
          break;
      end;
  for i := 0 to f do
    Write(MassOfStr[i],' ');
end;

procedure DoublingOfVowels(var MassOfStr : ansistring; var len : integer);
var
  x : integer;
begin
  x := 1;
  while x <= len do begin
    if MassOfStr[x] in BigVowels+SmallVowels then begin
      inc(len,2);
      Insert(MassOfStr[x],MassOfStr[x+1],x);
      inc(x,2);
      continue;
    end;
    inc(x);
  end;
  SetLength(MassOfStr,len);
end;

procedure OperationsOnWord(MassOfStr : ansistring);
var
  x,len : integer;
begin
  len := length(MassOfStr);
  x := 1;
  while x <= len do begin
    if MassOfStr[x] in BigConsonants+SmallConsonants then begin
      Delete(MassOfStr,x,1);
      dec(len);
      continue;
    end;
    inc(x);
  end;
  DoublingOfVowels(MassOfStr,len);
  SetLength(MassOfStr,len);
  Write(MassOfStr);
end;

procedure CallingOfOperationsOnWords(var MassOfStr : TArr; f:integer);
var
  i : integer;
begin
  WriteLn;
  for i := 0 to f do OperationsOnWord(MassOfStr[i]);
end;

procedure Solve(str : ansistring; var MassOfStr : TArr; var f : integer);
var
  i,x           : integer;
  s             : ansistring;
begin
  str:=str+' ';
  f := -1;
  for i := 1 to Length(str) do begin
    if str[i] in separator then begin
      inc(f);
      SetLength(MassOfStr,f+1);
      MassOfStr[f] := s+' ';
      s:= '';
      Continue;
    end;
    s := s + str[i];
  end;
  for i:=0 to f do
    for x:=1 to Length(MassOfStr[i])-1 do begin
      if ((Length(MassOfStr[i])>1) and (MassOfStr[i,Length(MassOfStr[i])-1]=MassOfStr[i,x])) then break;
    end;
end;

begin
  ReSet(input,'input.txt');
  ReWrite(output,'output.txt');
  ReadData(str);
  Solve(str,MassOfStr,f);
  CallingOfOperationsOnWords(MassOfStr,f);
end.
Вот вообще все что написал..
Вар вроде нельзя убирать если элемент под ним изменяется и должен передасться дальше в измененном виде
Macmeprag вне форума Ответить с цитированием
Старый 17.10.2010, 15:31   #10
Macmeprag
Пользователь
 
Аватар для Macmeprag
 
Регистрация: 07.10.2010
Сообщений: 43
По умолчанию

Кто-нибудь пможет с проблемой?!?)
Помогите пожалуйста еще решить вопрос не по теме..
Код:
while not KeyPressed do begin
  case c of
    1: Write('|');
    2: Write('/');
    3: Write('-');
    4: Write('\');
  end;
  Delay(2000);
  Inc(c);
  If c>4 then c:=1;
end;
Как такой алгоритм можно реализовать в делфи?!
Macmeprag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операции над файлами СИ Stases Помощь студентам 2 27.12.2009 18:10
Операции над строками Маринка777 Общие вопросы .NET 3 29.11.2009 22:28
Операции над множествами britva666 Помощь студентам 2 23.06.2009 20:33
Операции над повторяющими значениями Iskin Microsoft Office Excel 7 22.04.2009 14:45
Операции над данными yulia БД в Delphi 24 21.05.2007 01:18