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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2021, 18:30   #1
-tatiana__---
Новичок
Джуниор
 
Регистрация: 25.11.2021
Сообщений: 1
По умолчанию перевод программы из C++ в Pascal

#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

double result, MIN_POSITIVE, ARG_MIN_POSITIVE;
double a = 3.45;
double b = 1.62;

bool flag = true;


for (double x = 0.5; x <= 3.5; x += 0.15)
{
result = (1 + pow(a, x)) / ((b - x) * pow(sin(x), 3));
cout << x << '\t' << result << endl;

if (result <= 0.) continue; // якщо значення функції від'ємне, то переходим на наступну ітерацію
else
{
if(flag)
{
MIN_POSITIVE = result; // початкова ініціалізація першим додатнім значенням
ARG_MIN_POSITIVE = x; // початкова ініціалізація індексом першого додатнього значення
flag = false; // скидання логічної змінної, (цей блок виконається 1-раз)
}
else
if (result < MIN_POSITIVE) // якщо значення функції менше за поточне мінімальне
{
MIN_POSITIVE = result;
ARG_MIN_POSITIVE = x;
}
}
}

cout << "Найменше додатне значення: " << MIN_POSITIVE << " досягається при аргументі: " << ARG_MIN_POSITIVE << endl;

system("pause");
return 0;
}
-tatiana__--- вне форума Ответить с цитированием
Старый 25.11.2021, 23:20   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

За то, что исходник не форматирован и не обозначен тегами CODE - ата-та по попе объявить ай-яй-яй. Ну и перевести комменты бы хотя бы на древнегреческий или фарси - эти языки наравне с применённым украинским одинаково популярны на русскоязычном форуме.
Добрый я сегодня (моя жена звалась Татьяна) - начало подскажу.
Код:
const 
   a = 3.45;
   b = 1.62;
var
  x, tmp, result, MIN_POSITIVE, ARG_MIN_POSITIVE: Double;
  flag: Boolean ;
begin
   flag := true;
   x := 0.5 ;
   while (x <= 3.5) do 
    begin
       tmp := Sin(x) ;
       result := (1 + Pow(a, x)) / ((b - x) * tmp * tmp * tmp));
       writeln (x,result) ;
       if (result <= 0.) then Continue; // if the function value is negative, then.....
Ну и далее таким же макаром. Не забыть закрывать все beginы endами - это соответствует Сишным {} . И не забыть в конце цикла модифицировать x := x + 0.15 ;
Совсем забыл - в Паскале же нет Pow.
Код:
    Function Pow(Var chislo, stepen:Real) of Real;
     Var per:real;
     Begin 
      Per:= Abs(chislo);
      If chislo < 0 Then Pow:= (-1)*Exp((stepen)*Ln(per))
       Else Pow:= Exp((stepen)*Ln(per));
     end;
Но эта функция в случае отрицательного chislo и не целой stepen выдаст бред сивой кобылы. В данном примере первый Pow этим не опасен, а второй заменён умножениями.

Последний раз редактировалось digitalis; 26.11.2021 в 12:06.
digitalis вне форума Ответить с цитированием
Старый 29.11.2021, 14:37   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Ну вот, крик выпиющего во пустыне...
"
-Ни фига я ему не сделаю.
-А мне это и не надо.
" © М.М.Жванецкий
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы с Pascal в C++ doti98 Фриланс 4 01.05.2017 23:07
перевод программы из C++ в Pascal Vaas Помощь студентам 1 02.07.2014 17:02
Перевод программы из Pascal в C++ pikemes Помощь студентам 5 29.05.2013 18:10
Перевод программы из Pascal в СИ СветланаTT Помощь студентам 0 15.01.2013 13:04
Перевод программы Pascal на С++ Каtерина Помощь студентам 2 01.02.2012 22:13