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

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

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

 
 Ответить  Открыть новую тему 
> Работа с файлом., Определить среднее арифметическое..
сообщение
Сообщение #1


Новичок
*

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

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


Подскажите как решить задачу.Не могу понять. blink.gif

Дан файл целых чисел.Определить минимальное значение среди чисел.Определить среднее арифметическое чисел, лежащих за минимальным значением и минимальное значение заменить в файле на среднее арифметическое.

Добавлено через 5 мин.
Что смог написал. Дальше не знаю..В фигурных скобках из другой задачи.Пытался сравнивать..

program file_1;
uses
crt;
const
n=20;
var
f1:file of integer;
min,max,nmin,nmax,i,a:integer;

procedure SOZD_FILE;
begin
rewrite(f1);
for i:=1 to n do
begin
a:=random(200);
write(f1,a);
end;
close(f1);
end;

procedure VIVOD_FILE(t:string;c:byte);
begin
writeln;
writeln(t);
reset(f1);
while not eof(f1) do
begin
read(f1,a);
write(a:4);
end;
end;

BEGIN
clrscr;randomize;
assign(f1,'f1prim1.int');
SOZD_FILE;
VIVOD_FILE('Ishodniy file',1);
seek(f1,0);
{ min:=maxint;
max:=-maxint;
while not eof(f1) do
begin
read(f1,a);
if a>max then begin max:=a;
nmax:=filepos(f1)-1;
end;
if a<min then begin min:=a;
nmin:=filepos(f1)-1;
end;
end;
max:=max-min;
min:=2*min;
seek(f1,nmin);
write(f1,max);
seek(f1,nmax);
write(f1,min); }
VIVOD_FILE('File posle izmeneniya',2);
readkey;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


Основной кусок должен быть типа этого:
m:=maxint;  mi:=0; s:=0; n:=0;
while not (eof (f)) do begin
read (f,i);
if i<m then begin
m:=i; mi:=filepos (f); s:=0; n:=0;
end else begin
inc (n); s:=s+i; end;
end; dec (mi);

По окончании:
M-минимальное число,
S-сумма чисел после минимального,
N- их количество,
MI- индекс минимального элемента, туда записать (s div n) (если n>0 конечно..)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


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


Новичок
*

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

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


Что то никак не получается.какие-то ошибки странные выдает.Буду очень признателен,если вы напишите программку целиком.Буду разбираться от А до Я.У меня очень большие трудности со временем...и завтра сдача этой работы.

Сообщение отредактировано: Lyorri -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


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


Профи
****

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

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


Сорри, просмотрел твои ответы..Если еще актуально, то держи:
uses crt;
var f:file of integer;
procedure create;
var i,a:integer;
begin
rewrite (f);
randomize;
for i:=1 to 10 do begin
a:=random (100);
write (f,a);
end;
close (f);
end;
procedure print;
var i:integer;
begin
reset (f); while not (eof(f)) do begin
read(f,i); write(i,' ');
end; writeln; end;

var
i,m,mi,s,n:integer;
begin
clrscr; assign (f,'test.ttt');
create; print; reset (f);
m:=maxint; mi:=0; s:=0; n:=0;
while not (eof (f)) do begin
read (f,i);
if i<m then begin
m:=i; mi:=filepos (f); s:=0; n:=0;
end else begin
inc (n); s:=s+i; end;
end;
write (m,' ', s,'/',n,'=');
if n=0 then s:=0 else s:=s div n;
writeln (s);
seek (f,mi-1); write (f,s); close(f);
print;
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


поздновато конечно немного....но Всеравно СПАСИБО!сейчас проверю...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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