LINUX.ORG.RU
Ответ на: комментарий от true

это автодополнение в студии способствует написанию подобного кода

Reset ★★★★★
()

а для ламосов можно объяснить в чём проблема?

ну 2 раза пробежался по выбору объектов, фиг с ним, при опримизации поправит.

а вот что остальной код делает? и почему таки дёргается камера?

зачем 2 раза игрек вектор занулять. что делает функция нормализ

кто объяснит?

gunja
()
Ответ на: комментарий от gunja

не важно, это еще одна тема где местные "интэрпрайз-программерз" смогут вставить своё "гыгы" и "лол".

anonymous
()
Ответ на: комментарий от gunja

>зачем 2 раза игрек вектор занулять

незнаю :)

>что делает функция нормализ

нормализует вектор, как ни странно :)

>кто объяснит?

да дело не в том, почему не работает. Там скорее всего ньютон глючит, угребищьное поделие еще то. Но код убил наповал

lester_dev ★★★★★
() автор топика
Ответ на: комментарий от gunja

>фиг с ним, при опримизации поправит.

Гы. И давно это подобные вызовы на языках с сайдэффектами оптимизируются? :) Откуда компилятору знать что, например, getTarget одновременно при этом ещё и target не сбрасывает? :D

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>не важно, это еще одна тема где местные "интэрпрайз-программерз" смогут вставить своё "гыгы" и "лол".

Просто местных "интэрпрайз-программерз" не писать так учили ещё на Бейсике в научно-популярных журналах 20 лет назад. Вот и рождается это "гы" от появления поколения программеров, незнакомых с самым базисом.

KRoN73 ★★★★★
()
Ответ на: комментарий от gunja

> а написанное с ф не знаю как работает

Просто флоат, а не дабл. Вроде бы.

zJes ★★
()
Ответ на: комментарий от anonymous

>Я понимаю, но это же не повод выкладывать в толксах каждые увиденный образец быдлокода, нэ?

нэ, таки повод

lester_dev ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>Я понимаю, но это же не повод выкладывать в толксах каждые увиденный образец быдлокода, нэ?

Как раз повод. Вот так поржёшь, пальцем ткнёшь, и иной прочитавший проникнется и не будет такое писать завтра в своей программе. И мир станет немного чище.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Гы. И давно это подобные вызовы на языках с сайдэффектами оптимизируются?

не, в смысле сам писатель напишет: объект = бла->bla->bla->bla()

diff = object->getTarget() - object->getSomethingElse();

это здорово, что нормализует. для 3-д вектора, если 3тья компонета была 0, после нормализации (т.е. домножения координат вектора так, чтобы длина вектора стала равна 1) 3ья компонента должна остаться нулевой. что-то не чисто в таких махинациях.

gunja
()
Ответ на: комментарий от anonymous

>Я понимаю, но это же не повод выкладывать в толксах каждые увиденный образец быдлокода, нэ?

и еще, дело не в персональном отношении к автору индусокода, может он учится, мало ли. И у меня можно такой код найти, что ой-ой-ой, как и у каждого, я думаю. Но это повод не давать заряд веселых эмоций людям.

lester_dev ★★★★★
() автор топика
Ответ на: комментарий от gunja

>после нормализации (т.е. домножения координат вектора так, чтобы длина вектора стала равна 1) 3ья компонента должна остаться нулевой. что-то не чисто в таких махинациях.

а так и есть. Зачем он ее обнуляет я не знаю. Перестраховывается наверно :)

lester_dev ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

> Вот так поржёшь, пальцем ткнёшь, и иной прочитавший проникнется и не будет такое писать завтра в своей программе.

В таком случае объясните, пожалуйста, человеку ничего не писавшему на C++ и Java, и пользовавшегося только C, и то давно, как правильно написать данный фрагмент.

anonymous
()
Ответ на: комментарий от lester_dev

> Перестраховывается наверно :)

если домножает на флоат, возможно в некоторых местах из 0 флоата * число, появляется далеко не 0 флоата (из-за ошибок приведения вроде называется).

при этом нельзя это сделать только в 1м месте, т.е. если к примеру не занулить перед вызовом нормализации - другая длина вектора будет, не занулить после - возможна ошибка округления.

хотя проще в строчке присвоения вместо камвек.игрек тупо пробить 0.

камвек если потом больше не будет использоваться, конечно же

gunja
()
Ответ на: комментарий от anonymous

>В таком случае объясните, пожалуйста, человеку ничего не писавшему на C++ и Java

В таком случае объясните, пожалуйста, что человек, ничего не писавший на C++ и Java, делает в этом треде?

lester_dev ★★★★★
() автор топика

IDE с автодополнением способствуют отключению мозга во время написания 
кода, поэтому и рождаются такие вещи. Мне тож иногда на свои поделки 
смотерть смешно^Wгрустно

if (((Edit1->Text!="1")&&(Edit1->Text!="-1")&&(Edit1->Text!="2")&&(Edit1->Text!=""
))||((Edit2->Text!="1")&&(Edit2->Text!="-1")&&(Edit2->Text!="2")&&(Edit2->Text!=
""))||((Edit3->Text!="в")&&(Edit3->Text!="з")&&(Edit3->Text!="с")&&(Edit3->Text!
="ю"))){
Label1->Caption="Ошибка!";
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
}

kranky ★★★★★
()
Ответ на: комментарий от lester_dev

> что человек, ничего не писавший на C++ и Java, делает в этом треде?

Пытаюсь учиться на чужих ошибках.

anonymous
()
Ответ на: комментарий от KRoN73

KRoN73, мы вот вас ждали здесь -> http://www.linux.org.ru/view-message.jsp?msgid=2405513, но большинство не дождалось, судя по всему (тред относительно старый). Раз есть возможность, спрошу: чем плохи широкоформатные мониторы для обычной работы (кодинг, терминальные сессии, серфинг, етц)? Кто-то на вас сослался, якобы вы таки можете объяснить :)

anonymous
()
Ответ на: комментарий от kranky

> if (((Edit1->Text!="1")&&(Edit1->Text!="-1")
> &&(Edit1->Text!="2")&&(Edit1->Text!=""
))||((Edit2->Text!="1")&&(Edit2->Text!="-1")
> &&(Edit2->Text!="2")&&(Edit2->Text!=
""))||((Edit3->Text!="в")&&(Edit3->Text!="з")
> &&(Edit3->Text!="с")&&(Edit3->Text!
="ю")))

Кстати, здесь красивая вышла бы демонстрация преимуществ лиспа 
в плане code reuse:

(let ((map-text (lambda (obj)
                  (lambda (string)
                    (not (string=? (Text obj)
                                   string))))))
  (any (append (every (map (map-text Edit1)
                           '("1" "-1" "2")))
               (every (map (map-text Edit2)
                           '("1" "-1" "2")))
               (every (map (map-text Edit3)
                           '("в" "з" "с" "ю"))))))

Что далее сворачивается еще универсальней:

(let* ((map-text (lambda (obj)
                   (lambda (string)
                     (not (string=? (Text obj)
                                    string)))))
       (check-all (lambda (control values)
                    (every (map (map-text control)
                                values)))))
  (any (append (map check-all
                    (list Edit1 Edit2 Edit3)
                    (list '("1" "-1" "2")
                          '("1" "-1" "2")
                          '("в" "з" "с" "ю"))))))

swizard
()
Ответ на: комментарий от ftor

> Смотрится не так уродливо, но кода-то не меньше ;)

А ты добавь еще десять проверок -- первый вариант вырастет в пять раз, второй совсем немного :)

Я ж демонстрировал code reuse. Если б хотел сделать однострочник, взял бы perl или J =)

swizard
()
Ответ на: комментарий от KRoN73

> Как раз повод. Вот так поржёшь, пальцем ткнёшь, и иной прочитавший проникнется и не будет такое писать завтра в своей программе. И мир станет немного чище.

Чтобы был положительный эффект надо как-то коментировать ошибки автора. Иначе новички насмотревшись на подобный код именно так и будут писать свой.

anonymous
()
Ответ на: комментарий от anonymous

> В целом код нечитабельный, а т.к. c++ я не знаю, то не смешно

код читабельный, если не считать первую длинную строчку, которую уже обсудили

тут и правда не смешно. тут непонятно, при читаемости кода.

gunja
()

char *str = new char[strlen("тоже") + 1 + strlen("мне") + 1 +
 strlen("быдло") + strlen("код") + 1];
*str = 0;
strcat(str, "тоже");
strcat(str, " ");
strcat(str, "мне");
strcat(str, "");
strcat(str, "быдло");
strcat(str, "код");

for(char *p = str; *p; p++) printf("%c", *p);

generatorglukoff ★★
()
Ответ на: комментарий от gunja

мда... всё писаное ранее - без особого вдумывания. каюсь. всё пучком, работать будет. первый забить нулём, чтобы катенация заработала. последний ноль появится после последней катенации.

gunja
()
Ответ на: комментарий от kranky

>Мне тож иногда на свои поделки смотерть смешно^Wгрустно

Кстати фигня. Я тут разбирал свои проЭкты, которые писал на 1м курсе, на паскале! :)) 
Правда не в богомерзкой делфи, а в еще более ужасном куликсе. Вот шедэвр:

procedure TfrmMain.Button3Click(Sender: TObject);
var
        str,b:PArray;
        __,_:word;
        __q:AnsiString;
        __s:^AnsiString;
        __slen:word;
begin
str:=nil;
b:=nil;
   if CheckRecords then
        for _:=0 to TreeView1.Items.Count-1 do
            if TreeView1.Items[_] is TQTestNode then
            begin
                        if (str<>nil) or (b<>nil) then
                        begin
                        FreeMem(str);
                        FreeMem(b);
                        end;
                __q:=TQTestNode(TreeView1.Items[_]).QText.Text;
                getMem(b,SizeOf(pointer)*TQTestNode(TreeView1.Items[_]).NumberOfAnswers);
                getMem(str,SizeOf(pointer)*TQTestNode(TreeView1.Items[_]).NumberOfAnswers);
        for __:=0 to TQTestNode(TreeView1.Items[_]).NumberOfAnswers-1 do
                  begin
                  new(__s);
       __s^:=TATestNode(TQTestNode(TreeView1.Items[_]).Answers.Items[__]^).AText.Text;

       __slen:=length(__s^);
       GetMem(str[__],__slen+1);
       GetMem(b[__],sizeof(pointer));
       str[__]:=__s;
 if TATestNode(TQTestNode(TreeView1.Items[_]).Answers.Items[__]^).IsTrue then
                    TBit(b[__]^):=1
                        else
                    TBit(b[__]^):=0;
                  end;
                df.AddRecord(__q,str,TQTestNode(TreeView1.Items[_]).NumberOfAnswers,b);
            end;
end; 

Препод потом неделю пил.

lester_dev ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>ух-ты. а что оно делает?

не помню, это было пять лет назад :)

lester_dev ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

> Просто местных "интэрпрайз-программерз" не писать так учили ещё на Бейсике в научно-популярных журналах 20 лет назад. Вот и рождается это "гы" от появления поколения программеров, незнакомых с самым базисом.

Как-то странно. По-моему типичный "правильный" сишный код, в противовес читабельному "ламерскому" бейсиковскому. Не по языку, а по структуре чтоли, не знаю как ещё сказать.

anonymous
()
Ответ на: комментарий от anonymous

> Как-то странно. По-моему типичный "правильный" сишный код, в противовес читабельному "ламерскому" бейсиковскому. Не по языку, а по структуре чтоли, не знаю как ещё сказать.

А то, что появляется вертикальный скролл, ничего не говорит? Мудры были предки, когда запрещали вылазить за 80 символ, ох мудры..

anonymous
()
Ответ на: комментарий от anonymous

>А то, что появляется вертикальный скролл

В смысле - горизонтальный?

Word wrap рулит ;)

blaster999 ★★
()
Ответ на: комментарий от anonymous

>Раз есть возможность, спрошу: чем плохи широкоформатные мониторы для обычной работы (кодинг, терминальные сессии, серфинг, етц)

М... Всем хороши. Пишу, вот, с 22". С утра кодил, сейчас - сёрфингом маюсь. 17" 4:3 после 22" 16:10 - это просто крошечное окошко :D С другой стороны, более высокий, чем сейчас, монитор для меня будет просто неудобен - в горизонтальной плоскости переносить фокус восприятия проще как-то :) От природы, видимо...

Вот так оно сейчас: http://balancer.ru/img/forums/0801/work.png

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Впечатляет.

А мне просто нравится двухпанельный сетап, как в дефолтном гноме. На широкоформатнике, наверное, смотрелось бы слишком узко. Я себе, кстати, заказал 1600х1200 20", интересно, какие будут ощущения после 17" CRT :)

> в горизонтальной плоскости переносить фокус восприятия проще как-то :) От природы, видимо...

Может просто глаз в кокпите натренирован? :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.