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

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

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

 
 Ответить  Открыть новую тему 
> Функция. Действительные числа.
сообщение
Сообщение #1


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


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

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

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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

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


Яж тебе говорил уже как: 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;


Сообщение отредактировано: GoodWind -


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


я ж тебе говорила, что calc:=i; выдаёт ошибку ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


это функция, ей нельзя присвоить значение вне ее тела

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

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


Цитата
я ж тебе говорила, что calc:=i; выдаёт ошибку ...

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


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


В общем вот:

Всегда выводит 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


попробуй перед циклом присвоить i := 0;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


Не помогло ...


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

        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.


Считает все числа, и отриц. и полож.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
Считает все числа, и отриц. и полож.
Считает-то она считает, только вот... Неправильно считает... Исходные данные свои приведи, на которых программу тестила.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


Код

Hisla: -8
-8
-9
-8
-7
Отриц. чисел: 1
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Опять та же ошибка... Сравни и найди отличия:
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;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Бывалая
***

Группа: Пользователи
Сообщений: 290
Пол: Женский
Реальное имя: Анютка

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


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

И счётчик не там обнулила ... mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Ага... У тебя читалось-то все 5 чисел, но в файл записывалось только одно - последнее введенное, поэтому и результат был = 1 (больше просто в файле не было blum.gif )
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Автооответчик
*****

Группа: Пользователи
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

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


блин... я еще вначале темы дал рабочую функцию... dry.gif
Аня, ты научишься когда-нибудь внимательно читать топики ?

Сообщение отредактировано: GoodWind -


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 13.09.2025 2:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name