Пожалуйста напишите прогу на Pascal'е!

Ответить
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

program lalala; {Прога "ляляля"}
const gluh=['к','п','с','т','ф','х','ц','щ']; {Все глухие}
type wrds=array[1..256] of string; {новый тип- массив словес}
var l:string; {строчечго}
ww:wrds; {словеса}
len,ii:integer; {числеца - len кол-во слов ii счётчик}

procedure fromstringtwords; {строчечго --> словеса}
var i,j:integer; { no comments}
cs:string; {cs- current string - кусок слова}
begin {---}
i:=1; {---}
j:=1; {---}
cs:=''; {}
while l<>'.' do {пока символ l <> '.'}
begin {---}
if l=',' then {если он "," }
begin {---}
ww[j]:=cs; {словесо = сs}
cs:=''; {кусок слова пустой}
inc(j); {следующее словесо }
end else cs:=cs+l; {иначе кусок слова + символ из строчечго}
inc(i);
end;
ww[j]:=cs; {последнее словесо}
len:=j; {кол-во словес}
end;

function ninchet(s:char):boolean; {символ s не содержится в 1 чёт.]
var i,j:integer;
k:boolean;
begin
i:=0;
k:=true; {к = содержится}
while (i<=len) and k do
begin
inc(i,2);
j:=1;
while (j<=length(ww))and(ww[j]<>s) do inc(j);
if j<=length(ww) then {если всё-таки не содержится}
begin
k:=false; {то так и быть}
end;
end;
ninchet:=i>len; {возврат}
end;

function inallnechet(s:char):boolean; {во всех нечет. есть s}
var i,j:integer;
k:boolean;
begin
k:=true; {k= оно во всех}
i:=-1;
while (i<=len) and k do { если не во всех- ПАКА}
begin
inc(i,2);
j:=1;
while (j<=length(ww)) and (ww[j]<>s) do inc(j);
k:=j>length(ww); {k:= во всех ли?}
end;
inallnechet:=i<len;
end;

begin
fillchar(ww,sizeof(ww),0); {забить словеса пустотой}
read(l); {строчечго!}
fromstringtwords;{строчечго --> словеса}
for ii:=40 to 256 do {все символы, в кот. может содержаться глух. (можно упростить)}
if chr(ii) in gluh then {если символ глухой}
begin
if ninchet(chr(ii)) and inallnechet(chr(ii)) then write(chr(ii),' '); { и соотв. условию - вывести}
end;
end. {всё}


Теперь ОК? :cool:
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

тебе не лень было столько "пояснять?!"
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
Impulsive
Сообщения: 43
Зарегистрирован: 19 окт 2007, 20:53

Medved, воще супер!!!!!!
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

Руки устали, зато ПАРЖАЛ. Обрати внимание на ник. И есть ещё супермодная технология
Ctrl+C \ Ctrl+V
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

Пиши в icq 366300465. Только завтра. Я пароль забыл. :(
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

Medved писал(а):Руки устали, зато ПАРЖАЛ. Обрати внимание на ник. И есть ещё супермодная технология
Ctrl+C \ Ctrl+V
неа, мне больше нравиться CTRL+INSERT и SHIFT+INSERT. Руки привыкли...
А вообще супер програ.
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
Impulsive
Сообщения: 43
Зарегистрирован: 19 окт 2007, 20:53

Не работает. :(
drummer
Сообщения: 61
Зарегистрирован: 13 янв 2008, 18:43

напиши, что именно не работает. (Выдает неправильный результат, не компилиться, и тд)
Impulsive
Сообщения: 43
Зарегистрирован: 19 окт 2007, 20:53

в описательной части:

type wrds=array[1..256] of string; тут он выдает большой тип данных, но эт я изменил вродь,
потом
ww:wrds; {словеса} - много переменных!
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

1) Copy\Paste подвело!!!!
в строчке
function ninchet(s:char):boolean; {символ s не содержится в 1 чёт.]
коммментарий открылся и НЕ ЗАКРЫЛСЯ!!
надо квадратную скобку поменять на фигурную!

2) Impulsive, уменьшите размер структуры wrds
ну, например так:
type wrds=array[1..250] of string;
не совсем ясно, зачем использовать структуру, если используется она один раз.
тогда уже можно написать
ww : array[1..250] of string; {массив слов}

что, кстати, тоже избыточно - в строке (string) Паскаля всего 256 символов, поэтому для данной задачи в строчку нельзя ввести более 126 слов (и то однобуквенных ;-))

и вообще, я бы лично задачу решал по другому - завёл массив согласных, потом обрабатывал слова по одному (никуда слова не сохраняя!!, только в массиве согласных делал отметки, что встретилось... (если буква в чётном слове встретилась — признак выключения её навсегда, если признака выключения нет и встретилось в нечётном, то признак "включить букву"...)
Ответить