Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2012, 22:26   #1
Алинка
 
Регистрация: 25.05.2010
Сообщений: 4
По умолчанию минимальное расстояние от точки до функции С++

у меня было задание такое: Определить минимальное расстояние функции f(x)=15logx-x от точки А(Xa,Ya) на интервале x=Xmin:h:Xmax...мой код:
Код:
 
#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
int main () { 
double dXmin,h,dXmax,f,S,min,Xa,Xb;
cout << "Input Xmin=";
cin >> dXmin;
while (dXmin<0) {
        cout <<"Not correct" << endl;
        cout << "Input Xmin=";
        cin >> dXmin;
}
cout << "Input H=";
cin >> h;
cout << "Input Xmax=";
cin >> dXmax;
cout << "Input Xa=";
cin >> Xa;
cout << "Input Xb=";
cin >> Xb;
f=15*log(dXmin)-dXmin;
   min=pow(pow(Xa-dXmin,2) + pow(Xb-f,2),0.5);
for (double i=dXmin+h; i<=dXmax; i+=h)
{
   f=15*log(i)-i;
   S=pow(pow(Xa-i,2) + pow(Xb-f,2),0.5);
 
   
   if (S<min) min=S;
}
cout << "Rezult:" <<min<<endl;
return 0;
}
может быть как-то можно сделать проще вычисления? я имею ввиду части
Код:
 f=15*log(dXmin)-dXmin;
   min=pow(pow(Xa-dXmin,2) + pow(Xb-f,2),0.5);
и вычисления после цикла...
Алинка вне форума Ответить с цитированием
Старый 20.04.2012, 00:43   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Лучше записать формулу так:
Код:
f = sqrt((Xa - i) * (Xa - i) + (Ya - f) * (Ya - f));
Функция pow для квадрата и корня - слишком "тяжелая", можно гораздо проще все посчитать.
В остальном вроде бы все нормально, только замените Xb на Ya для пущей читабельности, а i хорошо бы переименовать, скажем, в x / CurrX / Xi / xx / ваш вариант. Обычно i - это целочисленный счетчик, поэтому невнимательного читателя может немного сбить с толку.
Да, еще. Вместо math.h используйте лучше math или cmath (первый вариант вроде тоже легитимен, второй - 100%); conio.h - библиотека распространенная, но официально в стандарт не входит, к тому же у вас не используется, поэтому можно ее выкинуть (в конце программы, если что, использовать связку cin.ingnore(); cin.get(); ).
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Расстояние от точки до начала координат с использованием массивов. OFFSET Паскаль, Turbo Pascal, PascalABC.NET 5 25.11.2011 23:12
Найти минимальное расстояние до бортика бассейна daniil123 Паскаль, Turbo Pascal, PascalABC.NET 4 20.09.2011 10:18
Определить расстояние от точки до центра координат sektor2011 Помощь студентам 3 23.01.2011 19:50
кратчайшее расстояние от заданной точки до ближайщей стороны треугольника ddeman666 Помощь студентам 1 03.05.2010 14:47
Расстояние точки до поверхности Mikhail Bakurov Общие вопросы Delphi 9 20.01.2009 23:05