Автор Тема: Вопросы по программированию  (Прочитано 149143 раз)

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Вопросы по программированию
« : 03 Ноября 2007, 11:41:18 »
 Я предлагаю задавать все вопросы, касающиеся программирования, задавать здесь ( идея beep_boop'a ).

 Обратите внимание на следующие правила - перед тем, как задать вопрос, загляньте сюда: HOWTO :: Как правильно задавать вопросы.

Цитировать
Объем еще не значит точность
 
Будьте точны и информативны. Для этого недостаточно просто вставить в запрос большой объем кода или данных. Если имеется большой, сложный тестовый случай, приводящий к ошибке в программе, постарайтесь максимально сократить его.
Это полезно, как минимум, по трем причинам. Первая: продемонстрированные усилия по упрощению вопроса повышают вероятность получения ответа. Вторая: упрощение вопроса повышает вероятность получения полезного ответа. Третья: в ходе уточнения сообщения об ошибке вы сами можете найти решение или способ обхода проблемы.

Цитировать
Публичное самоунижение не заменяет выполнение домашних заданий
 
Некоторые, уяснив, что не надо вести себя грубо или надменно, вымогая ответ, выбирают противоположную крайность - самоунижение. "Я знаю, я начинающий, неудачник и полный чайник, но...". Это отвлекает от сути и не имеет смысла. Особенно в сочетании с неопределенностью в описании фактической проблемы.
Не тратьте свое время, и наше, уповая на жалость. Представьте лучше факты и свой вопрос как можно яснее. Так вы заявите о себе гораздо лучше, чем путем самоунижения.

______________________________________________

 Начнем с моего.
 Мне 14 лет и я не сильно шарю вообще в области программирования. Вот решил попробовать написать кое-что в Флеше ( actionscript 2.0 ).

 Я приведу свою собственную функцию с движением объекта из точки А в точку Б. Если читать не лень, то помогите плз.

Цитата: скрипт
function moveit() {
   // переменные
   var dist=Math.sqrt((x_0-x_1)^2-(y_0-y_1)^2);
   var dist1=Math.sqrt((x_0-x_1)^2);
   var delta_d=dist/12;
   
   // угол вектора движения
   var angle=Math.acos(dist1/dist);
   var angle1=(90*(Math.PI/180))-angle;
   
   // проверка угла (первого)
   trace(angle+" радиан\n");
   trace((angle/(Math.PI/180))+" градусов\n");
   
   // инкременты движения ( то есть скорость зависит от расстояния )
   var delta_x=Math.cos(angle)*delta_d;
   var delta_y=Math.cos(angle1)*delta_d;
   
   // проверка инкрементов
   trace("\n∆x="+delta_x)
   trace("\n∆y="+delta_y)
   
   // начало движения
   for(var i=0; i<=12; i++)
   {
      dot._x=dot._x+delta_x;
      dot._y=dot._y+delta_y;
   }
}
Итак, после действия скрипта с начальной точкой (261,189) в некоторую произвольную конечную точку отображается пустота.

Причем output следующий:
Цитата: output
1.29820210766777 радиан

74.3815017243515 градусов


∆x=-5.25

∆y=-18.7799760383234
Настораживают минусовые инкременты скорости.


Помогите, пожалуйста, найти ошибку или подскажите другой действующий скрипт равномерного движения на as 2.0
« Последнее редактирование: 03 Ноября 2007, 19:31:23 от Богдан »

Форум журнала "Домашний ПК"

Вопросы по программированию
« : 03 Ноября 2007, 11:41:18 »

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #1 : 03 Ноября 2007, 15:34:02 »
Формула расстояния неправильная.

d = sqrt((x0 - x1)^2 + (y0 - y1)^2)

dot._x и dot._y не имеют начальных значений?


Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #2 : 03 Ноября 2007, 16:40:45 »
Цитировать
Формула расстояния неправильная.

d = sqrt((x0 - x1)^2 + (y0 - y1)^2)

dot._x и dot._y не имеют начальных значений?
Да, спасибо. Я увидел. У меня плохо с геометрией.

dot._x & dot._y - координаты объекта (261,189)


ЗЫ. После исправления формулы расстояния скрипт все же отказывается работать. Наверное алгоритм вкорне неправильный

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #3 : 03 Ноября 2007, 17:46:13 »
Да, спасибо. Я увидел. У меня плохо с геометрией.
Ну если уж на то пошло...
var dist1=Math.sqrt((x_0-x_1)^2);Если я правильно понял, то должно быть:
var dist1=x_0-x_1;

       /(x_0,y_0)
     /
    /
  /
/(x_1,y_1)
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #4 : 03 Ноября 2007, 19:24:12 »
Вот рисунки.. Блин, черт ногу сломит.





(рис.1) Движение происходит из точки А в точку В. Длина траектории - dist. dist1 - вспомогательная длина стороны треугольника ( если вы заметите где-то ошибку, скажите плз ). Она нужна для определиния угла angle.

(рис.2) А через угол angle и delta_d узнаются итоговые инкременты движения: delta_x & delta_y.

Это должно немного прояснить мой код, так он не совсем верный. Сейчас еще попробую советы beep_boop'a. Tnx всем.
« Последнее редактирование: 03 Ноября 2007, 19:28:28 от Богдан »

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #5 : 03 Ноября 2007, 19:30:41 »
Вот рисунки.. Блин, черт ногу сломит.
Ничего, это еще просто ;)
Движение происходит из точки А вточку В. Длина траектории - dist. dist1 - вспомогательная длина стороны треугольника ( если вы заметите где-то ошибку, скажите плз ).
Длина AC, она же dist1=x_0 - x_1; БЕЗ каких-либо корней.
Она нужна для определиния угла angle.

А через угол angle и delta_d узнаются итоговые инкременты движения: delta_x & delta_y.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #6 : 03 Ноября 2007, 21:01:17 »
Не нужно программировать пока неясна теория!! Перед тем как садиться за компьютер тщательно продумайте условие задачи, если тяжело представить - рисуйте.

Все очень просто. У нас есть прямоугольный треугольник с катетами с1, с2 и гипотенузой hyp.

Теорема Пифагора: c1^2 + c2^2 = hyp^2 => sqrt(с1^2 + c2^2) = hyp.

Теперь представьте c1 и с2 это точки, где c1 = (x0 - x1), а c2 = (y0 - y1). Как найти гипотенузу, которая и будет расстоянием АB?

Идем далее. Простейшие тригонометрические тождества. Угол между гипотенузой и катетом можно найти трёмя способами:

adj - катет, который формирует угол вместе с гипотенузой, opp - катет напротив угла.

cos pheta = adj / hyp
sin pheta = opp / hyp
tan pheta = opp / adj

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

В чем может быть проблема? В dist1. Как вам уже подсказали никаких корней квадратных. Это просто x0 - x1. Вот только если A_x = 5, B_x = 12, то у вас проблемы. Пользуйтесь модулями!

Например, d = |A_x| - |B_x|; d = |d|.
« Последнее редактирование: 03 Ноября 2007, 21:08:38 от snegoviK »

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #7 : 03 Ноября 2007, 21:09:22 »
Не нужно программировать пока неясна теория!!
+1
Все очень просто. У нас есть прямоугольный треугольник с катетами adj, opp и гипотенузой hyp.

Теорема Пифагора: c1^2 + c2^2 = hyp^2 => sqrt(с1^2 + c2^2) = hyp.

Теперь представьте c1 и с2 это точки, где c1 = (x0 - x1), а c2 = (y0 - y1). Как найти гипотенузу, которая и будет расстоянием АB?

Идем далее. Простейшие тригонометрические тождества. Угол между гепотенузой и катетом можно найти трёма способами:

adj - катет, который формирует угол вместе с гипотенузой, opp - катет напротив угла.

cos pheta = adj / hyp
sin pheta = opp / hyp
tan pheta = opp /adj
Может создать новый форум математика? ;)
В чем может быть проблема? В dist1. Как вам уже подсказали никаких корней квадратных. Это просто x0 - x1. Вот только если A_x = 5, B_x = 12, то у вас проблемы. Пользутесь модулями!
Судя по рисунку движение идет справа налево, т.е. x0 - x1>0 Ну а в общем случае это будет нелишним.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #8 : 03 Ноября 2007, 21:20:22 »
Цитата: beep_boop
Может создать новый форум математика?

Ой, это не для меня. Я в математике слабоват. А вот Пифагор и прямоугольные треугольники это как раз мой уровень. ;)

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #9 : 03 Ноября 2007, 21:52:41 »
А вот Пифагор и прямоугольные треугольники это как раз мой уровень. ;)
А как же матлогика, теория алгоритмов, теория вероятности, матстатистика?  ;)
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #10 : 03 Ноября 2007, 23:18:14 »
Блин, убью себя об стенку - ничего не получается!

Изменил:
var dist=Math.sqrt((x_0-x_1)^2+(y_0-y_1)^2);
var dist1=(x_0-x_1)<0?-x_0+x_1:x_0-x_1;
var dist2=(y_0-y_1)<0?-y_0+y_1:y_0-y_1;
&
var delta_x=(dist1/dist)*delta_d;
var delta_y=(dist2/dist)*delta_d;

Output отображает углы и dist как NaN.
« Последнее редактирование: 03 Ноября 2007, 23:21:23 от Богдан »

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #11 : 03 Ноября 2007, 23:49:55 »
Output отображает углы и dist как NaN.
Займемся дебагом ;)
Добавь вывод подкоренного выражения перед вычислением корня, которое дает NaN. Чему оно равно?
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #12 : 04 Ноября 2007, 11:51:45 »
Займемся дебагом ;)
Добавь вывод подкоренного выражения перед вычислением корня, которое дает NaN. Чему оно равно?
Когда х1>x0 или у1>y0, то получается минусовое значение! Но там же степени!

Добавлено:
Блин.. Увидел. Оператор ^ - это не возведение в степень, а bitwise XOR. Степень вызывается методом Math.pow()
« Последнее редактирование: 04 Ноября 2007, 11:55:58 от Богдан »

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #13 : 04 Ноября 2007, 12:27:23 »
Бугага. Бывает. :) Я вот только хотел сказать. :)

Кстати, в С++ можно оверлоадить битвайз операторы?

Цитировать
someType myClass :: operator^( someType )
{
  ...
}
« Последнее редактирование: 04 Ноября 2007, 12:31:59 от snegoviK »

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #14 : 04 Ноября 2007, 16:22:36 »
Бугага. Бывает. :) Я вот только хотел сказать. :)
Поэтому я и порекомендовал вывести подкоренное выражение :-)
Кстати, в С++ можно оверлоадить битвайз операторы?
Да. А вот sizeof нельзя ;-(
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн BlackShark

  • Посетитель
  • **
  • Сообщений: 70
  • Репутация: +3/-0
  • Покорители бездорожья $)
Re: Вопросы по программированию
« Ответ #15 : 05 Ноября 2007, 16:27:24 »




Формула angle неправильная - dist1\dist есть косинусом угла между этими сторонами. Выходит, что ты пытаешься достать угол делением косинуса на косинус :-* Поделюсь личным наблюдением - если умножить косинус на 120 градусов, то получаем угол в градусах. Если нет таблицы Брадиса - достойная замена! Но это только для косинуса! Для угла из синуса умножаем на 60, а для угла из тангенса - на 45.

« Последнее редактирование: 05 Ноября 2007, 16:29:27 от BlackShark »
C2D E8400 @3 GHz BOX| GA-EP43-DS3L F8| Gigabyte 8800 GT 512mb| 4Gb DDR2-800 Kinkston| 160Gb Samsung Sata1| FSB 450W| Vista x64 SP1

Оффлайн Viki

  • Посетитель
  • **
  • Сообщений: 129
  • Репутация: +23/-1
  • Software is like sex: it's better when it's free
Re: Вопросы по программированию
« Ответ #16 : 05 Ноября 2007, 16:33:55 »
Формула angle неправильная - dist1\dist есть косинусом угла между этими сторонами. Выходит, что ты пытаешься достать угол делением косинуса на косинус
cos^-1 - это арккосинус.
ЗЫ: Посмотри его код выше  :)

Оффлайн BlackShark

  • Посетитель
  • **
  • Сообщений: 70
  • Репутация: +3/-0
  • Покорители бездорожья $)
Re: Вопросы по программированию
« Ответ #17 : 05 Ноября 2007, 16:54:29 »
cos^-1 - это арккосинус.
ЗЫ: Посмотри его код выше  :)
Всё, понял ;)
C2D E8400 @3 GHz BOX| GA-EP43-DS3L F8| Gigabyte 8800 GT 512mb| 4Gb DDR2-800 Kinkston| 160Gb Samsung Sata1| FSB 450W| Vista x64 SP1

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #18 : 06 Ноября 2007, 03:31:49 »
А насчет мамематики очень даже неплохо бы было. В программировании все-таки активно используется, особенно игровом.
If you do what you have always done, you'll get what you have always got

Оффлайн BlackShark

  • Посетитель
  • **
  • Сообщений: 70
  • Репутация: +3/-0
  • Покорители бездорожья $)
Re: Вопросы по программированию
« Ответ #19 : 11 Ноября 2007, 11:43:55 »
...если умножить косинус на 120 градусов, то получаем угол в градусах. Если нет таблицы Брадиса - достойная замена! Но это только для косинуса! Для угла из синуса умножаем на 60, а для угла из тангенса - на 45.
Вчера попытался построить парочку формул и спотыкнулся через косинусы. Мой пример доставания угла из косинуса (да и с тангенса с синусом) не помогли - показывается приблизительный результат с "красивым" процентом ошибки. Поэтому не пользуйтесь наведённым выше замечанием - значения углов не совпадают
C2D E8400 @3 GHz BOX| GA-EP43-DS3L F8| Gigabyte 8800 GT 512mb| 4Gb DDR2-800 Kinkston| 160Gb Samsung Sata1| FSB 450W| Vista x64 SP1

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #20 : 11 Ноября 2007, 14:21:22 »
Нужно читать доки, как правило, тригонометрические функции на компьютере имеют четкие пределы. Я так понимаю, это ActionScript 3.0? Это вроде язык, который используется Флешем.

Ну вот, посмотри:

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00005246.html
http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00005251.html#wp193698

Цитировать
Note: The cosine of a 90 degree angle is zero, but because of the inherent inaccuracy of decimal calculations using binary numbers, Flash Player will report a number extremely close to, but not exactly equal to, zero.

Короче говоря, во всех языках эти функции иногда подводят. Поэтому нужно внимательно отслеживать какие значения программа вводит в эти функции и какие именно из них выдают серьезное отклонение.

ЗЫ. Offtop: Вот вроде разрабы Flash, у нас типа Web 2.0 век. Где обещанные Clean URLs? Или для доков лень сделать? :)
« Последнее редактирование: 11 Ноября 2007, 14:42:04 от snegoviK »

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #21 : 11 Ноября 2007, 14:45:32 »
Также можно создать encapsulation, например, создай свою функцию косинуса:

Pseudo-code:
//return a more accurate 0 value
double myCos(double pheta)
{
  double ninetyDeg = Math.PI / 2;
  double factor = pheta / ninetyDeg;
  int check = factor;
  if(check == factor)
  {
    if(factor % 2 != 0) return 0.0;
  }
  return Math.cos(pheta);
}

Эта функция получает угол в радианах. Потом:

1) Пытается поделить угол на 90 градусов.
2) Если коэффициент - целое число, то функция проверяет четное число или нет (Углы, которые дают 0 - 90, 270, 450... Если поделить на 90 получается ряд нечетных чисел 1, 3, 5, 7...).
3) Если число нечетное, то функция возвращает 0, если нет - косинус угла используя Math.cos.

Таким образом, myCos() возвращает более точный 0. Это просто иллюстрация, смысл в том, что с помощью encapsulation можно добавить немного нужной тебе логики к стандартным функциям. Например, можно создать функцию, которая будет считать косинус угла в градусах если тебе так удобнее или проверять как-то угол, чтобы избежать неточностей и т.д. и т.п.

« Последнее редактирование: 12 Ноября 2007, 00:08:00 от snegoviK »

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #22 : 20 Ноября 2007, 15:24:01 »
Для тех, кто знает английский, отличный ресурс по С++ программированию - IRC канал #c++ на irc.freenode.net.

Ребята хоть и немного помешанные на С++, очень дружелюбные и всегда помогут с проблемами. Ни раз выручали и давали путные советы. Очень рекомендую.

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #23 : 30 Ноября 2007, 16:45:34 »
Немного не в тему спрошу: я записался на районную олимпиаду по программингу - посмотреть, насколько я крутой.

Может, кто-нибудь знает, какого рода там задания? Подскажите, чтобы знать к чему готовиться.

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #24 : 30 Ноября 2007, 17:18:27 »
Немного не в тему спрошу: я записался на районную олимпиаду по программингу - посмотреть, насколько я крутой.
Ну, это всегда полезно :)
Если есть амбиции обрати внимание на TopCoder
Может, кто-нибудь знает, какого рода там задания? Подскажите, чтобы знать к чему готовиться.
Задания там с упором в математику ;)
А тексты заданий - легко найдуться гуглом по запросу "олимпиада информатика"
Например http://www.informatics.ru/
Украинские http://www.uoi.kiev.ua/

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

Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #25 : 30 Ноября 2007, 17:54:06 »
Цитата: beep_boop
У меня где-то валялись старые задачки на Киевскую олимпиаду, может на следующей недельке смогу достать в своей бывшей школе более солидный сборник.

Буду признателен :)

Просто не хочу оказаться полным сапогом среди одиннадцатиклассников ( я же в девятом учусь ) - нам программирование только в следующем году будут преподавать.

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #26 : 30 Ноября 2007, 17:59:43 »
Просто не хочу оказаться полным сапогом среди одиннадцатиклассников ( я же в девятом учусь ) - нам программирование только в следующем году будут преподавать.
А какие ЯП ты знаешь?
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #27 : 30 Ноября 2007, 18:44:47 »
Цитата: boop_boop
А какие ЯП ты знаешь?
Знаю синтаксис Си ( типы, стандартные операторы, их употребление ), то есть без углубления в специфические функции всяких разных библиотек ( MFC, например ). Ну, и как следствие, могу понять то безразмерное количество Си-подобных языков ( Ява/Яваскрипт, тот же Экшенскрипт ( см. выше :-) ), РНР в некоторой степени ).

Сейчас зубрю по университетскому учебнику консоль Си++. На олимпиаде, наверное, с консолью придется работать.

Еще немного читал о Паскале - интересно же узнать, что придется штудировать в следующем году.

Оффлайн snegoviK

  • Посетитель
  • **
  • Сообщений: 134
  • Репутация: +10/-0
Re: Вопросы по программированию
« Ответ #28 : 30 Ноября 2007, 21:35:30 »
Боже, какая мешанина. Ничего не зубрите, пожалуйста. Может не стоит торопить время? Самому очень легко подхватить нехорошие привычки. Учиться программировать рекомендуется под надзором хорошего наставника.

Блин, была у меня отличная книга про программированию на русском. Отец подарил. Классика жанра. Жаль название забыл и с собой её у меня нет. :( Так бы обязательно посоветовал раздобыть.

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #29 : 30 Ноября 2007, 23:12:18 »
Блин, была у меня отличная книга про программированию на русском. Отец подарил. Классика жанра. Жаль название забыл и с собой её у меня нет. :( Так бы обязательно посоветовал раздобыть.

Code Complete? :)
If you do what you have always done, you'll get what you have always got

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #30 : 30 Ноября 2007, 23:39:53 »
Знаю синтаксис Си ( типы, стандартные операторы, их употребление ), то есть без углубления в специфические функции всяких разных библиотек ( MFC, например ). 
Ну MFC тебе точно не понадобиться :) А вот STL - да.
Ну, и как следствие, могу понять то безразмерное количество Си-подобных языков ( Ява/Яваскрипт, тот же Экшенскрипт ( см. выше :-) ), РНР в некоторой степени ).
Они тебе на олимпиадах - не понадобятся. Разве что на олимпиадах по веб-дизайну(есть такие)
Сейчас зубрю по университетскому учебнику консоль Си++. На олимпиаде, наверное, с консолью придется работать.
Обычно на олимпиаде предоставляются для разработки старые ИДЕ от Борланда (Borland Pascal 7/Borland C++ 3.1)
Еще немного читал о Паскале - интересно же узнать, что придется штудировать в следующем году.
Относительно выбора ЯП для олимпиады - выбирай тот, который лучше знаешь. С некоторым прицелом в сторону С++, т.к. иногда он поможет пройти тесты на время, если не смог подобрать оптимальный алгоритм.
А поинтересоваться  условиями у организаторов никто не запрещал. :-)
И почитать книги по теории алгоритмов. На приведеных мною сайтах есть список литературы, если интирисует конкретная тема - спрашивай, могу посоветовать, что имею.
Боже, какая мешанина. Ничего не зубрите, пожалуйста. Может не стоит торопить время? Самому очень легко подхватить нехорошие привычки. Учиться программировать рекомендуется под надзором хорошего наставника.
... и лишь только потом идти на олимпиады.
Блин, была у меня отличная книга про программированию на русском. Отец подарил. Классика жанра. Жаль название забыл и с собой её у меня нет. :( Так бы обязательно посоветовал раздобыть.
*ностальгически* Я учился по КиР и Шилду...
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Andrii

  • Участник
  • ***
  • Сообщений: 353
  • Репутация: +23/-6
  • СуперОффтопер
Re: Вопросы по программированию
« Ответ #31 : 04 Декабря 2007, 21:50:57 »
Хтось в Java вміє працювати? В мене є якісь книги і програми, але я одного не знаю ЯК НАЗИВАЄТЬСЯ ПРОГРАМА В ЯКІЙ ПРОГРАМУЄТЬСЯ? (В мене є Java Web Start, Sun ONE Studio 5u1 SE, BorlandJBuilder, InteliJDea, яка з них). Не могли б розказати все по порядку ::)

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #32 : 04 Декабря 2007, 22:25:33 »
ЯК НАЗИВАЄТЬСЯ ПРОГРАМА В ЯКІЙ ПРОГРАМУЄТЬСЯ? (В мене є Java Web Start, Sun ONE Studio 5u1 SE, BorlandJBuilder, InteliJDea, яка з них).
Как все запущенно...
Не могли б розказати все по порядку ::)
Если вкратце - в состав JDK(Java Development Kit) входит компилятор, который формирует код для виртуальной Java-машины. Он принимает исходные тексты программы в виде файлов, компилирует их и формирует код. Ему до лампочки, как и в какой программе ты создал исходные файлы. Поэтому "программы, в которой программируется" как таковой нет. Есть IDE(Например тот же JBuilder). Попробуй несколько из них, и реши какая тебе удобней.
 
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #33 : 05 Декабря 2007, 01:44:25 »
Andrii, попробуй найти Eclipse, хороший IDE для Java.
If you do what you have always done, you'll get what you have always got

Оффлайн Andrii

  • Участник
  • ***
  • Сообщений: 353
  • Репутация: +23/-6
  • СуперОффтопер
Re: Вопросы по программированию
« Ответ #34 : 05 Декабря 2007, 21:27:30 »
Спасибо Nikolai и beep_boop :)

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #35 : 13 Декабря 2007, 22:05:05 »
Есть двумерный массив. В трех ячейках [1][3], [2][3] и [3][3] значения равны {1,0,2}

Блин, ну какого х... хрена
    m[1][3]==m[2][3]==m[3][3]
возвращает истину?!

Пойду спать: голова уже не работает вообще.
« Последнее редактирование: 13 Декабря 2007, 23:02:32 от Богдан »

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #36 : 13 Декабря 2007, 22:41:12 »
Есть двумерный массив. В трех ячейках [1][3], [2][3] и [3][3] значения равны {1,0,2}

Блин, ну какого х... хрена
    m[1][3]==m[2][3]==m[3][3]
возвращает истину?!

Пойду спать: голова уже не работает вообще.
Что-то я недопонял... Если значения равны оно же и должно возвращать истину... ???
If you do what you have always done, you'll get what you have always got

Оффлайн Viki

  • Посетитель
  • **
  • Сообщений: 129
  • Репутация: +23/-1
  • Software is like sex: it's better when it's free
Re: Вопросы по программированию
« Ответ #37 : 13 Декабря 2007, 23:01:07 »
Что-то я недопонял... Если значения равны оно же и должно возвращать истину... ???
Угу, а равны ли сами значения?  :)

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #38 : 13 Декабря 2007, 23:05:55 »
Что-то я недопонял... Если значения равны оно же и должно возвращать истину... ???
Не между собой равны, а равны {1,0,2}

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #39 : 13 Декабря 2007, 23:15:32 »
Не между собой равны, а равны {1,0,2}
Какой ЯП?
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #40 : 13 Декабря 2007, 23:25:14 »

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #41 : 13 Декабря 2007, 23:37:01 »
Си++@Dev-C++
*Тоном профессора*
Рассмотрите такой модельный пример:
#include<stdio.h>
int main(int argc, char *argv)
{
int i,j,k;
i=1;
j=0;
k=2;
printf("i=%i\nj=%i\nk=%i\n",i,j,k);
if(i==j==k) puts("i==j==k");
if(i==k==j) puts("i==k==j");
if(j==i==k) puts("j==i==k");
if(j==k==i) puts("j==k==i");
if(k==j==i) puts("k==j==i");
if(k==i==j) puts("k==i==j");

return 0;
}
Вывод:
bash-3.1$ ./test
i=1
j=0
k=2
i==k==j
k==i==j
Вы поняли в чем у вас ошибка?
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #42 : 14 Декабря 2007, 00:01:28 »
Я лично не понял. При определенных условиях выдает значения за равные...
If you do what you have always done, you'll get what you have always got

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #43 : 14 Декабря 2007, 00:11:31 »
Я лично не понял. При определенных условиях выдает значения за равные...
1) Внимательно присмотритесь на условия(в особенности на порядок аргументов) ;)
2) Вспомните, что отношение эквивалентности имеет степень 2 и запись a=b=c является "жаргонизмом", в котором используется с-во транзитивности.
3) Математическая запись a=b=c не эквивалентна сишной a==b==c

Теперь догадались?
Или еще подсказки?
... или сразу ответ?
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #44 : 14 Декабря 2007, 00:53:45 »
Та бл!)) Так бы сразу и сказал, что надо мозги напрягать типа operator precedence! Я думал там что-то элементарно-детское.

ЗЫ, и вообще, не люблю я это "==" писать...
If you do what you have always done, you'll get what you have always got

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #45 : 14 Декабря 2007, 01:27:18 »
Та бл!)) Так бы сразу и сказал,
А как же интрига?
что надо мозги напрягать типа operator precedence!
Не совсем, но близко ;) Напрягись чуть больше. Тут прикол не с operator precedence, ибо присутствует оных всего 1 тип(==) и обрабатываться они будут LR.
Я думал там что-то элементарно-детское.
Ну так это и есть детское :D
ЗЫ, и вообще, не люблю я это "==" писать...
? :o :-\
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #46 : 14 Декабря 2007, 01:52:08 »
Не совсем, но близко ;) Напрягись чуть больше. Тут прикол не с operator precedence, ибо присутствует оных всего 1 тип(==) и обрабатываться они будут LR.
В том-то и дело, что не хочется. Вот возьмусь завтра курс. программку писать, тогда вникну на волне :)

? :o :-\
Ну я стараюсь изпользовать "=" где возможно. Я знаю, что разница есть, но все-таки.
If you do what you have always done, you'll get what you have always got

Оффлайн βεερ_βooρ

  • Элита
  • *******
  • Сообщений: 20 991
  • Репутация: +191/-19
  • Dixi
Re: Вопросы по программированию
« Ответ #47 : 14 Декабря 2007, 02:15:31 »
Ну я стараюсь изпользовать "=" где возможно. Я знаю, что разница есть, но все-таки.
No comments. Что курите?
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Оффлайн Nikolai

  • Старожил
  • *****
  • Сообщений: 2 315
  • Репутация: +51/-4
Re: Вопросы по программированию
« Ответ #48 : 14 Декабря 2007, 04:04:57 »
No comments. Что курите?
Редкопрактиканскую. Рекомендую.
If you do what you have always done, you'll get what you have always got

Оффлайн Богдан

  • Участник
  • ***
  • Сообщений: 359
  • Репутация: +46/-3
Re: Вопросы по программированию
« Ответ #49 : 14 Декабря 2007, 11:34:58 »
Заменил условие на
    (m[1][3]==m[2][3])&&(m[2][3]==m[3][3])
Но всё же не понял, как порядок влияет на результат условия.

Форум журнала "Домашний ПК"

Re: Вопросы по программированию
« Ответ #49 : 14 Декабря 2007, 11:34:58 »