Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль (http://www.tehnari.ru/f41/t86807/)

anka950 26.03.2013 12:13

Паскаль
 
Найти наибольшие элементы и их порядковые номера массивов x(15) и y(12)
Через процедуру или функцию
Помогите пожалуйста

Vladimir_S 26.03.2013 12:37

Цитата:

Сообщение от anka950 (Сообщение 886452)
Найти наибольшие элементы и их порядковые номера массивов x(15) и y(12)
Через процедуру или функцию
Помогите пожалуйста

Аня, постыдились бы с подобной ерундой вылезать! Мой Вам совет - беритесь за учебу, пока не поздно. Вот как раз прекрасная возможность получить навыки работы с основами Паскаля.
А если Вы планируете всё обучение за счет форумов проехать, ничего не делая и ничего не осваивая - не выйдет, уж поверьте.
Успехов!
P.S. С удовольствием поможем разобраться с проблемами и исправить ошибки. Но это при условии, что хоть что-то будет Вами сделано. Пока же Ваше "помогите" означает "напишите, а я тупо бездумно скатаю и сдам".

anka950 26.03.2013 12:39

Что мне делать если я процедуры не понимаю?!

Vladimir_S 26.03.2013 12:45

Цитата:

Сообщение от anka950 (Сообщение 886460)
Что мне делать если я процедуры не понимаю?!

Хорошо, напишите без процедур. Потом поправим.

anka950 27.03.2013 17:36

Var x:array[1..15] of word;
k,m,i,n:word; mas:word;
Y:array[1..12] of word;
Begin
CLRSCR;
n:=15;
Read(x[1]);
max:=x[i];
For i:=2 to n do begin
Read(x[i]);
If max<x[i] then begin
max:=x[i]; k:=i;end;end;
Writeln('максимум: ',max);
Writeln ('номер максимума: ',k);
Readkey ;
End.

Vladimir_S 27.03.2013 21:18

Так, почти хорошо. Правда, сразу замечание: команды 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.


anka950 28.03.2013 10:33

Спасибо большое)


Часовой пояс GMT +4, время: 21:06.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.