Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
//Просто скажите говнокод это или нет. Сильно не пинать, я ток учусь программировать. Нужно адекватное мнение
//По идее я правильно решил?
//Вот условие задачи:
//
{
А) Исследуя модель танцевального кружка, можно заметить, что в любой
момент одна из двух очередей обязательно пуста. В самом деле, если приходит
больше мальчиков, то будет пуста девчоночья очередь и наоборот. Можно ли
обойтись одной очередью? Придумайте, как это сделать.
Подсказка: добавьте функцию для тестирования очереди с тем, чтобы
выяснить, не пуста ли она. И, если не пуста, то кто томится в ней — мальчик или
девочка? Эта функция не должна изменять состояние очереди.}
//Вот моё решение:
uses Crt;
var
S_IN : String; //Stream In
S_OUT : String; //Stream Out
b : boolean; //Lenth = 0 or no?
S : String; //Boys and Girls
c1, c2, c3 : char; //Symbols: first and second
i : Integer; //Index in input stream
//Кто томится в очереди, мальчик или девочка?
function EmptyQue (var Que : String; var boy_or_girl : char) : boolean;
begin
if Length (Que) = 0 then EmptyQue:=false
else
begin
boy_or_girl:=Que[1];
EmptyQue:=true;
end;
end;
//Постановка символа arg в очередь Que
procedure PutInQue (var Que : String; arg : char);
begin
Que:=Que+arg;
end;
//Являются ли первый символ в очереди и текущий одинакового регистра
function Test (const Que : String): boolean;
begin
if ((c3 in ['A'..'Z']) and (c1 in ['A'..'Z'])) // 'A'..'Z'
or
((c3 in ['a'..'z']) and (c1 in ['a'..'z'])) //'a'..'z'
then
Test:=true
else
Test:=false;
end;
//Извлечь из очереди
function GetFromQue (var Que : String; var arg : char) : boolean;
var
b : boolean;
begin
b:=Test (Que); //Если первый в очереди и текущий, мальчик или
if b then GetFromQue:=false //девочка, то идем дальше, пару не составляем
else
begin
GetFromQue:=true;
arg:=Que[1];
Delete (Que,1,1);
end;
end;
begin
ClrScr;
S_IN:='ZHJKqwertASDyuiopQWERTYUIOPasdf';
S_OUT:='';
c3:=#0;
S:='';
for i:=1 to Length (S_IN) do
begin
c1:=S_IN[i];
b:=EmptyQue (S,c3);
if b then begin
if c1 in ['A'..'Z'] then begin
if GetFromQue (S,c2) then S_OUT:=S_OUT+c1+c2+' '
else
PutInQue (S,c1);
end
else
begin
if GetFromQue (S,c2) then S_OUT:=S_OUT+c2+c1+' '
else
PutInQue (S,c1);
end;
end
else
PutInQue (S,c1);
end;
Writeln ('Входной поток: ');
Writeln (S_IN);
Writeln ('Выходной поток: ');
Writeln (S_OUT);
Writeln ('В очереди остались:');
Writeln (S);
Readln;
end.
Хочу узнать мнение других людей. Наговнокодил ли я или нет, пока решал задачу (задача из книги по программированию "Песни о Паскале"). Короче дана входная строка, состоящая из маленьких и больших латинских букв (большие - мальчики, маленькие - девочки). Есть две очереди Boys и Girls. Если текущий символ (это в цикле) мальчик, то достаем девочку, иначе - достаем мальчика.
:
...
for i:=1 to Length(S_IN) do begin
c1:= S_IN[i]; { выбираем из входного потока }
if c1 in ['A'..'Z']
then begin { если это мальчик...}
{ если в очереди есть девочка }
if GetFromQue(Girls, c2)
{ добавляем пару в выходной поток }
then S_OUT:= S_OUT+c1+c2+’ ’
{ а иначе помещаем мальчика в очередь }
else PutInQue(Boys, c1);
end
else begin { а если это девочка...}
{ если в очереди есть мальчик }
if GetFromQue(Boys, c2)
{ добавляем пару в выходной поток }
then S_OUT:= S_OUT+c2+c1+’ ’
{ а иначе помещаем девочку в очередь }
else PutInQue(Girls, c1);
end
end;
...
Теперь необходимо всё делать в одной очереди (а не Boys и Girls)
> Просто скажите говнокод это или нет.
Следи за руками, Small_Diamond! Свой код ты выложил на сайт govnokod.ru, откуда можно сделать вывод, что твой код - это говнокод. Всё просто!
1. Мальчики не выбирают сами, а родители не спрашивают (по себе знаю) что хочет чадо, и, если учитывать, сколько идиотов стало вокруг, вполне логично, что всякие вейперы и хипстеры отправляют пацанов в плясуны.
2. Парни в сознательном возрасте могут идти на балет ради девчонок. Логично, если ты один на 20 баб, то ты в шоколаде, даже если крив и страшен. А потом некоторые втягиваются, и все.
Да, забавно будет. Пришел надеясь что будешь один на 20 баб, а по факту пришло больше мальчиков. Ну и делать нечего, втянулся потихоньку, тем более европейские ценности.
Я знал, что стандартный код для айфрейма (https://www.youtube.com/embed/<id>) не проверяет возраст, а оказалось, что у него есть псевдоним на целых четыре символа короче.
procedure TForm1.Button1Click(Sender: TObject);
var s,a:string; {a - входной поток s - очередь}
v,z,i:integer; {v - счетчик очереди: 0 - нет очереди, положительное - очередь больших, отрицательное -очередь маленьких z - текущий сивол: -1 маленькая 1 большая i - Index }
begin
a:=Edit1.Text;
s:=a[1];
if (ord(a[1]) div 97) = 1 then v:=1 else v:=-1;
for i:=2 to length(a) do
begin
if (ord(a[i]) div 97) = 1 then z:=1 else z:=-1;
memo1.Lines.Add('Очередь : '+s+' '+inttostr(v));
if v=0 then
begin
Memo1.Lines.Add('Очереди нет ');
v:=v+z;
s:=a[i];
end
else
if v*z>0 then
begin
s:=s+a[i];
v:=v+z;
end
else
begin
Memo1.Lines.Add('Пара образована : '+s[1]+'-'+a[i]);
delete(s,1,1);
if z=1 then v:=v+1 else v:=v-1;
end;
end;
Memo1.Lines.Add('В очереди остались :'+s);
end;
Уже плохо: какие-то глобальные переменные, да ещё и с ни о чём не говорящими названиями.
Если от этого кода оторваться и вернуться через несколько недель, то Вы уже сами не вспомните, какой фрагмент что делает.
Вообще рекомендую погуглить материал по теме «сцепление модулей».
Следи за руками, Small_Diamond! Свой код ты выложил на сайт govnokod.ru, откуда можно сделать вывод, что твой код - это говнокод. Всё просто!
>Если приходит больше мальчиков
>танцевального
>больше мальчиков
impossible
1. Мальчики не выбирают сами, а родители не спрашивают (по себе знаю) что хочет чадо, и, если учитывать, сколько идиотов стало вокруг, вполне логично, что всякие вейперы и хипстеры отправляют пацанов в плясуны.
2. Парни в сознательном возрасте могут идти на балет ради девчонок. Логично, если ты один на 20 баб, то ты в шоколаде, даже если крив и страшен. А потом некоторые втягиваются, и все.
Фу хуйня. Даже не матюкнешься.
В балете гейропейские ценности прижились задолго до того, как у вас стало принято материть европку, но при этом все хорошее привозить оттуда.
Кто все эти люди?
Примерно так переводится кудахтанье среднестатистического питуха на русский язык
Ну это уже 18+ какое-то...
>колготки
>пидары
>сосёт
procedure TForm1.Button1Click(Sender: TObject);
var s,a:string; {a - входной поток s - очередь}
v,z,i:integer; {v - счетчик очереди: 0 - нет очереди, положительное - очередь больших, отрицательное -очередь маленьких z - текущий сивол: -1 маленькая 1 большая i - Index }
begin
a:=Edit1.Text;
s:=a[1];
if (ord(a[1]) div 97) = 1 then v:=1 else v:=-1;
for i:=2 to length(a) do
begin
if (ord(a[i]) div 97) = 1 then z:=1 else z:=-1;
memo1.Lines.Add('Очередь : '+s+' '+inttostr(v));
if v=0 then
begin
Memo1.Lines.Add('Очереди нет ');
v:=v+z;
s:=a[i];
end
else
if v*z>0 then
begin
s:=s+a[i];
v:=v+z;
end
else
begin
Memo1.Lines.Add('Пара образована : '+s[1]+'-'+a[i]);
delete(s,1,1);
if z=1 then v:=v+1 else v:=v-1;
end;
end;
Memo1.Lines.Add('В очереди остались :'+s);
end;