Помощь - Поиск - Пользователи - Календарь
Полная версия: Функция. Действительные числа.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Анна
Написать ф-ию, которая для компонентного файла, состоящего из действительных чисел, возвращает кол-во компонентов, меньших нуля.

Получилось что-то вроде:

function calc(s:string):integer;
var b:real;
i:integer;
f:file of real;
begin

assign(f,s);
reset(f);
while not eof(f) do begin
read(f,b);
if b<0 then inc(i);
end;

close(f);
end;


var
s: string;

begin
writeln ('Введите имя файла: '); readln(s);
calc:=i;
end.


Как использовать самц ф-ию в программе??? dry.gif
GoodWind
Яж тебе говорил уже как: mad.gif

writeln('blah-blah: ', calc('file.dat');



bи вообще твоя функция работать не будет, надо так:
function calc(filename : string):integer;
var b:real;
count:integer;
f:file of real;
begin
assing(f,filename);
reset(f);
while not eof(f) do
begin
read(f,b);
if b<0 then inc(count);
end;
calc:=count;
close(f);
end;
Анна
я ж тебе говорила, что calc:=i; выдаёт ошибку ...
klem4
это функция, ей нельзя присвоить значение вне ее тела
GoodWind
Цитата
я ж тебе говорила, что calc:=i; выдаёт ошибку ...

тыж не сказала, что вынесла эту строку из функции в основную программу blum.gif
Анна
В общем вот:

Всегда выводит 0 ...


function calc(s:string):integer;
var b:real;
i:integer;
f:file of real;
begin

assign(f,s);
reset(f);
while not eof(f) do begin
read(f,b);
if b<0 then inc(i);
end;
calc:=i;
close(f);
end;


begin
writeln('Найдено отриц. чисел: ', calc('c:\f!2')); readln;
end.
klem4
попробуй перед циклом присвоить i := 0;
Анна
Не помогло ...


исправила вот так:

        const
N=5;
function calc(s:string):integer;
var b:real;
i:integer;
f:file of real;

begin

assign(f,s);
rewrite(f);
write ('Hisla: ');
for i:=1 to N do
readln(b);
write (f,b);

reset(f);
while not eof(f) do begin
read(f,b);
i:=0;
if b<0 then inc(i);
end;
calc:=i;
close(f);
end;


begin

writeln('Отриц. чисел: ', calc('c:\f!2')); readln;
end.


Считает все числа, и отриц. и полож.
volvo
Цитата
Считает все числа, и отриц. и полож.
Считает-то она считает, только вот... Неправильно считает... Исходные данные свои приведи, на которых программу тестила.
Анна
Код

Hisla: -8
-8
-9
-8
-7
Отриц. чисел: 1
volvo
Опять та же ошибка... Сравни и найди отличия:
function calc(s:string):integer;
var b:real;
i:integer;
f:file of real;

begin
assign(f,s); rewrite(f);
write ('Chisla: ');

for i:=1 to N do begin { <--- Begin }
readln(b);
write (f,b);
end; { <--- End }

reset(f); i := 0;
while not eof(f) do begin
read(f,b);
if b<0 then inc(i);
end;

calc:=i;
close(f);
end;
Анна
Поняла
for i:=1 to N do begin обязательно, а то у меня выполнялось только readln(b);
а запись каждого элемента уже не производилась. Я правильно поняла?

И счётчик не там обнулила ... mega_chok.gif
volvo
Ага... У тебя читалось-то все 5 чисел, но в файл записывалось только одно - последнее введенное, поэтому и результат был = 1 (больше просто в файле не было blum.gif )
GoodWind
блин... я еще вначале темы дал рабочую функцию... dry.gif
Аня, ты научишься когда-нибудь внимательно читать топики ?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.