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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 17:52   #1
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
Вопрос Проблемы с ручным вводом(Delphi)?!

Как сделать чеб массив можно было ввести вручную в данном коде, нетрогая рекурсивную ф-цию и весь код оч сильно в целом?!
Код:
program Recursion;

{$APPTYPE CONSOLE}

uses
  SysUtils;
   const n=5;
 var
   a:array [1..n] of integer=(1,2,3,4,5);
 function pol(j,x:integer):integer;
  begin
   if j=1 then
    pol:=a[j]
   else
    pol:=a[j]+x*pol(j-1,x);
  end;
 Var
  x,j:integer;
 begin
  Readln(x);
  Readln(j);
  Writeln('P5 = ', pol(j,x));
  Readln;
 end.
<----Весы Там.
Npwas вне форума Ответить с цитированием
Старый 19.02.2012, 18:19   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
program Recursion;

{$APPTYPE CONSOLE}

uses
  SysUtils;
   const n=5;
 var
   a:array [1..n] of integer;
 function pol(j,x:integer):integer;
  begin
   if j=1 then
    pol:=a[j]
   else
    pol:=a[j]+x*pol(j-1,x);
  end;
 Var
  x,j:integer;
 begin
  for j:=1 to n do readln(a[j]);
  Readln(x);
  Readln(j);
  Writeln('P5 = ', pol(j,x));
  Readln;
 end.
А вообще, код отвратительный. Два var'а, глобальные переменные в функции... Я бы делал вот так:
Код:
program Recursion;
{$APPTYPE CONSOLE}
uses
  SysUtils;
const
  n=5;
type
  mass=array [1..n] of integer;
function pol(a:mass;j,x:integer):integer;
  begin
    if j=1 then
    result:=a[j]
    else
    result:=a[j]+x*pol(a,j-1,x);
  end;
Var
  x,j:integer;
  a:mass;
begin
  for j:=1 to n do readln(a[j]);
  Readln(x);
  Readln(j);
  Writeln('P5 = ', pol(a,j,x));
  Readln;
end.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.02.2012, 18:19   #3
nucweapon
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 16
По умолчанию

Код:
procedure vvod;
var i:integer;
      begin
       
            for i:=1 to [конечное число элементов] do
                   Begin
                    write ('a[',i,']=');
                     readln (a[i]);
                   End;
           end;
В основном "Begin..end" выводишь процедуру.

Последний раз редактировалось nucweapon; 19.02.2012 в 19:11. Причина: надо
nucweapon вне форума Ответить с цитированием
Старый 19.02.2012, 18:38   #4
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

всеравно не работает
<----Весы Там.
Npwas вне форума Ответить с цитированием
Старый 19.02.2012, 19:07   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Мои варианты рабочие. А у nucweapon тоже непонятно что написано. Во-первых массив двумерный, во-вторых зачем-то считываются n и m, при этом массив не динамический.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.02.2012, 19:12   #6
nucweapon
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 16
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
Мои варианты рабочие. А у nucweapon тоже непонятно что написано. Во-первых массив двумерный, во-вторых зачем-то считываются n и m, при этом массив не динамический.
Мой вариант тоже рабочий.
nucweapon вне форума Ответить с цитированием
Старый 19.02.2012, 19:27   #7
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
Мои варианты рабочие. А у nucweapon тоже непонятно что написано. Во-первых массив двумерный, во-вторых зачем-то считываются n и m, при этом массив не динамический.
Сорри твой вариант прост сперва не заметил!!!
<----Весы Там.
Npwas вне форума Ответить с цитированием
Старый 19.02.2012, 19:43   #8
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от nucweapon Посмотреть сообщение
Мой вариант тоже рабочий.
После того, как я на ошибки указал, а ты их исправил? Ну да рабочий.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 19.02.2012, 20:01   #9
nucweapon
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 16
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
После того, как я на ошибки указал, а ты их исправил? Ну да рабочий.

Ошибок нет в обоих вариантах.
nucweapon вне форума Ответить с цитированием
Старый 19.02.2012, 20:39   #10
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Сообщение от nucweapon Посмотреть сообщение
Ошибок нет в обоих вариантах.
В данной задаче твой начальный вариант не мог работать. В другой задаче, где нужно заполнить двумерные массивы работал бы, но только в том случае, если бы введеные n и m не превышали значения массива.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание потока с ручным запуском Crystallon Общие вопросы Delphi 3 22.06.2011 13:04
С++ задача на массив натуральных дробей. Проблемы с вводом. Лоботряс Помощь студентам 2 13.01.2011 01:32
Строки;( Проблемы с вводом. Aerial Общие вопросы C/C++ 0 20.04.2010 21:00
Привет..Кто может помогите с делфи,ручным режимом игры INCIC Помощь студентам 0 06.06.2009 22:34
Проблема с вводом лямбд, индексов и тд в Delphi bles Помощь студентам 6 22.05.2008 11:39