Тема: Паскаль
Показать сообщение отдельно
Старый 27.03.2013, 21:18   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Так, почти хорошо. Правда, сразу замечание: команды ClrScr и ReadKey в состав языка не входят, а реализуются через подключаемый модуль CRT, а потому, если уж Вы их используете, необходимо в самом начале поставить "Uses CRT;". Далее, внимательнее относитесь к написанию идентификаторов: в разделе описания Вы задаете переменную "mas", а в теле программы работаете с переменной "max". Уж выберите что-то одно. Поймите, текст программы - это не письмо возлюбленному, который сквозь пальцы посмотрит на описки, неряшливости и пр., здесь требуется абсолютная точность и выверенность каждого значка, иначе компьютер начнет плеваться, ибо "общих соображений" он напрочь не понимает. Продолжаем. Исходное значение максимума Вы задаете, как x[i], а надо - x[1]. Массив Y вообще не введен и не обработан. Потом - "слепой" ввод крайне неудобен, лучше с подсказками. Ну вроде всё.

Код:
Uses CRT;
Var 
 x:array[1..15] of word;
 k,i,n:word; 
 max:word;
 Y:array[1..12] of word;
Begin
 CLRSCR;
 n:=15;
 k:=1;
 write('x[ 1]= ');
 Readln(x[1]);
 max:=x[1];
 For i:=2 to n do 
  begin 
   write('x[',i:2,']= ');
   Readln(x[i]);
   If max<x[i] then 
    begin
     max:=x[i]; 
     k:=i;
    end;
  end;
 Writeln('максимум в массиве x: ',max);
 Writeln('номер максимума  в массиве x: ',k);
 Writeln;
 n:=12;
 k:=1;
 write('Y[ 1]= ');
 Readln(Y[1]);
 max:=Y[1];
 For i:=2 to n do 
  begin 
   write('Y[',i:2,']= ');
   Readln(Y[i]);
   If max<Y[i] then 
    begin
     max:=Y[i]; 
     k:=i;
    end;
  end;
 Writeln('максимум в массиве Y: ',max);
 Writeln('номер максимума  в массиве Y: ',k);
 Readkey ;
End.
Ну а теперь изобразим это дело через процедуры, коих опишем две: процедуру ввода массива и процедуру поиска максимума. Для начала придется ввести тип переменной Ar - без этого передать массив в процедуру и вывести из процедуры нельзя. Также будем передавать число элементов массива и его имя (один символ). Заметьте, что в шапке процедуры входные параметры перечисляются обычным образом, а вот перед выходными ставится "var". Посмотрите, если возникнут вопросы - спрашивайте.

Код:
Uses CRT;
Type
 Ar=Array[1..15] of word;

Var
 x,Y:Ar;
 k,n:word;
 max:word;

Procedure Inp(Nz:word; Name:Char; var z:Ar);
Var i:word;
begin
 for i:=1 to Nz do
  begin
   write(Name,'[',i:2,']= ');
   readln(z[i]);
  end;
end;

Procedure Maxim(z:Ar; Nz:word; var Mxm:word; var Km:word);
Var i:word;
begin
 Mxm:=z[1];
 Km:=1;
 for i:=2 to Nz do
  If Mxm<z[i] then
   begin
    Mxm:=z[i];
    Km:=i;
   end;
end;

Begin
 CLRSCR;
 n:=15;
 Inp(n, 'x', x);
 Maxim(x,n,max,k);
 Writeln('Maximum in x array: ',max);
 Writeln('Number of maximum in x array: ',k);
 Writeln;
 n:=12;
 Inp(n, 'Y', Y);
 Maxim(Y,n,max,k);
 Writeln('Maximum in Y array: ',max);
 Writeln('Number of maximum in Y array: ',k);
 Readkey ;
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070