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

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

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

> Файлы!
сообщение
Сообщение #1


Пионер
**

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

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


Здравствуйте! У меня тут такая задачка: "Заполнить файл последовательного доступа f целыми чмслами, полученными с помощью генератора случайных чисел. Из файла f получить файл q, исключив повторные вхождения чисел. Вывести файл q на печать."

Вот мой вариант... но у меня ошибка высвечивается... Помогите пож-та подкорректировать.


Program FAIL5;
const n=30;
var f,q:text;
a:array[1..n] of integer;
i:integer;
begin
randomize;
for i:=1 to n do
a[i]:=random(100);
assign(f,'c:\celie.txt');
rewrite(f);
for i:=1 to n do
writeln(f,a[i]);
close(f);
reset(f);
assign(q,'c:\povtornye.txt');
rewrite(q);
while not (Eof(f)) do begin
readln(f,i);
if a[i]<>a[i+1] then writeln(q,a[i]); (--> ошибка Range check error)
close(f);
close(q);
writeln('poluchili:','c:\celie.txt','c:\povtornye.txt');
readln;
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


просто человек
******

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

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


условно работает...
но ооочень медленно.
с кучей ненужных переводов из строки в число и обратно.
program povtory;
uses crt;
const n=30;
var f,q:text;
s:string[2];
i,j,a,a_tec,err:integer;
fl:boolean;
begin
clrscr;
randomize;
assign(f,'fail.in');
rewrite(f);
for i:=1 to n do
begin
str(random(20),s);
writeln(f,s);
end;
close(f);
assign(q,'fail.out');
rewrite(q);
reset(f);
for i:=1 to n do
begin
fl:=true;
readln(f,s);
val(s,a,err);
while (not(EOF(f))) and fl do
begin
readln(f,s);
val(s,a_tec,err);
if a=a_tec then
fl:=false;
end;
close(f);
reset(f);
for j:=1 to i-1 do
begin
readln(f,s);
if fl then
begin
val(s,a_tec,err);
if a=a_tec then
fl:=false;
end;
end;
readln(f,s);
if fl then
begin
str(a,s);
writeln(q,s);
end;
end;
close(f);
close(q);
end.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(мисс_граффити @ 22.12.2006 15:19)
с кучей ненужных переводов из строки в число и обратно.
А зачем эти переводы, если из текстового файла (тем более такого, в котором информация записана в отдельных строках) можно читать сразу в число?

Вот полный аналог твоей программы:
program povtory;
uses crt;
const
n = 30;

var
f, q: text;
fl: boolean;
i, j, value, curr: integer;

begin
clrscr;
randomize;
assign(f,'fail.in'); rewrite(f);
for i:=1 to n do
writeln(f,random(20));

reset(f);
assign(q,'fail.out'); rewrite(q);

for i := 1 to n do begin
fl := true;
readln(f, value);

while not EOF(f) and fl do begin
readln(f, curr);
if value = curr then fl := false;
end;
reset(f);

for j:=1 to i-1 do begin
readln(f, curr);
if fl and (value = curr) then fl := false;
end;

readln(f, value);
if fl then
writeln(q, value);
end;
close(f);
close(q);
end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


Цитата(volvo @ 22.12.2006 17:42) *


program povtory;


for j:=1 to i-1 do begin
readln(f, curr);
if fl and (value = curr) then fl := false;
end;
может тут надо {begin}?
readln(f, value);
if fl then
writeln(q, value);
end;
close(f);
close(q);
end.



А так все правильно скопировала. Но file.out не выдает значения...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Светлана   Файлы!   22.12.2006 3:39
ammaximus   Вылетаешь за рамки массива. Попробуй так :dry:   22.12.2006 4:30
Светлана   Вылетаешь за рамки массива. Попробуй так Только …   22.12.2006 4:35
volvo   При твоем способе будет то же самое - надо поменят…   22.12.2006 4:33
мисс_граффити   вот так компилируется, но работает неправильно. Pr…   22.12.2006 4:35
Светлана   будем пытаться сравнить a[99] и а[100] (ты знаеш…   22.12.2006 4:46
мисс_граффити   Сорри, это у меня настройки компилятора. Тебе он, …   22.12.2006 4:50
Светлана   Вопросы такие: 1) если у нас был файл 1 2 2 3 4 3…   22.12.2006 11:37
мисс_граффити   условно работает... но ооочень медленно. с кучей н…   22.12.2006 20:19
volvo   с кучей ненужных переводов из строки в число и обр…   22.12.2006 21:42
Светлана   Вот полный аналог твоей программы: Спасибо боль…   23.12.2006 1:35
Светлана   Вот полный аналог твоей программы: program povto…   23.12.2006 2:11
Светлана   program povtory; for j:=1 to i-1 do begin …   23.12.2006 3:03
volvo   value - то значение, которое будет проверяться на …   23.12.2006 1:49
volvo   :no1: Ты пропустила где-то один Begin... Проверяй …   23.12.2006 2:20
Светлана   Хорошо! Сейчас проверю! Спасибо,я поняла с…   23.12.2006 2:32
мисс_граффити   Что-то ты не то и не оттуда скопировала. Возьми пр…   23.12.2006 3:29
volvo   Я присоединил файл в аттаче - ты опять в неправиль…   23.12.2006 3:29
Светлана   Я присоединил файл в аттаче - ты опять в неправил…   23.12.2006 3:33


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

 





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