IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на текстовый фаил(паскаль)
nadea
сообщение 28.04.2008 10:51
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


ПОжалуйста,напишите полный текст проги:
Дан текстовый фаил натуральных чисел,за которыми следует целое отрицательное число.
Используя рекурсивную подпрограмму,вычислиье сумму натуральных чисел файла
Заранее спасибо=)) rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nadea
сообщение 6.05.2008 15:49
Сообщение #2





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


ак как рекурсию составить,не подскажете rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
nadea
сообщение 10.05.2008 16:42
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


function sum : longint;
var c:integer;
sm:longint;
begin
c := 0; sm := 0;
while (not eof(F)) and (c >= 0) do begin
readln(f, c);
if c >= 0 then sm := sm + c;
end;
sum := sm;
end;

// Это с рекурсией
function sum_R : longint;
var c:integer;
sm:longint;
begin
sm := 0;
if not eof(F) then begin
readln(f, c);
if c >= 0 then sm := c + sum_R;
end;
sum_R := sm;
end;

var h:longint;
begin
assign(f, 'file.txt');
reset(f);
h := sum;
close(f);
writeln('summa=',h);
end;

// Это с рекурсией
assign(f, 'file.txt');
reset(f);
h := sum_R;
close(f);
writeln('summa=',h);
end.
БЕЗ РЕКУРСИИ программа пашет,а с рекурсией-НЕТ.Подскажите,где может быть ошибка[u]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.05.2008 17:00
Сообщение #4


Гость






Цитата
БЕЗ РЕКУРСИИ программа пашет,а с рекурсией-НЕТ
Что значит "нет"? Только что проверил, правильный ответ выдается, что еще нужно?

Хотя я бы переписал рекурсию вот так:
function sum_R : longint;
var
c: integer;
begin
if not eof(F) then readln(f, c);

if c < 0 then sum_R := 0
else sum_R := c + sum_R;

end;
(при условии, что файл не пустой)

Сообщение отредактировано: volvo - 10.05.2008 17:01
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 7:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"