|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.05.2010, 23:30 | #1 |
Регистрация: 23.03.2010
Сообщений: 3
|
Вставка ассемблера в Си
Люди помогите, не шарю вообще в Ассемблере.
Нужно вставить в программу на си ассемблерную вставку (только формулы на ассемблере) В море плавают 2 яхты с высотой мачты h=15 м. (цифра условная). На каком максимальном расстоянии эти яхты могут заметить друг друга при идеальных условиях? Экваториальный радиус = 6378,16 км #include "stdafx.h" #include "iostream" #include <conio.h> #include <stdio.h> #include <windows.h> #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Rus"); float R, h, с, l, ras; R=6378,16; h=15; printf("радиус земли(км) =", R); printf(“высота мачты(м) =”,h); c=h+R; // это убрать и l=sqrt((R+h)*(R+h)-R*R); // вставить ras=l*2.0; // ассемблерный код printf("Яхты заметят друг друга на расстоянии =", ras); getch(); return 0; } помогите плиз!!!!!!! |
20.05.2010, 05:45 | #2 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Влодимир
В нулевом приближении Землю можно считать шаром со средним радиусом 6371,3 км, он есть в любом справочнике, поэтому вопрос о радиусе Земли отпадает. Твою формулу по расчету растояния ras=2.0*sqrt((R+h)*(R+h)-R*R) можно упростить ras=2.0*sqrt((2R+h)*h)=2.0*sqrt((12 742,6+h)*h), принемая во внимание малость мачты относительно радиуса Земли (высота мачты по-любому меньше 1 километра) h*h можно не учитывать получаем ras=2.0*sqrt(12742,6*h)=sqrt(4*1274 2,6*h)=sqrt(50970,4*h) теперь тело ассемблерной вставки Код:
Последний раз редактировалось Mikl___; 20.05.2010 в 07:07. |
20.05.2010, 16:07 | #3 |
Регистрация: 23.03.2010
Сообщений: 3
|
Тоесть так
#include "stdafx.h" #include "iostream" #include <conio.h> #include <stdio.h> #include <windows.h> #include <math.h> int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Rus"); float R, h, ras; R=6378,16; h=0,015; printf("радиус земли(км) =", R); printf(“высота мачты(м) =”,h); _asm { finit fld h fmul R fsqrt fist ras } printf("Яхты заметят друг друга на расстоянии =", ras); getch(); return 0; } |
21.05.2010, 03:44 | #4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Влодимир
Внимательнее читай сообщение. 1) R должно быть 50970.4 (радиус земли 6371,3 умноженный на 8) printf("радиус земли(км) =", R/8); 2) Если ras определено как вещественное число float R, h, ras; тогда нужна команда fst ras иначе ras должно быть определено как целое число float R, h; int ras; тогда fist ras Последний раз редактировалось Mikl___; 21.05.2010 в 10:29. |
21.05.2010, 21:41 | #5 |
Регистрация: 23.03.2010
Сообщений: 3
|
спасибо большое!! разобрался
|
17.02.2011, 18:24 | #6 |
Новичок
Джуниор
Регистрация: 17.02.2011
Сообщений: 1
|
У тебя получилась это программа?
у меня практически такая же, можешь написать конечный код который у тебя получился, пожалуста)) |
18.02.2011, 05:05 | #7 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Stas1919
Думаешь, что через полгода Влодимир появится, чтобы ответить на твой вопрос? Последний раз редактировалось Mikl___; 18.02.2011 в 09:36. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ИСПОЛЬЗОВАНИЕ АССЕМБЛЕРА В ДЕЛФИ! | IIIeneJI | Помощь студентам | 2 | 09.02.2010 17:12 |
Вызвать функцию ассемблера из С++ | Dima88 | Помощь студентам | 3 | 11.12.2009 00:54 |
вставки из ассемблера | макс07 | Общие вопросы C/C++ | 7 | 13.05.2008 19:19 |
Сравнение Си и Ассемблера... | Sota | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 9 | 25.07.2007 16:15 |