Форум программистов, компьютерный форум CyberForum.ru

Интересная задача с географическими координатами и идеальным поездом передвигающимся от силы гравитации - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обращение к функциям Диспетчера устройств http://www.cyberforum.ru/cpp/thread710729.html
Доброго времени суток. Ищу статьи или примеры по работе с диспетчером устройств :) Есть ли у кого ни будь таковые ?)) Если конкретней, то нужно найти конкретное устройство в списке, выполнить его удаление, и запустить plug and play для автоматической установки только что удаленного устройства.
C++ Работа со звуком Доброго времени суток. Подскажите, какой библиотекой лучше всего воспользоваться для записи звука, и последующей его обработки (Воспроизведение, построение спектра и т.д. и т.п.) http://www.cyberforum.ru/cpp/thread710524.html
Для заданной области составить программу C++
Для заданной области составить программу
Программа для примера C++
Написать программу для примера http://www.cyberforum.ru/attachment.php?attachmentid=205548&d=1353930741 Добавлено через 2 часа 6 минут #include <iostream.h> int main() {float m,n,z1; cin>>m>>n; if(m+n<0)
C++ Найдите индекс строки с минимальным элементом массива http://www.cyberforum.ru/cpp/thread708965.html
Присвойте элементам массива Q размерностью mxm случайные числа от -30 до 65. Выведите на экран. Найдите индекс строки с минимальным элементом массива.Выведите на экран. Вычислите сумму элементов расположенных в четных строках.Выведите на экран. Замените их положительными элементами главной диагонали. Преобразованную матрицу выведете на экран.
C++ Заменить диагональные элементы матрицы В результате вычислений получена квадратная матрица n*n(3*3). Нужно заменить положительные диагональные элементы числом -5. Подскажите пожалуйста как организовать такую замену? подробнее

Показать сообщение отдельно
Mupok
 Аватар для Mupok
4 / 4 / 0
Регистрация: 24.07.2012
Сообщений: 76
02.12.2012, 19:38  [ТС]     Интересная задача с географическими координатами и идеальным поездом передвигающимся от силы гравитации
То что уже готово:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package tunel_package;
import static java.lang.Math.*;
public class tunel {
   public final static double      // ve vypoctech uzivejte tyto hodnoty !
       G = 6.6742E-11,     // [m^3 sec^-2 kg^-1] gravity constant             
       R = 6.378E6,        // [m]        planet Earth radius 
       M = 5.974E24,       // [kg]       planet Earth mass 
       g = G*M/(R*R),     // [m sec^-2] gravity acceleration on surface  
       V = PI*4/3*R*R*R,  // [m^3]      sphere volume 
       w = M/V;           // [kg m^-3]  density
     
   public final static String[] locus = {  // priklady lokalizace ruznych mist.
       "90°  0' 0     \"N    14°  23' 20.49 \"E ",      //0  North pole
       "90°  0'       \"S    20°            \"E ",      //1  South pole
       "50°  6' 19.45 \"N    14°  23' 20.49 \"E ",      //2  Menza CVUT - vchod
       "50°  6'  8.90 \"N    14°  23' 33.84 \"E ",      //3  FEL Dejvice - vchod                   
       "50°  4' 45.134\"N    14°  25' 50.071\"E ",      //4  Nar. Muzeum, Praha
       "50°  4' 45.134\"S   165°  34' 39.929\"W ",      //5  Nar. Muzeum protinoha                  
       "51° 30' 45.49 \"N     0°  07' 17.15 \"W ",      //6  Brit. Museum, London
       "37° 52' 17.40 \"N   122°  15' 56.77 \"W ",      //7  Univ. Berkeley Calif.
       "36° 51' 00.84 \"S   174°  46' 09.21 \"E ",      //8  Univ. Auckland,  NZ
       "31° 14' 12.44 \"N   121°  30' 09.77 \"E ",      //9  The Opener, ShangHai
       "37° 47' 41.78 \"N   122°  24' 08.85 \"W ",      //10 The Needle, SF/Calif. 
       "22° 24' 08.85 \"W    57°  47' 41.78 \"N ",      //11 Point A
       "47° 47' 41.78 \"N    22°  24' 08.85 \"W ",      //12 Point B
       "55° 45'     0 \"N    37°  37'     0 \"E ",      //13 Point c
       "59° 53'     0 \"N    30°  15'     0 \"E ",      //14 Point d
    };
     
    public static void main(String[] args) {
        boolean[] strana = new boolean[4];
        for (int i = 0; i < strana.length; i++) {
            strana[i]=false;
        }
        byte a = 0;                                      //odkud (pole Locus)
        byte b = 1;                                      //kam   (pole Locus)
        double[] vek_a = vektor(a,strana);
        double[] vek_b = vektor(b,strana);
        System.out.println("tunnel length [m]     = "+tunel_length_depth(vek_a,vek_b)[0]);     // 1. FAZE
        System.out.println("surface distance [m]  = "+srface_distance(a, b, strana));
        System.out.println("maximal depth [m]     = "+tunel_length_depth(vek_a,vek_b)[1]);
        System.out.println("travel time [sec]     = ");     // 2. FAZE
        System.out.println("maximal speed [m/sec] = ");
        System.out.println("average speed [m/sec] = ");
    }
    public static double srface_distance(byte a, byte b, boolean[]strana){
        double surface = 0;
        double d;
        double as = rad(locus[a], strana)[0];
        double ad = rad(locus[a], strana)[1];
        for (int i = 0; i < strana.length; i++) {
            if(strana[i] == true){
                switch(i){
                    case 0:             break;
                    case 1: as *= -1;   break;
                    case 2: ad *= -1;   break;
                    case 3:             break;
                }
            }
        }
        for (int i = 0; i < strana.length; i++) {
            strana[i]=false;
        }
        double bs = rad(locus[b],strana)[0];
        double bd = rad(locus[b],strana)[1];
        for (int i = 0; i < strana.length; i++) {
            if(strana[i] == true){
                switch(i){
                    case 0:             break;
                    case 1: bs *= -1;   break;
                    case 2: bd *= -1;   break;
                    case 3:             break;
                }
            }
        }
        
        d = Math.acos(Math.sin(as)*Math.sin(bs)+Math.cos(as)*Math.cos(bs)*Math.cos(ad-bd));
        surface = d*R;
        return surface;
    }
    public static double[] rad(String point, boolean[] strana){          //cte jednu radku, pak chova informace
        for (int i = 0; i < strana.length; i++) {
            strana[i]=false;
        }
        double[] rad_metoda = new double[2];
        int count = 0;                                  // scitac
        for (int z = 0; z < 2; z++) {
            String pamet = "";
            boolean check = false;                      //true kdyz precte sirku
            for (int i = count; i < point.length(); i++) {
                count++;
                if(point.charAt(i) == (char)176)break;  //jestli °
                if((point.charAt(i) >= 48) && (point.charAt(i) <= 57)) {    //jestli vic nez 0 a mene nez 9
                    pamet += point.charAt(i);
                }
            }
            rad_metoda[z] = Double.valueOf(pamet);      // prevod ze stringu do double
            pamet = "";
            for (int i = count; i < point.length(); i++) {
                count++;
                if(point.charAt(i) == 39){break;}       // jestli '
                if(point.charAt(i) == 34){              // jestli "
                    check = true; break;
                }
                if((point.charAt(count) >= 46) && (point.charAt(count) <= 57)){
                pamet += point.charAt(count);                
                }
            }
            if(!check){
                if(pamet.length() != 0){
                    rad_metoda[z] += (Double.valueOf(pamet)/60);
                }
                pamet = "";
                for (int i = count; i < point.length(); i++) {
                    count++;
                    if(point.charAt(i) == 34){
                        check = true; break;
                    }
                    if((point.charAt(i) >= 46) && (point.charAt(i) <= 57)){
                        pamet += point.charAt(i);
                    }
                }
                if(pamet.length() != 0){
                    rad_metoda[z] += (Double.valueOf(pamet)/3600);
                }
            }
            rad_metoda[z] = (rad_metoda[z]*Math.PI)/180;
            if(check){
                switch(point.charAt(count)){
                    case 'N': strana[0] = true;  break;
                    case 'S': strana[1] = true;  break;
                    case 'W': strana[2] = true;  break;
                    case 'E': strana[3] = true;  break;
                }
            }
        }
        return rad_metoda;
    }
    public static double[] vektor(byte place, boolean[] strana){
        double[] vek = new double[3];
        double[] temp = new double[2];
        for (int i = 0; i < 2; i++) {
            temp[i] = rad(locus[place],strana)[i];
        }
        for (int i = 0; i < 10; i++) {
            switch(i){
                case 0: temp[0] = Math.PI/2 - temp[0];   break;
                case 1: temp[0] = Math.PI/2 + temp[0];   break;
                case 2: temp[1] = Math.PI*2 - temp[1];  break;
                case 3: break;
            }    
        }
        vek[0] = R * Math.sin(temp[0]) * Math.cos(temp[1]);
        vek[1] = R * Math.sin(temp[0]) * Math.sin(temp[1]);
        vek[2] = R * Math.cos(temp[0]);
        return vek;
    }
    public static double[] tunel_length_depth(double[]vek_a,double[]vek_b){
        double[] tunnel = new double[2];
        double[] soucet = new double[3];
        soucet[0] = vek_a[0] - vek_b[0];
        soucet[1] = vek_a[1] - vek_b[1];
        soucet[2] = vek_a[2] - vek_b[2];
        tunnel[0] = Math.sqrt(soucet[0]*soucet[0]+soucet[1]*soucet[1]+soucet[2]*soucet[2]);
        soucet[0] = vek_b[0] + soucet[0]/2;
        soucet[1] = vek_b[1] + soucet[1]/2;
        soucet[2] = vek_b[2] + soucet[2]/2;
        tunnel[1] = R - Math.sqrt(soucet[0]*soucet[0]+soucet[1]*soucet[1]+soucet[2]*soucet[2]);
        return tunnel;
    }
}
 
Текущее время: 23:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru