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

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

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

 
 Ответить  Открыть новую тему 
> Задача, Задача на файлы в паскале
ATAMAH
сообщение 25.12.2007 14:24
Сообщение #1


Новичок
*

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

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


Надо Каждые N компонент файла F1 переписать в обратном порядке. Число N запрашивается с клавиатуры.

type tFile=file of integer;
procedure vvod (var f:tFile);
var i:integer;
Begin
rewrite(f);
while random(20)<>0 do
begin
i:=100-random(50);
write(f,i);
end;
close(f);
end;
procedure vivod(var f:tFile);
var i:integer;
begin
reset(f);
while not eof(f) do
begin
read(f,i);
write(i:4);
end;
close(f);
end;

var f1,f2:tFile;
i,k,n,p:integer;
begin
randomize;
assign(f1,'1.dat');
assign(f2,'2.dat');
vvod(f1);
vivod(f1);
writeln;
writeln('enter komponetu');
readln(n);
reset(f1);
rewrite(f2);
repeat
while p<>filesize(f1) do
begin
for i:=n+p downto 1+p do
begin
seek(f1,i-1);
read(f1,k);
write(f2,k);
end;
p:=p+n;
end;
close(f1); close(f2);
erase(f1);
rename(f2,'1.dat');
vivod(f1);
readln;
end.


Но не работает подскажите как можно исправить!! Чтоб заработало!! Плиз

Сообщение отредактировано: ATAMAH - 25.12.2007 14:35


--------------------
"Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо"

Бил Гейтс
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 25.12.2007 14:32
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


У меня есть подозрение, что здесь -
write(f2,p);

ты все время пишешь в одно и тоже место. Seek(f2,...) поставь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ATAMAH
сообщение 25.12.2007 14:34
Сообщение #3


Новичок
*

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

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


Я переписал теперь она работает при кратных n а как менять остальные!

То есть ппредположим дан файл 1 2 3 4 5 6 7 8 при n=3 должны получить 3 2 1 6 5 4 8 7!! А как поменять 8 и 7?

Сообщение отредактировано: ATAMAH - 25.12.2007 15:32


--------------------
"Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо"

Бил Гейтс
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ATAMAH
сообщение 25.12.2007 15:45
Сообщение #4


Новичок
*

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

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


Народ подскажите плиз завтра зачет!!!!!!!!


--------------------
"Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо"

Бил Гейтс
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 25.12.2007 16:59
Сообщение #5


Гуру
*****

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

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


По условию длина файла должна быть кратна N. При несовпадении имеем неопределенность - опиши, как программа должна реагировать на такое несовпадение, в условии этого нет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ATAMAH
сообщение 25.12.2007 17:27
Сообщение #6


Новичок
*

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

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


пРОГРАММА ДОЛЖНА МЕНЯТЬ Каждые н компаненты!! Файл не обязательно кратен н. Обясню на примере
Еслидан файл 1 2 3 4 5 6 7 8 и мы вводим н=3 то должны получить файл 3 2 1 6 5 4 и 8 7 если водим н=4 то получаем 4 3 2 1 8 7 6 5! При н =3 меняет местами все до 6 а потом выдает ошибку!! Ошибка чтеня с диска! Вот сдесь и загвостка


--------------------
"Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо"

Бил Гейтс
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 25.12.2007 17:38
Сообщение #7


Гуру
*****

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

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


"На примере" не надо. Надо четко сформулировать условие. Без этого решить задачу невозможно.
Из условия "ДОЛЖНА МЕНЯТЬ Каждые н компаненты" следует, что файл ОБЯЗАТЕЛЬНО должен быть кратен N. Иначе "Каждые н компанент" никак не получится.
Т.е. за тобой - корректное условие: что надо сделать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ATAMAH
сообщение 25.12.2007 17:42
Сообщение #8


Новичок
*

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

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


Вот седня так преподавтель и объяснил на этом же примере!! Менять местами н компаненты оставшие компоненты которые будут меньше этого числа то же надо переписать в обратном порядке. Так?


--------------------
"Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо"

Бил Гейтс
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 26.12.2007 9:20
Сообщение #9


Гуру
*****

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

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


Тогда следует подсчитать количество этих оставшихся и переставлять их местами, исходя именно из этого количества, а не из N.
Т.е. в твоем случае меняем по 3 шт. пока это возможно, а затем обнаруживаем, что осталось только 2 и меняем их так, как если бы N было равно 2.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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