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

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

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

> Файлы!
Светлана
сообщение 21.12.2006 23:39
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
мисс_граффити
сообщение 22.12.2006 16:19
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.12.2006 17:42
Сообщение #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.

 К началу страницы 
+ Ответить 
Светлана
сообщение 22.12.2006 22:11
Сообщение #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;

readln(f, value);
if fl then
writeln(q, value);
end; --> Здесь ошибка. error 94:"." expected.
close(f);
close(q);
end.



(Я поставила точку... не знаю, правильно ли... но у меня выводятся значения в файле file.in , а в файле file.out никаких значений нет...)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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