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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 15:46   #1
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию переписать код на паскаль

Здравствуйте, у меня проблема...есть код на Си, помогите переписать на паскаль, помогите пожалуйста

#include <stdio.h>
#include <stdlib.h>
#define MaxLength 20
int main()
{
int k, i, j, NotBegin = 0;
int Tcurr[MaxLength+1], Tprev[MaxLength+1];
printf("Enter number k: ");
scanf("%d", &k);
/*
Начальная инициализация массивов коэфф. многочлена.
Коэфф. в массиве хранятся по возрастанию степени:
элемент с нулевым индексом - свободный член,
элемент с первым индексом - первая степень X и так далее
То есть, индекс массива = степень X.
*/
for(i = 0; i <= MaxLength; i++)
{
Tprev[i] = Tcurr[i] = 0;
}
Tprev[0] = 1; // T[0] = 1.
Tcurr[1] = 1; // Т[1] = X.
for(i = 2; i <= k; i++)
{
int buffer[MaxLength+1]; //Буфферный массив для сохранения предыдущего элемента.
//Сохранение текущего многочлена, так как он станет T[n-1]
for(j = 0; j <= MaxLength; j++)
{
buffer[j] = Tcurr[j];
}
//Умножение на 2*X.
/*
Умножением на Х - повышение степени многочлена на 1.
Так как в массиве коэфф. хранятся по возврастанию,
достаточно сдвинуть элементы "вправо", а нулевому элементу
который является свободным членом присвоить нулевое значение.
Старший элемент теряется.
*/
for(j = MaxLength; j > 0; j--)
{
Tcurr[j] = Tcurr[j-1]*2;
/*Более наглядно было бы написать так:
Tcurr[j-1] *= 2; //Умножение на 2.
Tcurr[j] = Tcurr[j-1]; //Умножение на Х.
*/
}
//Вычитание
Tcurr[0] = 0;
/*
Следующий шаг - вычитание T[n-2] многочлена,
который представлен массивом Tprev.
Это производится поэлементным вычитанием массивов.
*/
for(j = 0; j <= MaxLength; j++)
{
Tcurr[j] -= Tprev[j];
}
/*
Теперь Tcurr вычислен, а Tprev необходимо присвоить значение
Tcurr на начало цикла, которое было сохранено в buffer.
*/
for(j = 0; j <= MaxLength; j++)
{
Tprev[j] = buffer[j];
}
}
//Вывод результата в виде строки.
for(i = MaxLength; i >= 0; i--)
{
if(Tcurr[i])
{
if(Tcurr[i] > 0 && NotBegin)
printf("+");
printf("%d", Tcurr[i]);
if(i)
printf("x^%d", i);
NotBegin = 1;
}
}
return 0;
}
hunter03 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переписать этот код, так чтобы в коде присутствовали пользовательские модули Artur1992 Помощь студентам 1 05.12.2010 20:17
Переписать код bp C++, на Delphi Айдар Общие вопросы Delphi 0 12.06.2010 20:40
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
как переписать код программы с книги, потом сохранить и скомпилировать? Graff_1 Помощь студентам 3 14.05.2008 16:21