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

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Линейный массив, Паскаль (http://www.tehnari.ru/f43/t252247/)

Alexey123 21.02.2017 19:47

Линейный массив, Паскаль
 
Вложений: 1
Надо найти наименьшее число из массива A. Вот код :
program massiv;
var A: array [1..10] of integer;
i, min: integer;
begin
A[i] := random(10);
for i:= 1 to 10 do
min := A[1];
begin
if A[2] < min then
min := A[2];
if A[3] < min then
min := A[3];
if A[4] < min then
min := A[4];
if A[5] < min then
min := A[5];
if A[6] < min then
min := A[6];
if A[7] < min then
min := A[7];
if A[8] < min then
min := A[8];
if A[9] < min then
min := A[9];
if A[10] < min then
min := A[10];
Writeln('наименьшее число := ', min);
end;
end.


Исправьте пожалуйста

Vladimir_S 21.02.2017 21:11

Пожалуйста:
Код:

program massiv;
var
 A:array [1..10] of integer;
 i,min: integer;
begin
 Randomize;
 for i:=1 to 10 do
  begin
  A[i]:=random(10);
  write(A[i]:3);
  end;
 writeln;
 min := A[1];
 for i:= 2 to 10 do if A[i]<min then min:= A[i];
 Writeln('Наименьшее число = ', min);
 readln
end.


Alexey123 21.02.2017 22:12

Цитата:

Сообщение от Vladimir_S (Сообщение 2463568)
Пожалуйста:
Код:

program massiv;
var
 A:array [1..10] of integer;
 i,min: integer;
begin
 Randomize;
 for i:=1 to 10 do
  begin
  A[i]:=random(10);


Вот до сюда все понятно. Простите, я немножко туплю, но можно дальше с пояснениями?
P.S. За код спасибо:tehnari_ru_203:

Vladimir_S 22.02.2017 10:07

Вложений: 1
Цитата:

Сообщение от Alexey123 (Сообщение 2463588)
Простите, я немножко туплю, но можно дальше с пояснениями?

Можно.
Прежде всего, давайте разберёмся, отчего при попытке запуска Вашей программы её выбрасывало с ошибкой. А от того, что вместо организации ЦИКЛА присвоения элементам массива случайных значений, Вы попросту записали
Цитата:

Сообщение от Alexey123 (Сообщение 2463548)
A[i] := random(10);

и произошло вот что: поскольку Вы не присвоили переменной i никакого значения, оно по умолчанию принято нулевым, и эта строка есть попытка присвоить некое значение элементу массива A[0]. Но диапазон-то Вы определили [1..10], т.е. нумерация начинается с 1 - вот Вам и ошибка.
В моей программе задан цикл присвоения случайных значений элементам массива с 1 по 10, и в том же цикле эти значения оператором write выводятся на экран: интересно же на них посмотреть, да и убедиться, что программа ДЕЙСТВИТЕЛЬНО нашла наименьшее.
Вложение 335088
То, что Вы делаете дальше - вот ей-Богу, и смех, и грех... А если бы в массиве было не 10 элементов, а, скажем, 10000 - Вы бы и тут написали 10000 блоков типа
if A[7386] < min then min := A[7386];? Зачем? Как видите, задача решается в 1 (одну!) строчку. Вначале присваиваем переменной min значение A[1]. Затем организуем цикл перебора всех остальных элементов массива, и в теле этого цикла осуществляется следующая операция: если текущее значение A[i] меньше min, то переменной min присваивается значение A[i]. Таким образом, неизбежно выберется минимальный из элементов, и его значение будет присвоено переменной min. Осталось лишь вывести результат на экран, что и делается.

Alexey123 22.02.2017 15:28

Спасибо! Теперь все понятно, чтоб я без Вас делал! Благодарю:preved:

Vladimir_S 22.02.2017 15:39

Цитата:

Сообщение от Alexey123 (Сообщение 2463778)
Спасибо! Теперь все понятно, чтоб я без Вас делал! Благодарю:preved:

Да пожалуйста - спрашивайте, если что непонятно. Поможем по мере сил.


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

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