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

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

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

 
 Ответить  Открыть новую тему 
> Функция. Действительные числа.
Анна
сообщение 18.12.2005 21:01
Сообщение #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 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 18.12.2005 21:05
Сообщение #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 - 18.12.2005 21:08


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


Бывалая
***

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

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


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


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

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

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


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

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


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


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

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

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


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

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


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анна
сообщение 18.12.2005 21:37
Сообщение #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 
 К началу страницы 
+ Ответить 
klem4
сообщение 18.12.2005 21:41
Сообщение #7


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

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

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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Анна
сообщение 18.12.2005 22:03
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.12.2005 22:05
Сообщение #9


Гость






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


Бывалая
***

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

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


Код

Hisla: -8
-8
-9
-8
-7
Отриц. чисел: 1
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.12.2005 22:18
Сообщение #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;
 К началу страницы 
+ Ответить 
Анна
сообщение 18.12.2005 22:26
Сообщение #12


Бывалая
***

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

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


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

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


Гость






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


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

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

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


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

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


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

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

 



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