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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2008, 21:25   #1
nadea11
Новичок
Джуниор
 
Регистрация: 23.04.2008
Сообщений: 2
По умолчанию Задача на текстовый фаил

помогите пожалуйста решить задачу в паскале
Дан текстовый файл натуральных чисел,за которыми следует целое отрицательное число. используя рекурсивную подпрограмму,вычислите сумму натуральных чисел файла
заранее спасибо=))
nadea11 вне форума Ответить с цитированием
Старый 23.04.2008, 22:40   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вы хотя-бы начните. Сформируйте текстовый файл с данными, сделайте процедуру чтения, суммирования. Покажите, что не получается.


[off]
Вот интересно, чему может научить такое задание ? Как правильно применять рекурсию или где не применять.
[/off]
alexBlack вне форума Ответить с цитированием
Старый 23.04.2008, 22:44   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ну что-то такое
Код:
function Add: integer;
var i: integer;
begin
read(i);
if (i >= 0) then
  Add := Add + i
else
  Add := 0;
end;

begin
reset(input, 'in.txt');
writeln(Add);
end.
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 24.04.2008, 14:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вот интересно, чему может научить такое задание ?
А ты думаеш что преподаватели сами понимают зачем это надо?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2008, 20:33   #5
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Я вообще-то и так полный код написал, можешь ещё до кучи добавить в начало
Код:
program ProgName;
uses crt;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 29.04.2008, 12:37   #6
nadea11
Новичок
Джуниор
 
Регистрация: 23.04.2008
Сообщений: 2
По умолчанию

Program P100;
uses crt;
var i:integer;
f:text;
c,h:longint;
function sum:longint;
begin
while not eof do
begin
readln(f,c);
if c>=0 then sum:=sum+c else
if c<0 then sum:=0;
end;
end;
begin
assign(f,'file.txt');
reset(f);
h:=sum;
close(f);
writeln('summa=',h);
end.
Написала сама(но не уверена)
Прошу специалистов прокомментировать и подсказать,если что-то не так :search

а вы не подскажете,как рекурсивную программу составить,а то мой пример рекурсией не является

Последний раз редактировалось Stilet; 06.05.2008 в 17:05.
nadea11 вне форума Ответить с цитированием
Старый 06.05.2008, 17:06   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты поиском поработай - примеров на рекурсию тут куча.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2008, 17:47   #8
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от nadea11 Посмотреть сообщение
Написала сама(но не уверена)
Прошу специалистов прокомментировать и подсказать,если что-то не так :search
а вы не подскажете,как рекурсивную программу составить,а то мой пример рекурсией не является
Я понял, что нужно получить сумму чисел файла ДО первого отрицательного. Ваш пример вычисляет ЗА последним отрицательным.

Код:
var f:text;

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);
   readln;

   assign(f, 'file.txt');
   reset(f);
   h := sum_R;
   close(f);
   writeln('summa=',h);
   readln;
end.
alexBlack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на текстовый тип данных. Fedos Помощь студентам 15 30.01.2008 17:03
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55
Tar фаил Аббат Свободное общение 1 24.04.2007 17:08