Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
1

Рекурсивная и итеративная подпрограммы

24.11.2014, 23:17. Просмотров 2012. Ответов 7
Метки нет (Все метки)


Кликните здесь для просмотра всего текста
Разработать алгоритм и составить программу для решения задачи двумя способами: используя рекурсивную и итеративную подпрограммы.


Дана последовательность неотрицательных целых чисел. Вывести сначала все чётные, а затем все нечётные числа. Последовательность заканчивается нулём.
Спасибо за помощь.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2014, 23:17
Ответы с готовыми решениями:

Итеративная запись списка символов в бинарное дерево поиска
Дано: файл input.txt, содержащий строку, состоящую из случайных символов (кроме кириллицы). Нужно...

Составление прогами по использованию подпрограммы процедур и подпрограммы функций
Записать программу решения задачи. Процедуру вычислений повторяющихся записать в виде подпрограммы....

Рекурсивная и итеративная функция, приближающаяся к arccos x
F(x) = Pi/2-(x+(x^3/2*3)+(1*3*x^5/2*4*5)+(1*3*5*x^7/2*4*6*7)+K) Функция приближается к arccos x и...

Итеративная и рекуррентная схемы
Подсчитать сумму бесконечного ряда с использованием итеративной и рекуррентной схем. Нужно, чтобы...

7
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
27.11.2014, 08:27  [ТС] 2


Добавлено через 14 часов 32 минуты
Ребят, мне серьёзно нужна помощь!!!
0
2508 / 1129 / 582
Регистрация: 07.06.2014
Сообщений: 3,281
27.11.2014, 08:36 3
ВаняПр, ну и что не получается то?!
Ладно, поверю, рекурсионный алгоритм может не получаться, рекурсия такая хитрая штука, что для понимания рекурсии нужно сначала понять рекурсию (известная шутка), но с итерационным алгоритмом в чём проблема то?!
Прими, что последовательность чисел у тебя задана в виде массива.
Итерационный алгоритм - это банально ЦИКЛ
например,
Pascal
1
for I:=1 to N do if A[I]<0 then Write(A[i],' ');
этот код выведет все отрицательные числа из массива.
Подпрограмма - это в паскале описывается как Procedure.

Цитата Сообщение от ВаняПр Посмотреть сообщение
мне серьёзно нужна помощь!!!
Помочь можно только тому, кто что-то делает...
1
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
29.11.2014, 06:04  [ТС] 4
Ребят, я тут программу черканул, проверьте пожалуйста))
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
program laba_7;
const
n=100;
type
  mas = array[1..n] of byte;
 
var
  x: mas;
  i: byte;
 
procedure vvod;
begin
i := 0;
  writeln('Введите последовательность целых неотрицательных чисел'#10#13 'конец последовательности 0');
    repeat 
    i := i + 1;
    read(x[i])
  until x[i] = 0;
  readln;
end;  
procedure perebor(var x: mas; i: byte);
begin
if i=1 then writeln('Пустая последовательность.')
else
  if x[i] = 0 then write('   ')
  else 
  begin
    if x[i] mod 2 = 0 then writeln(' ' , x[i]);
    perebor(x, i + 1);
    if x[i] mod 2 <> 0 then writeln( ' ' , x[i]);
  end
end;
 
begin
  vvod; 
  perebor(x, 1);
end.
0
2508 / 1129 / 582
Регистрация: 07.06.2014
Сообщений: 3,281
29.11.2014, 08:18 5
Лучший ответ Сообщение было отмечено ВаняПр как решение

Решение

нет. неверно.

Вас не смутило, что при любых данных ваша программ говорит 'Пустая последовательность.' ?!
Или Вы даже не проверяли программу?

ну и ещё есть пара "косячков" (нет проверки, что введут не больше, чем размер массива n, зря пишется нулевой элементв в массив - лучше запоминать количество введённых элементов)

Добавлено через 10 минут
посмотрите на такой вариант решения:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
program laba_7;
const
  MaxN=100;
type
  mas = array[1..MaxN] of byte;
 
 
procedure vvod(var pX : mas; var pN : byte);
var m : integer;
begin
  pN := 0;
  writeln('Введите последовательность '+
          'целых неотрицательных чисел'#10#13'конец последовательности 0');
  read(m);
  while (m<>0) and (pN<MaxN) do 
  begin
     inc(pN);
     pX[pN] := m;
     read(m);
  end;
  readln;
end;  
 
 
procedure perebor(var x: mas; i, n : byte);
begin
  if i>n then Exit
  else
  begin
    if x[i] mod 2 = 0 then writeln(' ' , x[i]);
    perebor(x, i + 1, n);
    if x[i] mod 2 <> 0 then writeln( ' ' , x[i]);
  end
end;
 
var
  x: mas;
  n: byte;
 
 
begin
  vvod(x,n);
  if n=0 
    then writeln('Пустая последовательность.')  
    else  perebor(x, 1, n);
  Readln
end.
1
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
29.11.2014, 13:59  [ТС] 6
Sergio Leone,
Цитата Сообщение от Sergio Leone Посмотреть сообщение
Или Вы даже не проверяли программу?
Программу я проверял, она работала правильно..... Хм, что-то пошло не так((( Спасибо что подредактировали, верней даже исправили)

Добавлено через 14 минут
Цитата Сообщение от Sergio Leone Посмотреть сообщение
if i>n then
я не стал её вписывать так как в условии сказано
Цитата Сообщение от ВаняПр Посмотреть сообщение
Дана последовательность неотрицательных целых чисел. ... Последовательность заканчивается нулём
там не указана длина последовательности, просто сказано что последовательность заканчивается нулём... Я просто, к сожалению, не знаю как написать массив, который будет не ограничен......
0
2508 / 1129 / 582
Регистрация: 07.06.2014
Сообщений: 3,281
30.11.2014, 09:39 7
ВаняПр, простите, я в вашем сообщении вопросов не увидел. Будем считать, что Вы с задачей разобрались?
Или ещё какие-то моменты остались непонятыми или незавершёнными?
1
0 / 0 / 0
Регистрация: 19.10.2014
Сообщений: 41
30.11.2014, 13:13  [ТС] 8
Sergio Leone, Нет, вопросов не возникло. Спасибо Вам за помощь!!!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2014, 13:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Итеративная функция сравнения деревьев
Задание такое: Рекурсивно и итеративно описать логическую функцию, проверяющую на равенство...

Рекурсивная функция у меня другая но только не рекурсивная
Добрый день все ! Писал я про задачку но так и не кто откликнулся напомню о чем речь &quot; Добрый...

Как можно изменить значение фактического параметра подпрограммы в теле самой подпрограммы?
1. Как можно изменить значение фактического параметра подпрограммы в теле самой подпрограммы?...

Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает созданный модуль и использует его подпрограммы
Создать личный модуль, содержащий указанные подпрограммы. Написать программу, которая подключает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.