Вниз  Разбор интересных задач
- 13.09.2011 / 18:47
kiriman
  Пользователь

kiriman 
Сейчас: Offline
RGT, Тернарный оператор рулет :hack:
- 13.09.2011 / 18:48
RGT
  Пользователь

RGT 
Сейчас: Offline
  1. #include "stdafx.h"
  2. int _tmain(int argc, _TCHAR* argv[])
  3. {   int a = 0;
  4.     int b = 10;
  5.     int x = 13;
  6.     if (a<x && x<b)
  7.     { printf("a<x<b"); }
  8.     else {printf("error");}
  9.     getchar(); }
Даже так =D
__________________
 don't tread on me

Изменено RGT (13.09 / 18:48) (всего 1 раз)
- 17.09.2011 / 15:28
Melodic
  Пользователь

Melodic 
Сейчас: Offline
Есть окружность поделённая на 8 одинаковых секторов и есть вектор с определёнными координтами конца. Начало вектора - центр окружности. Нужно узнать по координатам конца вектора в каком секторе окружности лежит вектор. Использовать можно только целочисленные типы данных.
- 17.09.2011 / 20:00
Salat-Cx65
  Пользователь

Salat-Cx65 
Сейчас: Offline
Зуб даю шо это через http://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма (построение окружности) надо юзать.Когда то пробовал сам реализовая,но результат не понравился.
- 17.09.2011 / 22:16
Freddy
  Пользователь

Freddy 
Сейчас: Offline
Идея в следующем: введём систему координат, совместив её начало с центром окружности, тогда абсцисса и ордината разобьют окружность на четыре равные части, проведём прямые y=x и y=-x, тогда окружность будет разбита на восемь одинаковых частей. Пронумеруем каждый сектор, 1-ый - между положительным направлением оси абсцисс и прямой y=x, далее, двигаясь против часовой стрелки, 2-ой, 3-й и т. д. (как в школе на тригонометрии нумеровали четверти). Затем, по координатам конца вектора вычисляем номер сектора, например, если его координаты (x;y), x>0, y>0 и x-y>0 то вектор лежит в первом секторе, если x>0, y>0, x-y<0, то вектор лежит во втором секторе.

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package javaapplication7;
  6. import static java.lang.Math.*;
  7. /**
  8.  *
  9.  * @author Игорь
  10.  */
  11. public class JavaApplication7 {
  12.  
  13.     private static int getIndex(int x, int y) {
  14.         return abs(x)==abs(y)?0:(x>0)?((y>0)?((x-y>0)?1:2):(x-abs(y)>0?8:7)):(y>0)?(abs(x)-y>0)?4:3:(x-y>0)?6:5;
  15.     }
  16.     /**
  17.      * @param args the command line arguments
  18.      */
  19.     public static void main(String[] args) {
  20.         try {
  21.             int result=getIndex(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
  22.             if(result==0) {
  23.                 System.out.println("Вектор лежит на границе секторов");
  24.             }
  25.             else {
  26.                 System.out.println("Вектор принадлежит сектору  №"+result);
  27.             }
  28.         }
  29.         catch(Exception e) {
  30.             e.printStackTrace();
  31.         }
  32.     }
  33. }


Изменено Freddy (17.09 / 22:20) (всего 1 раз)
- 17.09.2011 / 23:00
Melodic
  Пользователь

Melodic 
Сейчас: Offline
Freddy, большое спасибо:) как раз то ,что нужно. В Дюне мне надо было определять в какую сторону смотреть юниту для выстрела по противнику :) Раньше использовал угол между двумя векторам, но решил отказаться от флоатов и дублов :)
- 17.09.2011 / 23:02
Salat-Cx65
  Пользователь

Salat-Cx65 
Сейчас: Offline
[off]вспомнил что когда то делал нечто похоже для своей Location api (спасибо P@bloid'y что подкинул был материал).
Метод возвращает направление движения из точки 'фром' к точке 'ту'.Собственно по выходным данным угла определял одну из 8 сторон света (4 основных+4 смежных).
     public static float curse (Coordinates from,Coordinates to)
     {
         
         // Convert from degrees to radians.
         double lat1 = Math.toRadians( from.lat );
         double lon1 = Math.toRadians( from.lon );
         double lat2 = Math.toRadians( to.lat);
         double lon2 = Math.toRadians( to.lon );
         double deltaLon = lon2 - lon1;
         double cosLat2 = Math.cos( lat2 );
         double c1 = Math.sin(deltaLon) * cosLat2;
         double c2 = Math.cos(lat1) * Math.sin (lat2) - Math.sin(lat1) * cosLat2 * Math.cos(deltaLon);
         double courseInRadians = MathFunc.atan2( c1, c2 );
         
         double course = Math.toDegrees( courseInRadians );
         course = (360.0 + course) % 360.0; // Normalize to [0,360)
         return (float)course;
     }
[/off]
- 26.09.2011 / 18:44
Naik
  Пользователь

Naik 
Сейчас: Offline
Решить систему уравнений:
I1=I3-I2;
E1=I1*r1+I3*r3;
E2=I2*r2+I3*r3.

ЕСЛИ:
E1=220;
E2=127;
r1=10;
r2=6;
r3=3.
- 29.09.2011 / 20:38
kiriman
  Пользователь

kiriman 
Сейчас: Offline
Не пользуясь компилятором отвечаем на вопросы:
1.
  1. Integer a = 5;
  2. Integer b = 5;
  3. System.out.println(a == b);
  4. int aa = 5;
  5. int bb = 5;
  6. System.out.println(a == b);
Что выведет и почему?
2.
  1. enum Days {MONDAY, TUESDAY, WEDNESDAY, THURSDAY}
  2. class test {
  3. public static void main(String [] args) {
  4. int x = 0;
  5. Days d = Days.TUESDAY;
  6. switch(d) {
  7. case MONDAY: x++;
  8. case TUESDAY: x = x + 10;
  9. case WEDNESDAY: x = x + 100;
  10. case THURSDAY: x = x + 1000;
  11. }
  12. System.out.println("x = " + x);
  13. }
  14. Чему будет равна переменная x после выполнения программы?
  15. }
Ответы присылайте на [email protected]
Ну или в тему :-D
- 29.09.2011 / 20:59
kiriman
  Пользователь

kiriman 
Сейчас: Offline
1.
Integer a = 5;
Integer b = 5;
System.out.println(a == b);
int aa = 5;
int bb = 5;
System.out.println(aa == bb);

Что выведет и почему?
______Поправочка
Наверх  Всего сообщений: 751
Фильтровать сообщения
Поиск по теме
Файлы топика (34)