29.05.2014, 15:45 | #1 (permalink) |
Member
Регистрация: 14.12.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Непонятная ошибка
ПЕРВАЯ ПРОГРАММА uses crt; const nmax=10; type mas=array[1..nmax] of real; fail=file of mas; function Summa(k:mas;x:integer):real; var i:integer; s:real; begin s:=0; for i:=1 to x do s:=s+k[i]; Summa:=s; end; var f:fail; a:mas; m,n,i,j:byte; mn:real; begin clrscr; assign(f,'filef'); rewrite(f); repeat write('Количество компонент в файле до ',nmax,' m='); readln(m); until m in [1..nmax]; repeat write('Размер компонент до ',nmax,' n='); readln(n); until n in [1..nmax]; for i:=1 to m do begin writeln('Введите элементы компоненты ',i); for j:=1 to n do begin write('el[',j,']='); readln(a[j]); end; write(f,a); end; writeln('Содержание исходного файла F:'); {открываем} reset(f); read(f,a);{читаем первую компоненту-массив} mn:=Summa(a,n);{пока эта сумма минимальная} for i:=1 to n do write(a[i]:5:2); write(' Сумма=',mn:0:2); writeln; while not eof(f) do begin read(f,a);{читаем остальные} for i:=1 to n do write(a[i]:5:2); write(' Сумма=',Summa(a,n):0:2); if Summa(a,n)<mn then mn:=Summa(a,n);{ищем самую маленькую сумму} writeln; end; writeln; writeln('Минимальная сумма=',mn:0:2); readkey; i:=0; while i<filesize(f) do end. ВТОРАЯ ПРОГРАММА uses crt; const nmax=10; type mas=array[1..nmax] of real; fail=file of mas; function Summa(k:mas;x:integer):real; var i:integer; s:real; begin s:=0; for i:=1 to x do s:=s+k[i]; Summa:=s; end; var f:fail; a,b:mas; m,n,i,j:byte; mn,sm:real; begin clrscr; assign(f,'filef'); rewrite(f); writeln('Содержание исходного файла F:'); {открываем} reset(f); read(f,a);{читаем первую компоненту-массив} mn:=Summa(a,n);{пока эта сумма минимальная} for i:=1 to n do write(a[i]:5:2); write(' Сумма=',mn:0:2); writeln; while not eof(f) do begin read(f,a);{читаем остальные} for i:=1 to n do write(a[i]:5:2); write(' Сумма=',Summa(a,n):0:2); if Summa(a,n)<mn then mn:=Summa(a,n);{ищем самую маленькую сумму} writeln; end; writeln; writeln('Минимальная сумма=',mn:0:2); readkey; {задержка до нажатия клавиши для просмотра} {начнем удалять} i:=0; while i<filesize(f) do begin seek(f,i); read(f,a); if Summa(a,n)=mn then {если сумма=мин.} begin if i=filesize(f)-1 then{если последняя компонента} begin seek(f,filesize(f)-1); truncate(f);{обрезаем файл} end else {если нет} begin for j:=i to filesize(f)-2 do{сдвигаем конец файла на 1 вверх} begin seek(f,j+1); read(f,b); seek(f,j); write(f,b); end; seek(f,filesize(f)-1); truncate(f);{последнюю (пустую) обрезаем} end; end else i:=i+1; end; if filesize(f)=0 then write('Все компоненты удалены') else begin writeln('Удаление компонент с минимальной суммой:'); seek(f,0); while not eof(f) do begin read(f,a); for i:=1 to n do write(a[i]:5:2); write(' Сумма=',Summa(a,n):0:2); writeln; end; end; close(f); readln end. |
29.05.2014, 15:45 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Эти ссылки могут раскрыть глаза на решение проблемы Непонятная ошибка Непонятная ошибка Оперы Непонятная ошибка Непонятная иконка |
29.05.2014, 15:59 | #2 (permalink) |
Member
Регистрация: 14.12.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
А если быть точнее то необходимо мне разделить вот эту прогу на две!чтобы первая создавала массив вещ.чисел вводимых с клавиатуры,а другая прога исключала из фала,суммы элементов которых являются наименьшей.
uses crt; const nmax=10; type mas=array[1..nmax] of real; fail=file of mas; function Summa(k:mas;x:integer):real; var i:integer; s:real; begin s:=0; for i:=1 to x do s:=s+k[i]; Summa:=s; end; var f:fail; a,b:mas; m,n,i,j:byte; mn,sm:real; begin clrscr; assign(f,'filef'); rewrite(f); repeat write('Количество компонент в файле до ',nmax,' m='); readln(m); until m in [1..nmax]; repeat write('Размер компонент до ',nmax,' n='); readln(n); until n in [1..nmax]; for i:=1 to m do begin writeln('Введите элементы компоненты ',i); for j:=1 to n do begin write('el[',j,']='); readln(a[j]); end; write(f,a); end; writeln('Содержание исходного файла F:'); {открываем} reset(f); read(f,a);{читаем первую компоненту-массив} mn:=Summa(a,n);{пока эта сумма минимальная} for i:=1 to n do write(a[i]:5:2); write(' Сумма=',mn:0:2); writeln; while not eof(f) do begin read(f,a);{читаем остальные} for i:=1 to n do write(a[i]:5:2); write(' Сумма=',Summa(a,n):0:2); if Summa(a,n)<mn then mn:=Summa(a,n);{ищем самую маленькую сумму} writeln; end; writeln; writeln('Минимальная сумма=',mn:0:2); readkey; {задержка до нажатия клавиши для просмотра} {начнем удалять} i:=0; while i<filesize(f) do begin seek(f,i); read(f,a); if Summa(a,n)=mn then {если сумма=мин.} begin if i=filesize(f)-1 then{если последняя компонента} begin seek(f,filesize(f)-1); truncate(f);{обрезаем файл} end else {если нет} begin for j:=i to filesize(f)-2 do{сдвигаем конец файла на 1 вверх} begin seek(f,j+1); read(f,b); seek(f,j); write(f,b); end; seek(f,filesize(f)-1); truncate(f);{последнюю (пустую) обрезаем} end; end else i:=i+1; end; if filesize(f)=0 then write('Все компоненты удалены') else begin writeln('Удаление компонент с минимальной суммой:'); seek(f,0); while not eof(f) do begin read(f,a); for i:=1 to n do write(a[i]:5:2); write(' Сумма=',Summa(a,n):0:2); writeln; end; end; close(f); readln end. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|