Автор: Santrex 2.03.2005 23:57
Вот тут не получаеться кое что сделать.
Условие следующее:
Сформировать файл f1,компоненты которого целый чилса.Найти наибольшее из этих чисел.Использовать процедуры, а также меню для выбора существующего или внвь создаваемого файла.
И код.
:p1:
Код
Program Zadanie8;
uses crt;
type
spis=record
a : array [1..100] of integer;
mas,max,i : integer;
end;
ff = file of spis;
var
massiv : array [1..100] of integer;
a : array [1..100] of spis;
f1 : ff;
q : char;
n,i,max,k : integer;
name_1 : string[10];
{********* Џp®жҐ¤гp ўў®¤ ¤ ле б Є« ўЁ вгpл Ё § ЇЁбЁ Ёе ў д ©« *********}
procedure NEW_FILE (var f:ff);
begin
clrscr;
rewrite(f);
Write('‚ўҐ¤ЁвҐ а §¬ҐаҐ®бвм ¬ ббЁў :');
readln(n);
Writeln('‚ўҐ¤ЁвҐ н«Ґ¬вл ¬ ббЁў ');
for i := 1 to n do
begin
readln(a[i].mas);
end;
close(f)
end;
{******** Џp®жҐ¤гp ЇҐз вЁ ? б®авЁа®ўЄЁ **********}
procedure PRNT (var f:ff);
begin
reset(f1);
seek(f1,0);
writeln;
write('Massiv dannix :');
for i := 1 to n do
begin
write (a[i].mas:4);
end;
max:=(a[i].mas);
for i := 1 to n do
if (max<a[i].mas) then
begin
max:=(a[i].mas);
writeln;
writeln('Њ ЄбЁ¬ «мл© н««Ґ¬Ґв ¬ ббЁў a[i] : ');
write(max);
end;
close(f)
end;
{**************** Ћб®ў п Їp®Јp ¬¬ ******************}
begin
clrscr;
write ('Vvedite name Faila v kotorie bydyt soxraneni dannie: ');
readln (name_1);
assign (f1,name_1);
repeat
writeln;
writeln('‚ўҐ¤ЁвҐ 1 ¤«п ᮧ ¤ Ёп Ќ®ў®Ј® ” ©« :');
writeln('‚ўҐ¤ЁвҐ 2 ¤«п Џа®б¬®ва 㦥 ᮧ¤ ®Ј® ” ©« :');
writeln('Vvedite 3 dla Vixoda :');
Readln(q);
case q of
'1' :NEW_FILE(f1);
'2' :PRNT(f1);
'3' :
end
until false;
end.
:ypr:Что эта прога глючит.Я делал ее своими руками но я токо учюся и незнаю многово о файлах,процедурах и меню.
Исправте пожалуста чтобы можно было с помощбю меню:
1)Создавать файл.
2)Открывать уже созданный файл.
3)И выход из программы.(причем программа должна закончиться токо когда пользователь выберет эту опцию)
И посмотрите по заданию правильно она пахает или нет?
СПАСИБО ВСЕМ КТО СМОЖЕТ МНЕ ПОМОЧЬ.
Автор: volvo 3.03.2005 0:19
Ну, чтобы из программы можно было выйти по нажатию '3', ей надо об этом сказать. Основной блок переделываем так (не забываем про новую переменную Stop):
Код
var stop: boolean; (*** !!! ***)
begin
clrscr;
write ('Vvedite name Faila v kotorie bydyt soxraneni dannie: ');
readln (name_1);
assign (f1,name_1);
stop := false; (*** !!! ***)
repeat
writeln;
writeln('‚ўҐ¤ЁвҐ 1 ¤«п ᮧ ¤ Ёп Ќ®ў®Ј® ” ©« :');
writeln('‚ўҐ¤ЁвҐ 2 ¤«п Џа®б¬®ва 㦥 ᮧ¤ ®Ј® ” ©« :');
writeln('Vvedite 3 dla Vixoda :');
Readln(q);
case q of
'1' :NEW_FILE(f1);
'2' :PRNT(f1);
'3' :stop := true; (*** !!! ***)
end
until stop; (*** !!! ***)
end.
Автор: Santrex 3.03.2005 0:28
Так это я вставил.Пахает.
А вот у меня вначале так идет.Он вот спрашивает названия файла в который будет сохранена информация.Потом мы выбираем цифру 1, 2, 3.Но вот небольшая проблема.Хотелось бы чтобы тут когда он создает новый файл он сразу находил максимальный элемент,записывал это в файл, и показывал сразу.А потом появляеться опять меню с выбором.И при выборе цифры 2 он должен открыть файл с сохраненными данными.Но токо почему то тут он этого не делает.Можешь посомтреть что тут надо исправить. :o
Автор: volvo 3.03.2005 1:19
Для начала разберись с типами...
Код
type
spis=record
a : array [1..100] of integer;
mas, max, i: integer;
end;
ff = file of spis;
var
massiv: array [1..100] of integer;
a: array [1..100] of spis;
f1: ff;
Что по-твоему должно храниться в _одной_ переменной a? 100 целых чисел и еще значения max и прочее? Тогда зачем ты объявил массив из 100 таких переменных?
Автор: Santrex 3.03.2005 2:23
ну я с запасом писал вдруг пргодяться
Ну ты сможешь исправить что там не так?
Автор: volvo 3.03.2005 16:40
Santrex, ты имеешь в виду, что программа должна делать вот это?
Прикрепленные файлы
__STRX.PAS ( 1.36 килобайт )
Кол-во скачиваний: 276