Помощь - Поиск - Пользователи - Календарь
Полная версия: Нахождение максимума
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Santrex
Вот тут не получаеться кое что сделать.
Условие следующее:

Сформировать файл 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', ей надо об этом сказать. Основной блок переделываем так (не забываем про новую переменную 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
Так это я вставил.Пахает.
А вот у меня вначале так идет.Он вот спрашивает названия файла в который будет сохранена информация.Потом мы выбираем цифру 1, 2, 3.Но вот небольшая проблема.Хотелось бы чтобы тут когда он создает новый файл он сразу находил максимальный элемент,записывал это в файл, и показывал сразу.А потом появляеться опять меню с выбором.И при выборе цифры 2 он должен открыть файл с сохраненными данными.Но токо почему то тут он этого не делает.Можешь посомтреть что тут надо исправить. :o
Santrex
Так как это сотворить?
volvo
Для начала разберись с типами...
Код
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
ну я с запасом писал вдруг пргодяться smile.gif
Ну ты сможешь исправить что там не так?
volvo
Santrex, ты имеешь в виду, что программа должна делать вот это?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.