Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Нахождение максимума

Автор: 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

Автор: Santrex 3.03.2005 0:48

Так как это сотворить?

Автор: 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

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

Автор: volvo 3.03.2005 16:40

Santrex, ты имеешь в виду, что программа должна делать вот это?


Прикрепленные файлы
Прикрепленный файл  __STRX.PAS ( 1.36 килобайт ) Кол-во скачиваний: 276