Помощь - Поиск - Пользователи - Календарь
Полная версия: Перевод с С++ на Pascal
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Domin9es
Дана задача на С++. Нужно перевести ее на Pascal. Пожалуйста помогите.
#include <stdio.h>

int main() {
float a[] = {2.0, 3.2, 1.2, -12.0, 1.5, 6.2};
float d[] = {-1.0, 2.2, 4.1, 10.1, 1/5, 2.1};
float x, y;
printf("Введите значение x:\t");
scanf("%f", &x);
y = d[0] + (x - a[0])*(d[1] + (x - a[1])*(d[2] +
(x - a[2])*(d[3] + (x - a[3])*(d[4] +
(x - a[4])*(d[5] + (x - a[5]))))));
printf("%f\n", y);
return 0;
}
Ozzя
const
a : array [1..6] of real = (2.0, 3.2, 1.2, -12.0, 1.5, 6.2);
d : array [1..6] of real = (-1.0, 2.2, 4.1, 10.1, 1/5, 2.1);
var
x,y : real;
begin
WriteLn('Введите значение x:');
ReadLn(x);
y:=d[1] + (x - a[1])*(d[2] + (x - a[2])*(d[3] +
(x - a[3])*(d[4] + (x - a[4])*(d[5] +
(x - a[5])*(d[6] + (x - a[6]))))));

WriteLn(y);
end.
Domin9es
Программы дают разный ответ. wacko.gif Не подскажете как это исправить.
volvo
Оззя, в С-версии и в Паскаль версии массивы d получились разные, С использует для 4-го элемента целочисленное деление, то есть, описывать массивы в Паскале надо так:

const
a : array [1..6] of real = (2.0, 3.2, 1.2, -12.0, 1.5, 6.2);
d : array [1..6] of real = (-1.0, 2.2, 4.1, 10.1, Trunc(1/5), 2.1);


или (что более вероятно) в С - вот так:
 float a[] = {2.0, 3.2, 1.2, -12.0, 1.5, 6.2};
float d[] = {-1.0, 2.2, 4.1, 10.1, 1.0/5.0, 2.1};

(если это вообще не 1.5, что еще более вероятно)
Ozzя
А какие разные? Дайте ваши значения.

Добавлено через 1 мин.
Цитата
если это вообще не 1.5, что еще более вероятно)

Именно.
/ там же где и точка.
Автор? Опечатка?
Domin9es
Да!!! yes2.gif
volvo, вариант


float a[] = {2.0, 3.2, 1.2, -12.0, 1.5, 6.2};
float d[] = {-1.0, 2.2, 4.1, 10.1, 1.0/5.0, 2.1};



Спасибо вам!

Ozzя, вам тоже спасибо!!! smile.gif smile.gif
andriano
Я бы еще порекомендовал использовать нормальную адресацию, начинающуюся с 0, - тогда индексы в Си и Паскале будут совпадать.
И использовать single вместо real (на что есть две причины: 1. Аналог float именно single. 2. Real вообще лучше не использовать НИКОГДА.).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.