1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
1

Нахождение максимального значения среди множества Edit

15.04.2013, 21:50. Показов 3639. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Требуется определить максимальное значение множества Edit.
Посредством поиска обнаружил следующий способ, но он мне не подходит, так как работает лишь с двумя значениями.

Delphi
1
2
3
4
5
6
procedure TForm1.Button1Click(Sender: TObject);
var a:integer;
begin
a:=Max(StrtoInt(Edit1.Text), StrtoInt(Edit2.Text));
Label1.Caption:=inttostr(a);
end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2013, 21:50
Ответы с готовыми решениями:

Нахождение максимального значения корня среди действительных корней квадратных уравнений
(Написать программу, осуществляющую заданные вычисления с использованием процедур. Вид используемых...

Нахождение максимального/минимального значения среди элементов любого ряда/столбца
Доброго времени суток. а) Найти максимальное значение среди элементов любой строки двумерного...

Нахождение максимального значения среди отрицательных элементов выделенного диапазона рабочей таблицы
Разработать подпрограмму нахождения максимального значения сре ди отрицательных элементов...

Нахождение максимального значения в массиве среди всех элементов после первого отрицательного
Задание :Нахождение максимального значения в массиве среди всех элементов после первого...

19
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
15.04.2013, 21:53 2
Цитата Сообщение от Salpson Посмотреть сообщение
работает лишь с двумя значениями.
а сколько надо? (любое количество можно свести в итоге к двум)
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
15.04.2013, 22:00  [ТС] 3
Цитата Сообщение от cotseec Посмотреть сообщение
а сколько надо? (любое количество можно свести в итоге к двум)
Разное кол-во 3 или 4 например.
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
15.04.2013, 22:03 4
и сравнивай это любое количество попарно

Не по теме:

код писать не буду ибо не умею и вообще я весь семестр занимался всякой CENSOREDими непотребствами

0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
15.04.2013, 22:07  [ТС] 5
Цитата Сообщение от cotseec Посмотреть сообщение
и сравнивай это любое количество попарно

Не по теме:

код писать не буду ибо не умею и вообще я весь семестр занимался всякой CENSOREDими непотребствами

К сожалению сам код я не реализую. Хотелось бы пример увидеть с помощью того же цикла.
0
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 98
15.04.2013, 23:41 6
Лучший ответ Сообщение было отмечено как решение

Решение

Примерно так:
Delphi
1
2
3
4
5
6
7
8
9
10
var
  i:Integer;
  а:Real;
begin
  a:=StrToFloat(edt1.Text);
  for i := 0 to ComponentCount - 1 do
    if (Components[i] is TEdit) then
      a:=Max(a, StrToFloat((Components[i] as TEdit).Text));
  lbledt1.Text:=FloatToStr(a);
end;
3
Житель Земли
3002 / 3002 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
16.04.2013, 09:51 7
Цитата Сообщение от Anand Посмотреть сообщение
Примерно так:
Delphi
1
2
3
4
5
6
7
8
9
10
var
  i:Integer;
  а:Real;
begin
  a:=StrToFloat(edt1.Text);
  for i := 0 to ComponentCount - 1 do
    if (Components[i] is TEdit) then
      a:=Max(a, StrToFloat((Components[i] as TEdit).Text));
  lbledt1.Text:=FloatToStr(a);
end;
ерунда. во-первых, в какой-то момент времени значение из Edit1 будет сравниваться с самим собой. Это не смертельно, но есть признаком некачественного кода. во-вторых, что более существенно, не все Эдиты будут сравниваться между собой при таком подходе
0
Модератор
3489 / 2612 / 741
Регистрация: 19.09.2012
Сообщений: 7,973
16.04.2013, 10:03 8
Цитата Сообщение от DenNik Посмотреть сообщение
не все Эдиты будут сравниваться между собой при таком подходе
Для нахождения максимума их и не надо все сравнивать между собой.
0
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 98
16.04.2013, 13:45 9
Цитата Сообщение от DenNik Посмотреть сообщение
ерунда. во-первых, в какой-то момент времени значение из Edit1 будет сравниваться с самим собой. Это не смертельно, но есть признаком некачественного кода. во-вторых, что более существенно, не все Эдиты будут сравниваться между собой при таком подходе
Тогда есть другие методы решения такой задачи?
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
17.04.2013, 16:37  [ТС] 10
Цитата Сообщение от DenNik Посмотреть сообщение
ерунда. во-первых, в какой-то момент времени значение из Edit1 будет сравниваться с самим собой. Это не смертельно, но есть признаком некачественного кода. во-вторых, что более существенно, не все Эдиты будут сравниваться между собой при таком подходе
Предложите свой вариант тогда.
0
174 / 160 / 71
Регистрация: 22.02.2013
Сообщений: 1,769
Записей в блоге: 2
17.04.2013, 17:24 11
запихни значения в массив и работой с ним думаю так сможешь
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
17.04.2013, 18:39  [ТС] 12
Цитата Сообщение от NotBeginner Посмотреть сообщение
запихни значения в массив и работой с ним думаю так сможешь
Даже не знаю что это к сожалению. Мне бы один раз показать пример, по ниму я уже с любыми компонентами смогу работать.
0
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 98
17.04.2013, 21:19 13
Чтобы значение из Edit1 не сравнивался с самим собой, можно в условие добавить чтобы индекс Edit1 не совпадал с индексом перебирающихся компонентов. А для нахождения максимума все Edit'ы между собой сравнивать не надо, так же как и массивах. Использование массива увеличит сам код. В любом случае, нужно мнение знатоков.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32793 / 21133 / 8144
Регистрация: 22.10.2011
Сообщений: 36,393
Записей в блоге: 8
18.04.2013, 01:27 14
Цитата Сообщение от Anand Посмотреть сообщение
Чтобы значение из Edit1 не сравнивался с самим собой
, достаточно начальное значение A поменять на (-MaxDouble), потому что кто там знает, как будут называться Edit-ы на форме. Мало ли. А дальше - без изменений, нормальный цикл. Кто там написал "Ерунда" - за своими бы "опусами" следил лучше...
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
23.04.2013, 14:28  [ТС] 15
Хорошо, а как найти максимальное значение среди диагоналей в StringGride и записать эти максимальные значение скажем в переменную или в некий массив. Скрин
Всего получиться 5 максимальных значений.
Кусок кода программы

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure Summa();
var I,J,K:Integer;
begin
For I:=1 to 5 do
  For J:=1 to 5 do
    Sum[I,J]:=Sum[I,0]+Sum[0,J];
 
K:=1;
For I:=1 to 5-K+1 do
  begin
    For J:=1 to 5-K+1 do
      Form1.StringGrid2.Cells[I,J]:=IntToStr(Sum[I,J]);
      K:=K+1;
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var I,J:Integer;
begin
For I:=1 to 5 do
  begin
    Sum[I,0]:=StrToInt(StringGrid1.Cells[I,1]);
    StringGrid2.Cells[I,0]:=IntToStr(Sum[I,0]);
  end;
 
For J:=1 to 5 do
  begin
    Sum[0,J]:=StrToInt(StringGrid1.Cells[J,2]);
    StringGrid2.Cells[0,J]:=IntToStr(Sum[0,J]);
  end;
 
Summa();
0
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 98
23.04.2013, 14:54 16
Salpson, если тебе нужно макс-ое значение среди диагоналей, тогда не 5 макс-ых значений получиться же. Или ты не рассматриваешь остальные диагонали после побочной?
0
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
23.04.2013, 15:16  [ТС] 17
Цитата Сообщение от Anand Посмотреть сообщение
Salpson, если тебе нужно макс-ое значение среди диагоналей, тогда не 5 макс-ых значений получиться же. Или ты не рассматриваешь остальные диагонали после побочной?
Ну судя по скрину их будет только 5, а все что там ниже там числа есть но я их не выводил в таблицу поэтому и считать их не надо, конечно в этой диагонале может встретиться два максимальных числа, но мы берем последнее число которое сравнивали.

Добавлено через 2 минуты
Anand, я конечно могу сам посчитать максимальное число по парно, но этот способ почему то для меня дикий.
Delphi
1
Sum[1,0]:=Max(StrToInt(Form1.StringGrid1.Cells[1,2]),StrToInt(Form1.StringGrid1.Cells[2,1]));
0
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 98
23.04.2013, 17:07 18
Примерный алгоритм поиска:
Delphi
1
2
3
4
5
6
7
8
  for j:=n-1 downto 0 do
  begin
    max:=A[0,j];
    for i:=j downto 0 do
      if A[j-i,i]>max then
        max:=A[j-i,i];
    B[n-j-1]:=max;
  end;
Добавлено через 6 минут
Тут поиск начинается с правого верхнего угла матрицы.
Или так. С левого верхнего:
Delphi
1
2
3
4
5
6
7
8
  for j:=0 to n-1 do
  begin
    max:=A[0,j];
    for i:=0 to j do
      if A[j-i,i]>max then
        max:=A[j-i,i];
    B[j]:=max;
  end;
1
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 42
24.04.2013, 17:15  [ТС] 19
Anand, Ага, спасибо. Если еще возможно конечно, желательно закрасить те ячейки где был найден максимальный элемент.
0
28 / 28 / 8
Регистрация: 07.10.2012
Сообщений: 98
24.04.2013, 20:28 20
У меня тоже была похожая задачка. Посмотри ка вот эту тему
Закрашивание ячеек StringGrid с max и min элементами каждой строки матрицы

Тут у меня по строкам, но и для диагоналей метод тот же.
1
24.04.2013, 20:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2013, 20:28
Помогаю со студенческими работами здесь

Нахождение треугольников среди множества точек
Условие: /* Входной файл: triangle.in Выходной файл: triangle.out Ограничение времени: 3...

Нахождение максимального среди отрицательных в строке методом
Ребята, помогите пожалуйста с прогой.:cry Дана строка последовательности чисел через запятую...

Нахождение в массиве максимального среди отрицательных элементов
Составить программу нахождения в массиве Y(N),N<10 максимального среди отрицательных элементов и...

Работа с массивами. Нахождение максимального среди отрицательных
В 4Х ВАРИАНТАХ: ОДНОМЕРНЫЙ МАССИВ (в обычном варианте и через класс Array) ДВУМЕРНЫЙ МАССИВ (в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru