Люди добрые, помогите решить задачи по паскалю.



читать дальше



Заранее спасибо))






Комментарии
19.05.2007 в 11:19

Псих
2.



Program ee;

Uses Crt;

Var i, counter : integer;

slovo, s : string;

key : char;



Procedure SdvigSlova(var slovo : string);

Var l : byte;

bukva : char;

Begin

l:=length(slovo);

bukva:=slovo[l];

For i:=l DownTo 2 do begin

slovo[i]:=slovo[i-1];

end;

slovo[1]:=bukva;

End;



BEGIN

ClrScr;

Write('Введите слово: ');

ReadLn(slovo);

s:=slovo;

counter:=0;

WriteLn;

Repeat

SdvigSlova(slovo);

Inc(counter);

WriteLn('Может так - ', slovo, '? (y/n)');

Repeat

key:=ReadKey;

Until( (pos(key, 'yYnNнНтТ')) > 0 );

{ WriteLn; }

Until( pos(key, 'yYнН') > 0 );

Writeln;

WriteLn('Было - ', s);

WriteLn('Стало - ', slovo);

WriteLn('Перемещений - ', counter);

ReadKey;

END.



:D
19.05.2007 в 13:28

Crazy Wizard, спасибо ))) Программа же не сдвигает буквы, она предлагает заменить корявое на правильнонаписанное слово, так?
19.05.2007 в 14:10

Псих
Загадка природы, программа сдвигает буквы) И каждый раз спрашивает у пользователя, норм или нет. Просто как иначе понять, правельное слово или нет? Нужен словарик.. Или программа должна работать только со словом "процессор"?
19.05.2007 в 14:19

Псих
1. примерный алгоритм. Нужно разбить фразу на слова и записать слова в массив. Разбивать так: берём первую букву в строке, плюсуем вторую, потом третью и так пока доберёмся до символа, который не буква. Идём до следующей буквы и начинаем запись второго слова.

Вот с сортировкой по алфавиту сложнее. Надо либо использовать номера в таблице ASCII (ord(char);), либо создать константу в которой будет строка со всеми буквами алфавита и используя функцию pos определять, что должно быть первее..



3. не понял задачу) можно подробнее?
21.05.2007 в 15:44

Crazy Wizard, спасибо, теперь и я увидела, что она передвигает буквы))

3 задачу я сама с трудом поняла. Если не ошибаюсь, нужно использовать множества.
22.05.2007 в 21:16

и это пройдет.. (c) надпись на кольце Соломона
ну как обычно отмазываюсь по поводу пАскаля =)



1. Crazy Wizard сорри но Вот с сортировкой по алфавиту сложнее.... есть бред :) string можно сравнивать ;)



Program SubStrings;



Uses ... //хз :)



my_string, t: String;

my_words: array[1..50] of String;

i, j, k: integer;

b: boolean;



begin

ClrScr;

Write('Введите слово: ');

ReadLn(my_string);

j:=1;

b:= false; //для учета нескольких пробелов подряд



//разбор на слова

for i:=1 to length(my_string) do

begin

if my_string[i] <> ' ' then

my_words[j] := my_words[j]+my_string[i];

else if b == false then

begin

j := j + 1;

b := true;

end;

end;

//



//сортировка пузырьком

for i := j - 1 downto 1 do

for k := 1 to i do

if a[k] > a[k+1] then

begin

t := a[k];

a[k] := a[k+1];

a[k+1] := t;

end;

//



//вывод

for i := 1 to j do

writeln(my_words[i]);



end.



ограничения: первый и последний символы не должны быть пробелами

поправьте если не прав
22.05.2007 в 21:46

и это пройдет.. (c) надпись на кольце Соломона
так.. первое сам увидел.. тут:

if my_string[i] <> ' ' then

my_words[j] := my_words[j]+my_string[i];

else if b == false then




должно быть:

if my_string[i] <> ' ' then

begin

my_words[j] := my_words[j]+my_string[i];

b := false;

end;

else if b == false then
22.05.2007 в 21:57

Reservoir_Dog, как понять "сортировка пузырьком"?
22.05.2007 в 21:57

Псих
должно быть:

if my_string[i] <> ' ' then

begin

my_words[j] := my_words[j]+my_string[i];

b := false;

end;

else if b == false then




выделенные символы явно лишние.
22.05.2007 в 22:04

Псих
> выделенные символы явно лишние.

Что-то они не особо выделились. В общем перед else точку с запятой не ставят и в паскале сравнение, это 1 символ "=".



> "сортировка пузырьком"?

каждый элемент сравнивается с соседним. Если 1 больше второго, они меняются местами и первый сравнивается дальше. Если больше второй, то начинаем сравнивать его со следующем. Ну или как то так))
22.05.2007 в 22:14

Crazy Wizard, слышала о таком)) мерси
22.05.2007 в 22:22

и это пройдет.. (c) надпись на кольце Соломона
Crazy Wizard поражает некомпетентность ответов :(

Загадка природы описание алгоритма тут
22.05.2007 в 22:30

Reservoir_Dog, благодарю... вы только не ругайтесь тута)) это все моя неосведомленность
22.05.2007 в 22:33

Псих
Reservoir_Dog, не расстраивайся) От того, что рассказал про алгоритм своими словами и каряво - ничего плохого не случилось)
22.05.2007 в 22:35

и это пройдет.. (c) надпись на кольце Соломона
Crazy Wizard не иди в строители ;)
23.05.2007 в 00:22

и это пройдет.. (c) надпись на кольце Соломона
3.

program kolhoz;



uses .....



const differential_unique_culture = 1;



type TKolhoz = record

name: string[50];

culture: array[1..50] of string;

end;



type TCulture = record

name: string;

kolhozs: array[1..50] of string;

kolhozs_number: integer;

cost: integer;

end;



kolhoz_list: array[1..50] of TKolhoz;

kolhoz_quantity: integer;



common_culture, different_culture: array[1..50] of TCulture;



culture_list: array[1..150] of TCulture; /* возможно мало.. смотря сколько культур может выращивать один колхоз и сколько колхозов всего */



i, j, k, s, x: integer;

flag: boolean;



begin

//ввод

//сама ;)

//



i := 1; s := 0;



while kolhoz_list[i].name <> '' and i <= 50 do

begin

j := 1;



while kolhoz_list[i].culture[j] <> '' and j <= 50 do

begin

flag := false;

k := 1;



while k <= s and flag = false do

begin

if kolhoz_list[i].culture[j] = culture_list[k].name then

begin

inc(culture_list[k].cost);

inc(culture_list[k].kolhozs_number);

x := culture_list[k].kolhozs_number;

culture_list[k].kolhozs[x] := kolhoz_list[i].name;

flag := true;

end;

inc(k);

end;



if flag = false then

begin

inc(s);

culture_list[s].name := kolhoz_list[i].culture[j];

culture_list[s].cost := 1;

culture_list[s].kolhozs_number := 1;

culture_list[s].kolhozs[1] := kolhoz_list[i].name;

end;

inc(j);

end;

inc(i);

end;

kolhoz_quantity := i - 1;

j := 0; k := 0;



for i := 1 to s do

begin

if culture_list[i].cost = kolhoz_quantity then

begin

inc(j);

common_culture[j] := culture_list[i];

end;



if culture_list[i].cost = differential_unique_culture then

begin

inc(k);

different_culture[j] := culture_list[i];

end;

end;



//вывод

// сама ;)

//



end.
23.05.2007 в 00:24

и это пройдет.. (c) надпись на кольце Соломона
только под конец подумал что все таки со списками будет проще... %) сорри переделывать уже ломает =)
23.05.2007 в 00:42

Или программа должна работать только со словом "процессор"?

Пропустила.. Да-да, только со словом процессор, все намного проще.
23.05.2007 в 00:42

Reservoir_Dog, да ничего, и на том спасибо))
23.05.2007 в 00:51

Ребята, спасибо вам, вы очень помогли)))
23.05.2007 в 00:59

и это пройдет.. (c) надпись на кольце Соломона
Загадка природы пожалста :) надеюсь ты больше не будешь прогуливать столь интересные предметы ;)
23.05.2007 в 02:33

Reservoir_Dog, я тоже надеюсь))
23.05.2007 в 11:53

Кхе-кхе, напишите плиз шапку к первой задаче...
23.05.2007 в 22:51

и это пройдет.. (c) надпись на кольце Соломона
Загадка природы что есть шапка? %)
24.05.2007 в 17:32

Reservoir_Dog, уже сама написала... не нужно)
26.05.2007 в 00:26

и это пройдет.. (c) надпись на кольце Соломона
Загадка природы ай молодца! ;) можешь если надо ;)
26.05.2007 в 03:18

Reservoir_Dog, если очень надо, то голова хошь-не хошь начинает соображать))