Проблема такая: надо подсчитать зарплату, в функции должно быть две переменные - начислено(N) и налог(x), я составил формулу но она выводит тоже число что и указанно в переменной "N", где ошибка? вот текст:
[vba]
Код
Public Function Zarplata(N%, x%) Dim q, w, e, r For x = 0.12 To 0.14999 q = x * N Next x For x = 0.15 To 0.19999 w = x * N Next x For x = 0.2 To 0.24999 e = x * N Next x For x = 0.25 To 0.1 r = x * N Next Select Case N Case Is <= 3000 Zarplata = N - q Case 3000 To 7000 Zarplata = N - w Case 7000 To 9000 Zarplata = N - e Case Is > 9000 Zarplata = N - r End Select End Function
[/vba] [admin] Оформляйте коды тегами![/admin]
Проблема такая: надо подсчитать зарплату, в функции должно быть две переменные - начислено(N) и налог(x), я составил формулу но она выводит тоже число что и указанно в переменной "N", где ошибка? вот текст:
[vba]
Код
Public Function Zarplata(N%, x%) Dim q, w, e, r For x = 0.12 To 0.14999 q = x * N Next x For x = 0.15 To 0.19999 w = x * N Next x For x = 0.2 To 0.24999 e = x * N Next x For x = 0.25 To 0.1 r = x * N Next Select Case N Case Is <= 3000 Zarplata = N - q Case 3000 To 7000 Zarplata = N - w Case 7000 To 9000 Zarplata = N - e Case Is > 9000 Zarplata = N - r End Select End Function
[/vba] [admin] Оформляйте коды тегами![/admin]DemonNik
Покажите формулу, по которой считаете зарплату. Зачем второй аргумент. Процент налога определяется от размера зарплаты. Может быть так подойдет? [vba]
Код
Public Function Zarplata(N&) Dim x! Select Case N Case Is <= 3000: x = 0.12 Case 3000 To 7000: x = 0.15 Case 7000 To 9000: x = 0.2 Case Is > 9000: x = 0.25 End Select Zarplata = N - N * x End Function
[/vba]
Покажите формулу, по которой считаете зарплату. Зачем второй аргумент. Процент налога определяется от размера зарплаты. Может быть так подойдет? [vba]
Код
Public Function Zarplata(N&) Dim x! Select Case N Case Is <= 3000: x = 0.12 Case 3000 To 7000: x = 0.15 Case 7000 To 9000: x = 0.2 Case Is > 9000: x = 0.25 End Select Zarplata = N - N * x End Function
Во первых, тип integer - целые числа. Для финансов используйте [vba]
Код
N As Currency, x As Currency
[/vba] Во вторых, если шаг не указан, х меняется с шагом 1. 0,12 + 1 = 1,12. Так что никакого цикла тут нет. [vba]
Код
For x = 0.12 To 0.14999 q = x * N Next x
[/vba] В третьих, в каждом таком блоке х принимает новое фиксированное значение, так что использование этой переменной в качестве аргумента функции совершенно не понятно. В четвертых, во избежание конфликта пишите условия так [vba]
Код
Zarplata = N - q Select Case N Case Is <= 7000 Zarplata = N - w Case Is <= 9000 Zarplata = N - e Case Else Zarplata = N - r End Select
[/vba]
Во первых, тип integer - целые числа. Для финансов используйте [vba]
Код
N As Currency, x As Currency
[/vba] Во вторых, если шаг не указан, х меняется с шагом 1. 0,12 + 1 = 1,12. Так что никакого цикла тут нет. [vba]
Код
For x = 0.12 To 0.14999 q = x * N Next x
[/vba] В третьих, в каждом таком блоке х принимает новое фиксированное значение, так что использование этой переменной в качестве аргумента функции совершенно не понятно. В четвертых, во избежание конфликта пишите условия так [vba]
Код
Zarplata = N - q Select Case N Case Is <= 7000 Zarplata = N - w Case Is <= 9000 Zarplata = N - e Case Else Zarplata = N - r End Select
Ну да эта формула и есть, просто у меня по заданию, сделать это через две переменные, чтобы начисленные деньги без налога и процент налога брались с листа, лист я прикрепил к первому сообщению
Ну да эта формула и есть, просто у меня по заданию, сделать это через две переменные, чтобы начисленные деньги без налога и процент налога брались с листа, лист я прикрепил к первому сообщениюDemonNik
да циклы для того чтобы учесть ограничения ну как мне объяснили, нужно чтобы переменные брались с листа а ограничения были заложены уже в программе
да циклы для того чтобы учесть ограничения ну как мне объяснили, нужно чтобы переменные брались с листа а ограничения были заложены уже в программеDemonNik
Сообщение отредактировал DemonNik - Воскресенье, 24.02.2013, 17:20
Конечно зарплата до 922337203685477,5807 лучше, чем до 2147483647, но мне и столько не платили 8 байт под скромную зарплату российского служащего слишком много.
Цитата (AlexM)
да циклы для того чтобы учесть ограничения
Мне кажется, что вы с преподавателем не поняли друг друга.
Цитата (RAN)
почему зарплата лонгом
Конечно зарплата до 922337203685477,5807 лучше, чем до 2147483647, но мне и столько не платили 8 байт под скромную зарплату российского служащего слишком много.
Цитата (AlexM)
да циклы для того чтобы учесть ограничения
Мне кажется, что вы с преподавателем не поняли друг друга.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Воскресенье, 24.02.2013, 17:39
Я понял. Я никогда не сталкивался с финансовыми расчетами. Буду иметь ввиду. N - это зарплата, без учета налогов. Даже в СССР зарплату давали с точностью рубль, а сейчас точность тысяча. Исключение пенсии.
Я понял. Я никогда не сталкивался с финансовыми расчетами. Буду иметь ввиду. N - это зарплата, без учета налогов. Даже в СССР зарплату давали с точностью рубль, а сейчас точность тысяча. Исключение пенсии. AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.