Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
W0rtX
1 / 1 / 0
Регистрация: 11.12.2016
Сообщений: 97
1

Найти номер элемента массива, начиная с которого, все M чисел меньше заданного A

20.05.2017, 20:45. Просмотров 926. Ответов 11
Метки нет (Все метки)

Дан массив r, рандомно заполненный элементами от q до p
Пользователь вводит в форму количество чисел M и число A
Как вывести в Label номер элемента, с которого в массиве начинаются числа, начиная с которого, все M чисел меньше заданного A?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
While scor <> num do
begin
 For i:=0 to 89 do
 If r[i]<Max then
 begin
  Inc(scor);
 end
 else
 begin
  scor:=0;
break;
 end;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2017, 20:45
Ответы с готовыми решениями:

Найти номер первой пары соседних элементов с разными знаками, сумма которых меньше заданного числа
procedure TForm1.Button3Click(Sender: TObject); var e,h:integer; begin ...

Определить, есть ли пара соседних элементов массива с суммой, меньше заданного числа - найти ошибку
Дан массив целых чисел из n элементов, заполненный случайным образом числами из...

Удалить из заданного массива целых чисел размером M x N все максимальные его элементы
Удалить из заданного массива целых чисел размером M x N все максимальные его...

Вычислить номер элемента, для которого НЕ выполняется условие
Вычислить номер элемента для которого НЕ выполняется условие. где S1 и S2 -...

Вычислить номер элемента для которого не выполняется условие произведение > 5000
Вычислить номер элемента для которого НЕ выполняется условие произведение&gt;5000...

11
shyub
344 / 144 / 39
Регистрация: 11.07.2013
Сообщений: 791
21.05.2017, 21:27 2
Рад бы вам помочь, но, прочитав трижды вопрос, суть задачи не понял. Объясните как-то проще, по русски или по украински, но не по марсиански.

Добавлено через 1 минуту
Скиньте лучше, что вы уже сделали.
0
W0rtX
1 / 1 / 0
Регистрация: 11.12.2016
Сообщений: 97
22.05.2017, 22:14  [ТС] 3
shyub, то есть есть множество например {5,6,2,3,1,8,2,9,3,6};
то есть пользователь задает А=5, а так же количество чисел 3
Вот программа начинает 5<=5, программа запоминает, но число только одно, а нужно 3
Продолжает дальше, 6<5 - нет, значит обнуляется и идет дальше
и после этого 3 числа как раз меньше 5, что нам и нужно было
То есть найти подмножество в множестве
это подмножество равно {2,3,1}
Вот так нужно для любых чисел, и любого количества чисел
0
shyub
344 / 144 / 39
Регистрация: 11.07.2013
Сообщений: 791
24.05.2017, 08:35 4
Скажу честно, что опять "не въехал" в условие задачи. Однако, возможно, вам нужен первый или второй вариант, который прикрепляю: Chisls.rar.
Для упрощения использую компоненты "TSpinEdit", чтобы не проверять правильность ввода цифр.
0
shyub
344 / 144 / 39
Регистрация: 11.07.2013
Сообщений: 791
24.05.2017, 08:43 5
Если же задача сводится только к отысканию номера элемента массива, то можно:
Delphi
1
2
3
4
5
6
7
8
for k:=1 to 10 do begin
    if M[k]<min then begin
      S:=IntToStr(k);
      break;
   end;
end;
if Length(S)=0 then S:='Множество не содержит чисел, удовлетворяющих условию.';
Label10.Caption:=S;
P.S. В приведённом ранее коде только что увидел ошибку: "for k:=0 to 10 do", а надо "for k:=1 to 10 do".
0
W0rtX
1 / 1 / 0
Регистрация: 11.12.2016
Сообщений: 97
24.05.2017, 13:32  [ТС] 6
shyub, нет, я думаю, что это не то
давайте я скину задание, и вы посмотрите
только в задании посложнее, чем я пытался обьяснить
0
Миниатюры
Найти номер элемента массива, начиная с которого, все M чисел меньше заданного A  
shyub
344 / 144 / 39
Регистрация: 11.07.2013
Сообщений: 791
24.05.2017, 13:48 7
Скиньте.
0
shyub
344 / 144 / 39
Регистрация: 11.07.2013
Сообщений: 791
24.05.2017, 17:59 8
Лучший ответ Сообщение было отмечено W0rtX как решение

Решение

При помощи рекурсии осуществляется перебор и суммирование всех возможных подмножеств. Суммы, которые не удовлетворяют условию заменяются нулями Сумма чисел подмножеств.rar.
Полагаю, что поиск наибольшей суммы в Memo проблем у вас ны вызывет.
1
W0rtX
1 / 1 / 0
Регистрация: 11.12.2016
Сообщений: 97
02.06.2017, 08:14  [ТС] 9
shyub, а как найти максимальную сумму в этом коде?

Добавлено через 7 часов 40 минут
shyub, а ещё лучше, небольшую пометку, как работает программа)
0
shyub
344 / 144 / 39
Регистрация: 11.07.2013
Сообщений: 791
02.06.2017, 10:43 10
Цитата Сообщение от W0rtX Посмотреть сообщение
а как найти максимальную сумму в этом коде?
Добавил процедуру поиска максимального значения в Memo. Сумма чисел подмножеств.rar
А вообще, если не нужна наглядность, то можно обойтись без Memo, т.е. проверку осуществлять в самой procedure TForm1.My(n, m, tek, k, Sum: Integer; tekS: string; D: array of integer); И аргументов будет поменьше.
Цитата Сообщение от W0rtX Посмотреть сообщение
а ещё лучше, небольшую пометку, как работает программа
Поищите в интернете или в учебниках материал о рекурсии для Lazars или Delphi и всё поймёте. Если в двух словах, то в процессе работы функция вызывает саму себя, но с изменёнными аргументами, получается что-то типа "кошелька в кошельке". Это происходит до тех пор, пока в последней вызванной функции не выполнится какое-то условие и она завершит свою работу без очередного вызова самой себя. Т.е. начнётся процесс разрушения: то мы клали "кошелёк в кошелёк", а теперь достаём "кошелёк из кошелька", т.е. функции в обратной последовательности завершают свою работу и при этом что-то делают (в нашем случае выводят строку в Memo1).
0
W0rtX
1 / 1 / 0
Регистрация: 11.12.2016
Сообщений: 97
02.06.2017, 17:40  [ТС] 11
shyub, ну что такое рекурсия я вроде бы знаю
нужно именно построчные коментарии, если не сложно
0
W0rtX
1 / 1 / 0
Регистрация: 11.12.2016
Сообщений: 97
22.06.2017, 13:20  [ТС] 12
shyub, а можешь написать комментарии не большие к коду
Pascal
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
procedure MaxSum();
var
  S0,S1: String;
  n,k: Integer;
  mSum: Integer;
begin
  mSum:=0;
  S1:='Результат удовлетворяющий условию не найден!';
  flag1:=false;
  For n:=0 to Form1.Memo1.Lines.Count-1 do
  begin
   S0:=Form1.Memo1.Lines[n];
   Delete(S0,1,Pos('=',S0));
   k:=StrToInt(S0);
   If (mSum<=k) and (k<>0) then
   begin
    If mSum<k then
     S1:=Form1.Memo1.Lines[n]
    else
     S1:=S1;
    mSum:=StrToInt(S0);
   end;
  end;
  Form1.Label5.Caption:=(S1);
end;
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure SearchSubset(n, m, tek, k, Sum: Integer; tekS: string; D: array of integer);
//  m - длина подмножества. Изменяется от 1 до n.
//  tek - номер текущего элемента подмножества. Изменяется от 1 до m.
//  k - номер предыдущего элемента подмножества.
//  tekS - строка, в которую осуществляется запись.
var
  i: Integer;
begin
If tek>=m then
begin
 If Sum=0 then
  Sum:=0
 else
  If (log2(Sum)-Trunc(log2(Sum))<>0) then Sum:=0;
 Form1.Memo1.Lines.Add(tekS+'='+IntToStr(Sum));
 exit;
end;
For i:=k+1 to n do SearchSubset(n, m, tek+1, i, Sum+D[i-1], tekS+'['+IntToStr(d[i-1])+']',D);
end;
0
22.06.2017, 13:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2017, 13:20

Найти номер элемента начиная с которого символы двух масивов совпадают
Здравствуйте, можете помочь с написанием подпрограммы? Нам дано два одномерных...

Для заданного N указать меньше k такое, что все N чисел последовательности, начиная с Ak — одинаковые
В последовательности натуральных чисел A1, A2, A3, ... любое число Ak -...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru