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

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

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

 
 Ответить  Открыть новую тему 
> Задача, Задача на файлы в паскале
сообщение
Сообщение #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 -


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

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


Гуру
*****

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

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


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

ты все время пишешь в одно и тоже место. Seek(f2,...) поставь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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

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


Новичок
*

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

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


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


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

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


Гуру
*****

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

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


По условию длина файла должна быть кратна N. При несовпадении имеем неопределенность - опиши, как программа должна реагировать на такое несовпадение, в условии этого нет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

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

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


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


Новичок
*

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

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


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


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

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


Гуру
*****

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

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


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

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

 





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