Ветвления в Pascal.

Ветвления в Паскаль позволяют выполнять действия не поочередно, как мы делали в предыдущих программах, а в зависимости от каких - либо условий. Для этого в языке программирования Pascal предусмотрены различные условные операторы. В данном уроке мы ...

Div, Mod, сложение, вычитание в Pascal.

Помимо операций умножения и сложения, над целочисленными переменными производятся операции Div (операция целочисленного деления), Mod (вычисление остатка от целочисленного деления), операция вычитания «-».

Строки в Паскаль.

Тип данных String (строковый тип) используется в Паскаль для обработки текстов. Если в одну переменную типа Char можно записать лишь один символ, то в переменную типа String можно записать до 255 символов.

Циклы и массивы

ФАЙЛЫ ЗАПИСЕЙ

В практике программирования часто встречаются задачи, решение которых требует большого количества относительно мало изменяемых во времени данных. Ввод данных с экрана заново при каждом счете для этих ...

Линейные процессы вычислений.

Простейший алгоритм представляет собой цепочку блоков (операторов) от начального блока до конечного. Каждый блок должен быть выполнен один единственный раз. Это линейный алгоритм. Он отражает ...

Напишем программу, которая вычисляем максимальный элемент в массиве.

 Нахождение максимального элемента массива.




program massiv5;
uses crt;
const N=10;
type x=array [1..N] of integer;
var a:x;
i:integer;
max:integer;
imax:integer;
begin
clrscr;
randomize;
for i:=1 to N do
begin
a[i]:= -50+random(101);
write (A[i]:5)
end;
writeln;
imax:=1;
max:=A[1];
for i:=2 to N do
if max<a[i] then
begin
max:=a[i];
imax:=i
end;
writeln (‘Максимальный элемент в массиве=’,max:5);
writeln (‘Его индекс=’,imax:5);
readln
end.



В строке №7 записываем переменную для хранения величины максимального элемента.

В строке №8 записываем переменную для хранения индекса максимального элемента.

В строке №11 мы включаем функцию Randomize. Эта функция позволяет генерировать случайные числа в программе. В данном случае нам необходимо каждому элементу массива [1..N] (всего 10 элементов) присвоить какое-нибудь значение. В программе «massiv3» значения для всех элементов массива мы вводили с клавиатуры. В этой задаче мы ничего вводить не будем. Функция Randomize сама создаст значения для каждого элемента массива. В массиве у нас 10 элементов ([1..N], const N=10), соответственно будет сгенерировано 10 случайных чисел.

В строке №12 включаем цикл. Переменная «I» будет изменяться в цикле от 1 до «N»

В строке №14 очередному элементу массива мы присваиваем случайное число, которое лежит в диапазоне от – 50 до + 50. (Сначала пишется минимальное число – 50, затем знак +, затем слово RANDOM, затем в скобках указывается общее количество возможных чисел в диапазоне; в диапазоне от – 50 до + 50 получается 100 чисел + число  0, всего 101)
Строка №15. Если мы запустим программу на данном этапе, у нас выведется на экран 10 различных чисел со значением от – 50 до + 50.

В строке №18 в переменную для хранения индекса (номера)  максимального элемента мы записали число 1, т.е. будем считать, что первый элемент массива – максимальный.

В строке №19 в переменную для хранения величины максимального элемента записываем значение первого элемента массива (например, если первое сгенерированное число будет 13, то его и будем считать максимальным).

В строке №20 задаем цикл. В него мы не включаем 1-ый элемент. А затем, в строке №21 мы проверяем условие. Мы сравниваем все значения элементов  массива (т.е. все сгенерированные числа) начиная со 2-го и до 10-го с  1 - ым числом. И если очередное число в массиве больше чем 1-ое число, то в переменную для хранения максимального числа записываем это очередное число (строка  №23), а в переменную для хранения индекса максимального числа записываем индекс этого очередного числа. После выполнения цикла в переменной max должно остаться максимальное число, а в переменной «imax» должен остаться номер этого числа.

maksimaljnihyj ehlement massiva

maksimaljnihyj ehlement massiva.

После запуска программы в верхней строке у нас вывелось 10 сгенерированных чисел.
Во второй строке вывелось максимальное число из всех этих сгенерированных чисел.
В-третей строке вывелся номер по порядку, где стоит это максимальное число.


Если в массиве несколько маскимальных элементов и нужно вывести на экран индексы всех этих элементов, то программа будет выглядет так:





program massiv5;
uses crt;
const N=10;
type x=array [1..N] of integer;
var a:x;
i:integer;
max:integer;
imax:integer;
begin
clrscr;
randomize;
for i:=1 to N do
begin
a[i]:= -5+random(3);
write (A[i]:5)
end;
writeln;
imax:=1;
max:=A[1];
for i:=2 to N do
if max<a[i] then
begin
max:=a[i];
imax:=i;
end;
writeln('Максимальный элемент в массиве=',max);
write('Его индекс ');
for i:=1 to N do
if max=a[i] then
begin
write (i,', ');
end;
readln
end.




maxelemmas

maxelemmas.


Предыдущая статья : Randomize и Random в Pascal.

Оглавление : Уроки Паскаль.

Следующая статья : Вычисление суммы положительных элементов массива.


Комментарии   

+1 # Юрий 23.03.2012 16:40
Здравствуйте! А почему в окне программы после знаков равенства во фразах "Максимальный элемент в массиве=" и "Его индекс=" такое большое расстояние до чисел?Это потому, что для чисел в этих местах отведено по 5 знакомест и заполняются они с конца?
0 # Administrator 23.03.2012 17:11
Да, совершенно верно. Хотя для переменных целого типа не обязательно указывать формат вывода.
-1 # Юрий 23.03.2012 17:56
А сколько знакомест отводит компилятор для переменной целого типа по умолчанию? Сначала я подумал, что резерв места будет равен размеру, который занимает тип данных в памяти компьютера, но... для Longint и Cardinal, например - это 4 байта. Многовато места получается... Может быть я невнимательно прочёл материал предыдущих уроков?
+6 # Administrator 25.03.2012 07:57
Для каждой переменной Вы указываете тип данных в разделе описания переменных. Для целых чисел это может быть INTEGER, BYTE, LONGINT и др. Каждый из этих типов занимает от 1 до 4-х байт в памяти. Какой тип указать для переменной, должен выбирать сам программист. Если Вы уверены, что в переменную во время выполнения программы не попадет число менее 0 и более 255, то для данной переменной целесообразно указать тип BYTE. Например, в примере из этого урока, переменная "i" может принимать значения только от 1 до 10, поэтому для экономии памяти можно указать для нее тип BYTE. Вообще, можно в переменную большого типа записать маленькое число (например, число 7 в переменную LONGINT). Однако для числа 7 нужно всего лишь 3 бита в памяти (7d=111b). Но так как LONGINT занимает 32 бита, остальные 29 битов будут тоже заняты. Просто на их месте запишутся нули.
+14 # Иван 04.05.2012 19:04
Спасибо Вам большое за такой замечательный сайт! Все очень четко, просто, а главное понятно объяснено. Это огромная помощь в подготовке к экзаменам. Вы большие молодцы! :-)
+2 # Виталий 11.05.2012 22:56
Доброго времени суток.
А как быть, если есть несколько максимальных чисел? Как сделать так, чтобы все максимальные индексы выводились?
+4 # Administrator 12.05.2012 09:32
После того как найден максимальный элемент массива, сравниваем его со всеми элементами массива, и если находим такой же элемент, выводим его индекс на экран.
Пример дописал в конце этой статьи.
0 # Виталий 12.05.2012 11:46
Спасибо. Не ожидал, что так быстро получу ответ!
-4 # Shige 06.06.2012 12:40
Здравствуйте. Хотелось бы задать пару вопросов. Вот мы нашли максимальный и минимальный элементы.
Теперь надоп оделить максимальный элемент на минимальный и вывести результат.Не подскажите как это записать в паскале?
-4 # Administrator 07.06.2012 05:25
Вопрос не понял, уточните ,пожалуйста.
-6 # нуна 12.02.2013 14:57
объясните пожалуйста что значит случайные числа?????????? ??????????????? ????
-1 # Петросян 16.02.2013 13:00
randomize врубает мини Дискорда, живущего в каждом паскале
Ну а если серьезно, random("число") сгенерирует несколько случайных чисел от нуля до "число-1" (количество этих чисел зависит от ,к примеру, количества возможных чисел "ячеек" массива). После каждого перезапуска программы будут генерироваться разные числа. Randomize(обяза телен) активирует возможность использования функции random.
-2 # M*** 28.02.2015 19:30
Ввести массивы А и В. В массив С скопировать те элементы массива А, которые встречаются в массиве В по крайней мере 2 раза, и те элементы массива В, которые встречаются в массиве А ровно 1 раз. Из массива А удалить все элементы стоящие левее максимального элемента. Массивы А, В и С отсортировать по убыванию, используя сортировку методом пузырька.
-2 # Nastya 12.06.2016 14:20
Помогите пожалуйста. Задан массивы действительных чисел а1,а2,…,а20.Сдв инуть циклическим сдвигом все его элементы так, чтобы максимальный элемент стоял на первом месте.на с++
-2 # Сайнаа 12.11.2016 00:26
Вычислить произведение положительных элементов двумерного массива
   ГлавнаяПаскальМассивы в Паскаль