Страница 2 из 9

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

Добавлено: 15 фев 2008, 22:45
Medved
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:

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

Добавлено: 15 фев 2008, 22:49
C_O_D_E
тебе не лень было столько "пояснять?!"

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

Добавлено: 15 фев 2008, 22:59
Impulsive
Medved, воще супер!!!!!!

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

Добавлено: 15 фев 2008, 23:00
Medved
Руки устали, зато ПАРЖАЛ. Обрати внимание на ник. И есть ещё супермодная технология
Ctrl+C \ Ctrl+V

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

Добавлено: 15 фев 2008, 23:02
Medved
Пиши в icq 366300465. Только завтра. Я пароль забыл. :(

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

Добавлено: 15 фев 2008, 23:07
C_O_D_E
Medved писал(а):Руки устали, зато ПАРЖАЛ. Обрати внимание на ник. И есть ещё супермодная технология
Ctrl+C \ Ctrl+V
неа, мне больше нравиться CTRL+INSERT и SHIFT+INSERT. Руки привыкли...
А вообще супер програ.

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

Добавлено: 15 фев 2008, 23:32
Impulsive
Не работает. :(

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

Добавлено: 16 фев 2008, 00:29
drummer
напиши, что именно не работает. (Выдает неправильный результат, не компилиться, и тд)

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

Добавлено: 16 фев 2008, 01:00
Impulsive
в описательной части:

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

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

Добавлено: 16 фев 2008, 09:06
Serge_Bliznykov
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 слов (и то однобуквенных ;-))

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