Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2014, 14:57   #1
ZQRey
Новичок
Джуниор
 
Регистрация: 10.05.2014
Сообщений: 1
Печаль Проблемма с массивом

Здравствуйте, нужна помощь с написание кода для массива. В задании сказано: Разработать проект «Массив». Организовать в проекте ввод количества элементов и сами элементы одномерного массива. Найти максимальный элемент массива. Переписать массив, умножив каждый его элемент на максимальный элемент.
Кто может подсказать как организовать ввод кол-ва элементов?
И еще есть не большая проблема, в данный момент сделал статическое количество элементов. После умножения максимального на самого себя остальные элементы следующие за ним умножаются на получившийся результат. Как это можно устранить?
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
     SIZE=5;
var
     a:array[1..SIZE]of integer; // массив целых
     max:integer; // номер максимального эл-та массива
     i:integer;	  // номер эл-та, сравниваемого с максимальным

begin
     // ввод массива
     for i:=1 to SIZE do
         a[i]:=StrToInt(StringGrid1.Cells[i-1,0]);

     // поиск максимального элемента
     max:=1;  // пусть первый элемент максимальный
     for i:=2 to SIZE do begin

         if a[i]> a[max]then max:=i;

      end;
     // вывод результата
    ShowMessage {label2.caption}('Максимальный элемент массива:'+IntToStr(a[max])
	             +#13+'Номер элемента:'+ IntToStr(max));
     for i:=1 to SIZE do
      begin
         a[i]:=StrToInt(StringGrid1.Cells[i-1,0])*a[max];
         ShowMessage('Перемноженная таблица'+#13+IntToStr(a[i])); //Выдает по одиночке, почему?
      end;
      Label2.Caption:='Максимальный элемент: '+IntToStr(a[max]);
      Label3.Caption:='Переумноженный массив'
                        +#13+IntToStr(a[i]); // После умножения макс на самого себя начинает остальное умножать на результат
end;
ZQRey вне форума Ответить с цитированием
Старый 10.05.2014, 15:05   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Так вы ищите не максимум, а его номер.

Код:
Var
  A:array of integer;
...
  // ввести size
  Setlength(a,size);
...
Max:=a[0];
For i:=1 to size-1 do
  If a[i]>max then
     Max:=a[i];
...
For i:=0 to size-1 do 
  A[i]:=a[i]*max;

Последний раз редактировалось ZX Spectrum-128; 10.05.2014 в 15:09.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемма с С++ lokobum Общие вопросы C/C++ 17 04.11.2009 14:50
Проблемма с импортом Johnson SQL, базы данных 1 18.09.2009 11:15
Проблемма girz БД в Delphi 4 02.06.2009 22:01
Проблемма с динамическим массивом Arassir Помощь студентам 3 15.02.2009 12:37
Проблемма c if Crivel Помощь студентам 8 08.08.2008 15:28