PDA

Просмотр полной версии : Допоможіть з масивом у Visual Basic



іван
12.12.2013, 00:47
Потрібно зробити програму і написати контрольний приклад. Вдячний за допомогу

165542

serg5791
12.12.2013, 19:24
Только на Visual Basic?
Могу сделать на Delphi.

іван
12.12.2013, 19:28
Тільки бейсік, не можу зрозуміти, як порахувати суму під коренем

serg5791
12.12.2013, 19:50
На Паскале как то так
Ввод k, Y[]

b:=0;
for i:=1 to k do
begin
b:=b+y[i];
end;
b:=b/k;
z:=0;
for i:=1 to k do
begin
z:=z+(b-y[i])*(b-y[i])/k;
end;
z:=sqrt(z);

Вывод b, Z

іван
12.12.2013, 20:20
а ось ця сума? не розумію навіщо її там
165615

як в контрольному прикладі це виглядає?

serg5791
12.12.2013, 20:29
Это ведь условия задачи заданные?
В рамках цикла (границы begin end) суммируем значения выражения .
Потом из всей суммы вычисляем квадратный корнень.
А зачем это к инициатору задачи.
Видимо цель обучение, а не решение практической задачи :(.

іван
12.12.2013, 20:50
вийшло якось так
165617

serg5791
12.12.2013, 21:01
вийшло якось так

2 балла по пятибальной шкале в дневник.
Проверка IF перед прибавлением никому не нужна (это ведь не деление. На ноль делить нельзя, а прибавлять, отнимать, умножать можно). Не увидел два оператора Next символизирующие конец цикла.
И ошибка со скобками в вычиcление Z.
А вообще Basic забыл лет 10 назад, может че ни так.

іван
12.12.2013, 21:07
Private Sub Command1_Click()
Const k = 6
Dim y(1 To k) As Integer
Dim i As Integer
Dim b As Single
Dim z As Single
b = 0
For i = 1 To k
y(i) = Val(InputBox(i, "Ââåñòè åëåìåíò y(i): "))
Print y(i)
Next i
For i = 1 To k Step 2
If y(i) <> 0 Then
b = b + y(i)
End If
b = b / k
Next i
z = 0
For i = 1 To k Step 2
If y(i) <> 0 Then
z = z + (((b - y(i)) ^ 2) / k)
End If
z = Sqr(z)
Next i
MsgBox ("÷èñëî b = " + CStr(b) + Chr(13) + ("×èñëî Z = " + CStr(z)))
End Sub

serg5791
12.12.2013, 21:15
Next два раза добавили не там.
b=b/k должно быть вне цикла.
z=sqr(z) должно быть вне цикла.
if в мусорку

іван
12.12.2013, 21:24
число b рахує не правильно
165618

serg5791
12.12.2013, 21:34
число b рахує не правильно

В 8 посту погорячился, не 2 бала, а 2---.
Зачем писал STEP 2 в цикле for?
Убери фигню. У тебя берет y[1] потом y[3] потом y[5].
P.S. Надеюсь не на программиста учишся?

іван
12.12.2013, 21:35
ні слава Богу)) на переробці полімерів і композиційних матеріалів

- - - Добавлено - - -

ура) b рахує, зараз для z допишу приклад, дуже дякую.

serg5791
12.12.2013, 21:42
Химик. И то хорошо, нужная специальность.
У меня на работе (инженер-механик, расчетчик) навыки программирования позволяют сократить нудные однообразные расчеты и выкроить время на хобби без воплей начальства.

іван
12.12.2013, 21:59
не спорю, якщо б я колись до університету вчив інформатику то це було би добре.

не можу порахувати приклад до z, не таке число виходить (9,66), а в програмі 4,13

serg5791
12.12.2013, 22:17
не спорю, якщо б я колись до університету вчив інформатику то це було би добре.

не можу порахувати приклад до z, не таке число виходить (9,66), а в програмі 4,13
4.139 это правильный ответ, проверил по калькулятору.

Совет проверяйте на удобных для ручного счета данных.
Не обязательно сразу K=6 брать для тестирования программы. Возьмите K=3.
И не ообязательно задавать такие сложные Y[i]. Возьмите например 2 2 2
Или 1 2 3.
Оставте сложные вычисления компьютеру, а проверяйте на простых.
Среднее арифметическое будет b=2 и это можно посчитать без калькулятора.
При первом варианте Y[i] должен быть z=0 нулевой. Тоже без калькулятора понятно.
При втором варианте корень из 1/3+0+1/3=0.816

іван
12.12.2013, 22:37
Все рівно не можу зрозуміти як записати. Якщо не складно, напишіть для k = 6

serg5791
12.12.2013, 22:58
Все рівно не можу зрозуміти як записати. Якщо не складно, напишіть для k = 6
В таких случаях советую оложить на свежую голову. Ну ладно.
b=3.833 вопросов нет?
Сумма z составляется из 0,5599815+0,0046481666666667+3,8929815+1,671648166 666667+8,56815+2,444816666666667=17.141
Корень из этого безобразия 4.14.
Записывайте операции на бумажке, это тоже иногда помогает. Если программа считает правильно на простых данных, то она будет считать правильно и на сложных (чудес не бывает).

іван
12.12.2013, 23:12
Справді на свіжу голову краще, ще раз дякую за допомогу.

FusSheva
17.12.2013, 17:40
Потрібно зробити програму і написати контрольний приклад. Вдячний за допомогу

Попросил своего друга из Днепра помочь. Дал ему условия из первого поста.
Он скинул мне полностью готовое решение.

Держи теперь ты его:

166055

іван
18.12.2013, 00:47
Дякую)

FusSheva
18.12.2013, 00:53
Благодарность передам Neo из Днепропетровска.