Предмет: Информатика,
автор: dashabog0015
Создать программу вычисления функции S для 5 пар чисел x и y. VBA
Приложения:
Аноним:
Странно. Быть знакомым с С/С++/С# и не знать Бейсик... какое-то однобокое образование
Я видел синтаксис Бейсика. Он ужасен...
По мне, так синтаксис С/С++ куда ужаснее
Собственно, скоро я выложу код, посмотрите
Ну С/C++ хардкорные языки, не спорю. Зато C# отличная штука, напичканная синтаксическим сахаром. Никаких тебе указателей (хотя можно врубить unsafe mode)
Нет, отличная штука в качестве первого языка - не C#, а PascalABC.NET. Это C#, обернутый в паскалевский синтаксис и щедро сдобренный сахарком на основе Haskell и Python (чтобы они нос не драли).
A VBA - это язык, у которого интерфейс - листы Excel. И это прекрасный интеллектуальный интерфейс!
Вон, одна команда a = Range("A1:B5") считала данные и листа и превратила их в двумерный массив.
Обратно тоже работает.
Можно прямо из VBA сортировки делать, листы оформлять, графики строить... вывалить текст в документ Word и там сформатировать программно...
Ответы
Автор ответа:
1
Sub MyTest()
Dim a As Variant, i As Integer
a = Range("A1:B5")
For i = 1 To 5
Cells(i, 3) = S(a(i, 1), a(i, 2))
Next i
End Sub
Function S(ByVal x As Double, ByVal y As Double) As Double
Dim i As Integer
If x < y Then
S = 0
For i = 1 To 20
S = S + x ^ i * y ^ (i + 1)
Next i
ElseIf x > y Then S = (x * y) ^ 2
Else: S = x * x + y * y
End If
End Function
x - по колонке A1:A5, y - по колонке B1:B5, результат в C1:C5
Dim a As Variant, i As Integer
a = Range("A1:B5")
For i = 1 To 5
Cells(i, 3) = S(a(i, 1), a(i, 2))
Next i
End Sub
Function S(ByVal x As Double, ByVal y As Double) As Double
Dim i As Integer
If x < y Then
S = 0
For i = 1 To 20
S = S + x ^ i * y ^ (i + 1)
Next i
ElseIf x > y Then S = (x * y) ^ 2
Else: S = x * x + y * y
End If
End Function
x - по колонке A1:A5, y - по колонке B1:B5, результат в C1:C5
Приложения:
а по-другому нельзя?примерно так
Sub Zad2()
Dim x As Single, y As Single, i As Integer, n As Integer
Dim s As Single
n = 0
s = 0
y = 5
For x = 1 To 5
If x < y Then
For i = 1 To 20
s = s + (x ^ i) * (y ^ (i + 1))
Cells(9 + n, 3) = s
Next i
End If
If x > y Then
s = (x ^ 2) * (y ^ 2)
Cells(10 + n, 3) = s
End If
If x = y Then
s = (x ^ 2) + (y ^ 2)
Cells(11 + n, 3) = s
End If
y = y - 1
Next x
n = n + 1
Cells(8 + n, 2) = y
Cells(8 + n, 1) = x
Cells(8, 1) = "x="
Cells(8, 2) = "y="
Cells(8, 3) = "s="
End Sub
Sub Zad2()
Dim x As Single, y As Single, i As Integer, n As Integer
Dim s As Single
n = 0
s = 0
y = 5
For x = 1 To 5
If x < y Then
For i = 1 To 20
s = s + (x ^ i) * (y ^ (i + 1))
Cells(9 + n, 3) = s
Next i
End If
If x > y Then
s = (x ^ 2) * (y ^ 2)
Cells(10 + n, 3) = s
End If
If x = y Then
s = (x ^ 2) + (y ^ 2)
Cells(11 + n, 3) = s
End If
y = y - 1
Next x
n = n + 1
Cells(8 + n, 2) = y
Cells(8 + n, 1) = x
Cells(8, 1) = "x="
Cells(8, 2) = "y="
Cells(8, 3) = "s="
End Sub
Да можно по-разному, но почему я должен вдумываться в Ваш код и искать там ошибки, дав свой?
Я не прошу искать ошибки. Мне нужен код такой, как у меня, но правильный.
Тогда надо было его привести в вопросе и попросить исправить
Либо, написать по его образцу. А так, извините, получить решение, а потом начинать вместо "спасибо" свои хотелки демонстрировать - это некрасиво (я выбрал слово помягче).
Похожие вопросы
Предмет: Английский язык,
автор: gucmanveronika
Предмет: Алгебра,
автор: kostomarovvitalik153
Предмет: Литература,
автор: victoriaelcova
Предмет: История,
автор: Styx98
Предмет: Алгебра,
автор: Taya12345679