Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 21.02.2017, 19:47   #1 (permalink)
Alexey123
Member
 
Регистрация: 11.12.2016
Сообщений: 26
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post Линейный массив, Паскаль

Надо найти наименьшее число из массива 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.


Исправьте пожалуйста
Миниатюры
aacuiyiiue.png  
Alexey123 вне форума   Ответить с цитированием

Старый 21.02.2017, 19:47
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Данный список тем может помочь решить ваш вопрос

Линейный массив
Линейный массив на 5ГДШ-4-4
Паскаль. Линейный оператор

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

Пожалуйста:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 21.02.2017, 22:12   #3 (permalink)
Alexey123
Member
 
Регистрация: 11.12.2016
Сообщений: 26
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Пожалуйста:
Код:
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. За код спасибо
Alexey123 вне форума   Ответить с цитированием
Старый 22.02.2017, 10:07   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alexey123 Посмотреть сообщение
Простите, я немножко туплю, но можно дальше с пояснениями?
Можно.
Прежде всего, давайте разберёмся, отчего при попытке запуска Вашей программы её выбрасывало с ошибкой. А от того, что вместо организации ЦИКЛА присвоения элементам массива случайных значений, Вы попросту записали
Цитата:
Сообщение от Alexey123 Посмотреть сообщение
A[i] := random(10);
и произошло вот что: поскольку Вы не присвоили переменной i никакого значения, оно по умолчанию принято нулевым, и эта строка есть попытка присвоить некое значение элементу массива A[0]. Но диапазон-то Вы определили [1..10], т.е. нумерация начинается с 1 - вот Вам и ошибка.
В моей программе задан цикл присвоения случайных значений элементам массива с 1 по 10, и в том же цикле эти значения оператором write выводятся на экран: интересно же на них посмотреть, да и убедиться, что программа ДЕЙСТВИТЕЛЬНО нашла наименьшее.
aa_000.png
То, что Вы делаете дальше - вот ей-Богу, и смех, и грех... А если бы в массиве было не 10 элементов, а, скажем, 10000 - Вы бы и тут написали 10000 блоков типа
if A[7386] < min then min := A[7386];? Зачем? Как видите, задача решается в 1 (одну!) строчку. Вначале присваиваем переменной min значение A[1]. Затем организуем цикл перебора всех остальных элементов массива, и в теле этого цикла осуществляется следующая операция: если текущее значение A[i] меньше min, то переменной min присваивается значение A[i]. Таким образом, неизбежно выберется минимальный из элементов, и его значение будет присвоено переменной min. Осталось лишь вывести результат на экран, что и делается.
Vladimir_S вне форума   Ответить с цитированием
Старый 22.02.2017, 15:28   #5 (permalink)
Alexey123
Member
 
Регистрация: 11.12.2016
Сообщений: 26
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо! Теперь все понятно, чтоб я без Вас делал! Благодарюreved:" class="inlineimg" />
Alexey123 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 22.02.2017, 15:39   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Alexey123 Посмотреть сообщение
Спасибо! Теперь все понятно, чтоб я без Вас делал! Благодарюreved:" class="inlineimg" />
Да пожалуйста - спрашивайте, если что непонятно. Поможем по мере сил.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.