• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Для лентяев

  • Автор темы gerich
  • Дата начала
Статус
Закрыто для дальнейших ответов.
J

Jumpy

Здравствуйте! Помогите,пожалуйста,с простенькой задачкой:
Найти сумму элементов массива A(M) находящихся между первым из максимальных и последним из минимальных элементов. Спасибо

а сколько в массиве максимальных и минимальных элементов ?)))
и как их определить ?))
 
G

Goodfriend

Вот полный текст задачи:
Найти сумму элементов массива A(M) находящихся между первым из максимальных и последним из минимальных элементов.M ввести с клавиатуры с помощью полосы прокрутки.Элементы массива - случайные числа в диапозоне -100, +100.При решении использовать одномерный массив случайных чисел создаваемых с помощью встроенной функции rnd.Вывести сформированный массив и результат.
Пока вот что я сделал, просто форму:
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim M As Long, i As Long, S As Long
Dim A() As Long
M = HS1.Value
ReDim A(M): Randomize
For i = 1 To M
A(i) = -100 + Rnd * 200: List1.List(i - 1) = A(i)
Next i
For i = 1 To M
А вот тут не знаю что писать =)
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub HS1_Change()
Text1.Text = HS1.Value
End Sub
 
G

Guest

Я вообще плохо понимаю Visual basic...=(((
помогите,пожалуста решить!
Цена 60 экземпляров первого тома и 75 экземпляров второго тома составляет 405 рублей. Однако, про 15% скидке на первый том и 10%скидки на второй том приходится платить всего 355 рублей 50 копеек. Определить цену первого и второго тома.
 
J

Jumpy

Вот полный текст задачи:
Найти сумму элементов массива A(M) находящихся между первым из максимальных и последним из минимальных элементов.M ввести с клавиатуры с помощью полосы прокрутки.Элементы массива - случайные числа в диапозоне -100, +100.При решении использовать одномерный массив случайных чисел создаваемых с помощью встроенной функции rnd.Вывести сформированный массив и результат.
Пока вот что я сделал, просто форму:
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim M As Long, i As Long, S As Long
Dim A() As Long
M = HS1.Value
ReDim A(M): Randomize
For i = 1 To M
A(i) = -100 + Rnd * 200: List1.List(i - 1) = A(i)
Next i
For i = 1 To M
А вот тут не знаю что писать =)
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub HS1_Change()
Text1.Text = HS1.Value
End Sub

вероятно я тупой :unsure:) но вот это:
"находящихся между первым из максимальных и последним из минимальных элементов"
ваще не понимаю ни разу :))
Что такое "первым из максимальных" ? максимальные это какие ? это те которые больше чем что-то, или имеется ввиду максимальный элемент с наименьшим индексом в массиве ?

"M ввести с клавиатуры с помощью полосы прокрутки"
это тож нипонятно :)
 
G

Goodfriend

вероятно я тупой smile.gif) но вот это:
"находящихся между первым из максимальных и последним из минимальных элементов"
ваще не понимаю ни разу smile.gif)
Что такое "первым из максимальных" ? максимальные это какие ? это те которые больше чем что-то, или имеется ввиду максимальный элемент с наименьшим индексом в массиве ?

"M ввести с клавиатуры с помощью полосы прокрутки"
это тож нипонятно smile.gif
Наверно если максимальное число в массиве, к примеру 21, а всего в массиве 5 чисел 21. То первое максимальное число - которое нам нужно(минимальный индекс) А последний минимальный элемент-это, минимальный элемент с наибольшим индексом.
Насчет "M ввести с клавиатуры с помощью полосы прокрутки" это я уже сделал.Можете посмотреть вверху :unsure:
Мне главное узнать как сумму между первым из максимальных и последним из минимальных найти :)
 
J

Jumpy

Наверно если максимальное число в массиве, к примеру 21, а всего в массиве 5 чисел 21. То первое максимальное число - которое нам нужно(минимальный индекс) А последний минимальный элемент-это, минимальный элемент с наибольшим индексом.
Насчет "M ввести с клавиатуры с помощью полосы прокрутки" это я уже сделал.Можете посмотреть вверху :unsure:
Мне главное узнать как сумму между первым из максимальных и последним из минимальных найти :D

dim CIKL as integer 'переменная цикла
DIM MAX as integer 'сохраняет индекс максимального элемента
Dim MIN as integer 'сохраняет индекс минимального элемента
Dim SUMMA as double 'сохраняет сумму

MAX = 0
for CIKL = 0 to M 'цикл по всему массиву
if A(MAX) < A(CIKL) then 'если текущий элемент больше чем максимальный который мы нашли
MAX = CIKL 'запоминаем его индекс
end if
next CIKL

MIN = 0
for CIKL = M to 0 step -1 'крутим массив от последнего элемента до первого
if A(MIN) > A(CIKL) then 'если текущий элемент меньше чем минимальный, который мы нашли ранее
MIN = CIKL
end if
next CIKL

SUMMA = 0
if MAX < MIN then 'если максимальный элемент стоит до минимального
for CIKL = MAX to MIN
SUMMA = SUMMA + A(CIKL) 'суммуриуем
next CIKL
end if

if MAX > MIN then 'если максимальный элемент стоит после минимального
for CIKL = MIN to MAX
SUMMA = SUMMA + A(CIKL) 'суммуриуем
next CIKL
end if

if MAX = MIN then
call msgbox ("походу весь массив состоит из одинаковых элементов, сумма элементов равна: " & A(0)*M )
else
call msgbox("Сумма нужных нам элементов = " & SUMMA)
end if

'Массив должен начинаться с нулевого элемента!!
'Если он начинается с 1, то надо заменить нолики на единички :)
'



Я вообще плохо понимаю Visual basic...=(((
помогите,пожалуста решить!
Цена 60 экземпляров первого тома и 75 экземпляров второго тома составляет 405 рублей. Однако, про 15% скидке на первый том и 10%скидки на второй том приходится платить всего 355 рублей 50 копеек. Определить цену первого и второго тома.

это точно задача на Visual Basic ?:)) Ибо задача крайне не типичная для программирования (оно по сути тут не нужно).

X = цена первого тома
Y = цена второго тома

60X + 75Y = 405
60*0.85*X + 75*0.9*Y = 355.5

60X + 75Y = 405 >> 60X = 405 - 75Y >> X = 15(27-5Y)/60

60*0.85*(15(27-5Y))/60 + 75*0.9*Y = 355.5
0.85*15*(27-5Y) + 75*0.9*Y = 355.5
344.25 - 63.75Y + 67.5Y = 355.5
3.75Y = 11.25
Y = 3

X = 15(27-5*3)/60 >> X = 15*12/60 >> X = 3

ответ 3р и первый и второй том.

ХЗ чего тут решать с помощью VB...
можно, конечно вычисления оформить, но это будет довольно смешно :)
Там точно не надо что то типа "написать программу которая будет считать стоимость 1ого и 2ого тома при различных скидках" ? или "при различной стоимости в первом и втором случае" ?

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

Guest

серьёзно такая задача=(так то я её тоже решить могу,а как в Visual basic не понятно :D

Ещё вот такая задача:

Создайте приложение, которое позволяет рисовать две различные графические фигуры , указанные в варианте:Конус и человечек.
 
J

Jumpy

серьёзно такая задача=(так то я её тоже решить могу,а как в Visual basic не понятно :unsure:

Ещё вот такая задача:

Создайте приложение, которое позволяет рисовать две различные графические фигуры , указанные в варианте:Конус и человечек.

ну попробуй так:

dim X as double 'цена первого тома
dim Y as double 'цена второго тома
dim COST1 as double 'суммарная цена первого набора
dim COST2 as double 'саммарная ценая второго набора со скидками
dim NUMBER1 as integer 'количество первых томов
dim NUMBER2 as integer 'количество вторых томов
dim SALE1 as double 'скидка на первые тома
dim SALE2 as double 'скидка на вторые тома

'задаем начальные данные
COST1 = 405
COST2 = 355.5
NUMBER1 = 60
NUMBER2 = 75
SALE1 = 0.85
SALE2 = 0.9

'number1*sale1*((cost1-number2*y)/number1) + number2*sale2*y = cost2
'number1*sale1*cost1/number1 - number1*sale1*number2*y/number1 +number2*sale2*y = cost2
'y(number2*sale2 - sale1*number2) = cost2 - sale1*cost1

y = (cost2-sale1*cost1)/(number2*sale2-sale1*number2)
x = (cost1 - number2*y)/number1

call msgbox("Цена первого тома: " & X & " , цена второго тома: " & Y)

хотя ИМХО это полный бред, задача совсем не на программирование
комментарий в три строки дан, чтобы было понятно как из этого
60*0.85*(15(27-5Y))/60 + 75*0.9*Y = 355.5
получилось это
y = (cost2-sale1*cost1)/(number2*sale2-sale1*number2)
 
G

Guest

Спасибо большое=)))Сдала на 4,5!Теперь про человечка и конус надо=(((

А как сделать,чтобы в окне сообщения наверху написать "РЕшение"?
 
J

Jumpy

Спасибо большое=)))Сдала на 4,5!Теперь про человечка и конус надо=(((

А как сделать,чтобы в окне сообщения наверху написать "РЕшение"?

call msgbox("ТЕКСТ СООБЩЕНИЯ","ЗАГОЛОВОК СООБЩЕНИЯ")

про человека и конус - не понятно чо хотят.

Какие средства по рисованию давали ?
 
G

Guest

здесь всё,что мне давали по этой лабораторной...
 

Вложения

  • 3.doc
    81 КБ · Просмотры: 208
G

Guest

Я сделала сама=)))))))Вроде всё получилось...
 
L

Lalique

а седловая точка точно есть ?
кстати там ошипка, возможен вариант - даж если седловой нет - он не выдаст сообщения :) а выведет как раз 0, 0
Я всё со своей наитупейшей задачей :ph34r: Седловая точка точно есть. А при первом варианте программы (без индексов где) выводит всегда значения равные значению А(1,1)
 
G

Guest

Аааа...я на пять сдала=)))))))))Ко вторнику дали ещё 2 задачи=(
 
L

Lalique

Jumpy,я нашла решение своей задачи через макрос. Помоги пожайлуста переделать
Код:
Option Explicit
Option Base 1

Sub mtrx()
Dim R As Long, C As Long
Dim R1 As Long
Dim m As Long, n As Long
Dim i As Long
Dim k As Long
Dim Max As Long, Min As Long

Dim MyRange As Range
Dim MyArray() As Long
Dim MaxArray() As Long

Set MyRange = Selection
R = MyRange.Rows.Count
C = MyRange.Columns.Count

ReDim MyArray(1 To R, 1 To C)
ReDim MaxArray(1 To R, 1 To R)

For n = 1 To C
R1 = R1 + 1
i = 0
For m = 1 To R
MyArray(m, n) = MyRange.Cells(m, n)

If m = 1 Then
Max = MyArray(m, n)
i = i + 1
MaxArray(R1, i) = m
Else
If MyArray(m, n) = Max Then
Max = MyArray(m, n)
i = i + 1
MaxArray(R1, i) = m
ElseIf MyArray(m, n) > Max Then
Max = MyArray(m, n)
i = 1
MaxArray(R1, i) = m
For i = 2 To UBound(MaxArray)
MaxArray(R1, i) = 0
Next i
i = 1
End If
End If
Next m
Next n

i = 1
R1 = 0


For m = 1 To R + 1
If m > R Then GoTo EndOfRow
If MaxArray(i, m) = 0 Then
EndOfRow:
i = i + 1
If i > MyRange.Columns.Count Then Exit For
m = 1
End If

Min = MyArray(MaxArray(i, m), i)

For n = 1 To C
If Min > MyArray(MaxArray(i, m), n) Then k = k + 1
Next n

If k = 0 Then MyRange.Cells(MaxArray(i, m), i).Interior.ColorIndex = 3
k = 0
Next m

End Sub
 
G

Guest

Создайте приложение, которое позволяет выбрать одну из двух пред-ложенных фигур (точка, окружность) и их количество (один, два), а также рисовать их. Выбор фигуры должен осуществляться с помощью кнопок- переключателей, которые объединены в рамку. Рисование фигур должно быть выполнено в графическом окне.

Вот такую надо очень....=((
 
J

JIOX

помогите срочно!
В двухмерном цирковом массиве из n строк и м столбцов Найти произведение количества Положит. элементов на количество отриц. элементов
 
E

ezh2009

умоляю помогите написать программу, решающую графически уравнение cos(2x)=1
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!