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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Файлы, Создать файл,и переписать компоненты в другой
сообщение
Сообщение #1


Гость






Читал раздел в FAQ и поиск результатов тоже не дал. Помогите с решением задачи!

Дан файл f компонентами которого являются целые числа.Число компонент делится на 4. Никакая из компонент не равна нулю. Файл f содержит равное кол-во отрицательных и положительных компонент.Переписать компоненты этого файла в файл k так, чтобы в файле k числа шли в след. порядке: 2 отрицательных,2 положительных,2 отриц.,2 положит. и т.д.

Подскажите как это реализовать,пожалуйста. Заренее благодарен.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


Можно пойти таким путем: переносим все отрицательные числа в новый файл, между ними вставляя, например, ноль. То есть получаем последовательность типа
-1 -2 0 0 -4 -5 0 0 -9 -11 0 0
за второй проход заменяем все нули положительными числами из старого файла.
алгоритм упрощается до предела, возвратов назад в файле немного: фактически, все делается за 2 прохода в каждом из файлов.


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


Гость






Можно сделать за один проход... Вот тут было нечто очень похожее, только там надо было чередовать положительные/отрицательные числа:
Сурсы -> Типизированные файлы
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


там постоянно приходится возвращаться:
seek(f, pos);
...
seek(f, neg);


это не один проход (если понимать под проходом считывание каждого элемента по одному разу).
а за счет того, что нам надо по два элемента, этот показатель еще ухудшится... если я правильно поняла.

хотя, конечно, новый файл меньше мучаем.


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


Гость






Хочу задать вопрос...вы посчитаете его думаю глупым,но и всё же. А данный файл f мы используем только для чтения и копирования в другой файл компонен?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






В принципе, это то, что требовалось по условию:
Цитата(Условие)
... Переписать компоненты этого файла в файл k ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






А что должно быть в самом файле f?
Вот как у меня получается:
var f:file of integer;
fileName:string;
i,n,next:integer;
p:array [1..100] of integer;
begin
Assign(f,'FileName.tip');
rewrite(f);
writeln('Vvedite kol-vo komponent(n/4)');
readln(n);
writeln('Vvedite komponenti(p<>0)');
for i:=1 to n do
begin
readln(p[i]);
end;
close(f);
readln;
end.

Я правильно понимаю,что данные нужно ввести все с клавиатуры? А то, что кол-во положительных и отрицательных компонент в файле нужно просто записать как комментарий например?Или оно должно уравниваться в самом тексте написания файла? Не совсем даже (как оказалось sad.gif ) понимаю как создать днный файл...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


ты их заносишь в массив, а надо - в файл.
так файл останется пустым.


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


Гость






нужно просто без массива? так?
var f:file of integer;
fileName:string;
i,n,p,next:integer;
begin
Assign(f,'FileName.tip');
rewrite(f);
writeln('Vvedite kol-vo komponent(n/4)');
readln(n);
writeln('Vvedite komponenti(p<>0)');
for i:=1 to n do
begin
readln(p);
write(f,p);
end;
close(f);
readln;
end.


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


Гость






Помогите плиз!!!
в самом файле (данном якобы) данные вводиться должны с клавиатуры?Или они должны быть заданы константой, чтобы можно бфло работать с этим файлом...??
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


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

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

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


можешь написать отдельную программку, ею создавать и заполнять файл.
тогда для этой программы файл действительно будет дан.


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


Гость






Осталось для меня проблемой чередование по 2 отрицательных и положительных компонента.sad.gif Не получается сделать так. Там нужен массив? Если да, то тогда же тип не позволяет создать массив. Просмотрел также и ссылку с похожей задачей...но не смог реализовать именно своё условие...может помогите мне с началом реализовки этого...хочется сделать самому,а никак:(
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


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

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

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


blink.gif зачем массив?
ты пробовал(а) реализовать предложенный мной вариант? показывай попытки...


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


Гость






Я его даже не сохранил...sad.gif так как постоянно показывало,что тип не соответствует... если не нужен массив... сейчас попробую без массива...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






что-то совсем не получается ничего.Еще и ошибка теперь:(А завтра уже нужно сдавать:(
посмотрите плиз...
Assign(f,'f.dan');
rewrite(f);
Assign(g,'g.dan');
rewrite(g);
writeln('Vvedite kol-vo komponent(n/4)');
readln(n);
writeln('Vvedite komponenti(p<>0):');
for i:=1 to n do
begin
readln(p);
write(f,p);
end;
close(f);
reset(f);
for i:=1 to n do
begin
read(f,p);
write(p,' '); close(f);
reset(f);
for i:=1 to n do
begin
read(f,p);
if p<0 then write(g,p); end;
end;
while not eof(f) do
begin
read(f,p);
if p>0 then write(g,p);
end;
close(g);
reset(g);
for i:=1 to n do
begin
read(g,p);
write(p,' ');
end;
close(f);
close(g);
readln;
end.

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


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

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

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


сделай нормально форматирование - увидишь ошибку.
вложенный цикл по той же переменной...


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


Гость






одну ошибку я нашел и исправил...
по-прежнему не могу сделать чередование:( Помогите пожалуйста! Сдавать завтра! Не могу понять и всёsad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Пионер
**

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

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


А идея остортировать файл не пойдет??? При этом сортировка будет иметь следующий вид.
Первые n/2 элементы будут отрицательными числами, а вторые -- положительными.

Тогда вставлять сразу два из первой половины, и два из второй.

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


Гость






Сейчас что-то еще попробую.
Может получится отсортировать или еще как-то...sad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






Ничего у меня не получилось с этой программой (видимо него-то не знаю)... Если сможете, то напишите здесь, может до меня всё-таки дойдет. Спасибо.
 К началу страницы 
+ Ответить 

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

 





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