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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Файлы, MAx эелементы и их сортировка
сообщение
Сообщение #1


Пионер
**

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

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


Дали нам домой 5 задач,4 сделал,а вот одна не получается...по всякому пробовал,но ниче не получилось(
Текст задания:Создать файли из N целых чисел.Найти число повторяющееся максимальное колличество раз.Если таких несколько то все из них.Записать эти числа в другой файл и там отсортировать(без разницы как).

вот мои попытки нахождения maxимальных:

Var
f,:f1file of integer;
a:real;
i,n,k,b,c,j:integer;
begin
assign(f,'abs.dat');assign(f1,'absd.dat');
rewrite(f);
read(n);
for i:=1 to n do
begin
write('a=');
read(a);
write(f,a);
end;
close(f);
end;
reset(f);rewrite(f1);
k:=0;
for i:=0 to fileseze(f)-1 do
begin
seek(f,i);
read(f,c);
for j:=i+1 to filesize(f)-1 do
begin
seek(f,j);
read(f,b);
if b=c then do
inc(k);
end;
write(f1);
end;
close(f1);


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


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

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

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


есть такая идея (код писать не стала, потому что она мне не очень нравится - должен быть способ лучше).

пока не конец первого файла
считали элемент, запомнили его номер, пошли вниз до конца файла считать его количество.

если количество больше запомненного ранее максимума, то
begin
максимум присвоить это количество
очистка второго файла
запись в него найденного числа
end
если количество равно максимуму
дописываем число в файл

переход на след. элемент

сортировка.

например:
у нас есть файл 1 2 3 2 5 6 2
считали 1. дошли до конца файла - встречается один раз. записали во второй файл единичку, максимум:=1
2 встречается 3 раза. очистили файл, записали в него двоечку. максимум:=3
3 - один раз. ничего не делаем
2 - два раза (идем только вниз!). ничего не делаем. вот это место мне и не нравится - лишний подсчет.
5 - один раз
6 - один раз
2 - один раз

Сообщение отредактировано: мисс_граффити -


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


Пионер
**

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

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


да...казалось бы простенькая задача((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


да она в таком варианте по алгоритму и несложная получается.
мне не нравятся лишние затраты по времени...


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


Пионер
**

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

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


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


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

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

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


мы число повторений для каждого числа не будем запоминать! мы будем запоминать только максимальное на данный момент число повторений.
а в файл писать только сами числа (которые потом сортировать). то есть в каждый момент в файле будет находиться либо ни одного числа (самое начало), либо одно число - самое частоповторяющееся, либо несколько чисел - если они повторяются одинаковое число раз.


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


Пионер
**

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

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


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


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

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

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


как-то так
assign(f,'fail.in');
{zapolnenie ishodnogo faila}
rewrite(f);
for i:=1 to n do
begin
max:=random(10);
write(f,max);
write(max:3);
end;
close(f);

assign(f1,'fail.out');
rewrite(f1);
reset(f);
max:=0;
while not(EOF(f)) do
begin
read(f,i);
kolvo:=1;
posicion:=filepos(f);
while not(EOF(f)) do
begin
read(f,tek);
if tek=i then
inc(kolvo);
end;
if kolvo>max then
begin
close(f1);
rewrite(f1);
write(f1,i);
max:=kolvo;
end
else
if kolvo=max then
write(f1,i);
seek(f,posicion);
end;
close(f);
close(f1);

иногда даже работает


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


Пионер
**

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

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


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


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

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

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


выложи полный код, как это у тебя выглядит.


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


Пионер
**

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

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


Никакой сортировки еще не делал,то,что ты написала:

var
f,f1:file of integer;
a:integer;
i,n,max,kolvo,posicion,tek:integer;
begin
assign(f,'fail.in');
rewrite(f);
for i:=1 to n do
begin
max:=random(10);
write(f,max);
writeln(max:3);
write(f,a);
end;
close(f);
assign(f1,'fail.out');
rewrite(f1);
reset(f);
max:=0;
while not(EOF(f)) do
begin
read(f,i);
kolvo:=1;
posicion:=filepos(f);
while not(EOF(f)) do
begin
read(f,tek);
if tek=i then
inc(kolvo);
end;
if kolvo>max then
begin
close(f1);
rewrite(f1);
write(f1,i);
max:=kolvo;
end
else
if kolvo=max then
write(f1,i);
seek(f,posicion);
end;
close(f);
close(f1);
readln;
end.


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


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

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

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


вот лишь бы меня обвинить dry.gif
1) что за а левое появилось?
2) и чему у тебя n равно к моменту запуска цикла
for i:=1 to n do
?
скорее всего 0, цикл и не срабатывает.


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


Пионер
**

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

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


извиняюсь извиняюсь..полностью моя ошибка))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

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

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


вот...я прально говорил,при выводе на печать он показывает сколько раз каждое число повторялось!вот:
0 2
0 1
8 выводит 1
2 2
2 1

а как же терь переписать в другой файл,что именон 0 и 2 повторяется max число раз и в том файле находились только они?нипанятна((извиняюсь за тупость и надоедливость..но оч хочется разобраться

ввожу 00822 выводит 21121
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


что ты с ней сотворил???
исходная последовательность: 9 8 9 7 7 9 7 8 3 5
в файле получаю 9 7

не знаю, что, где и главное - зачем ты выводишь на печать.


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


Пионер
**

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

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


чтобы посмотреть,что получается....а если не выводить,то как узнать,что там находится 7,9 или чтото другое?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


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

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

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


выводить.
но уже из файла...
то есть ПОСЛЕ выполнения всех действий, описанных мной, а не внутри цикла


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


Пионер
**

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

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


что ты воводишь,что у тебя показывает эти числа?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


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

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

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


я ничего не ввожу.
исходная последовательность генерируется рэндомно... какая получилась при том запуске - я написала.


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


Пионер
**

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

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


неет..чтоб показывало числа,которые мы отобрали(повторяющиеся max число раз)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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