Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / задание с массивом. нужна помощь / 17 сообщений из 17, страница 1 из 1
27.08.2011, 19:49
    #37414810
Maximvlz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
Друзья, необходима небольшая помощь. Есть задание, я его решил как смог, учитель говорит, что не правильно,. Пожалуйста помогите найти ошибку или возможно предложите свой вариант решения. Ниже собственно само задание и решение мое. Заранее спасибо!
Задание. Написать программу, которая сначала вводит n чисел в одномерный массив, а затем определяет каких чисел в массиве больше, положительных или отрицательных.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private x( 1  To  50 ) As Single
Private i As Integer
Private n, if As Single
Private Sub Command1_click()
n=Val(Text1.Text)
For i =  1  To n
x (i) = InputBox("x("&;&")=", x(i))
List1.Add Item x(i)
Next i
End Sub
Private Sub Command2.Click()
Dim pp, oo As Single
For i =  1  To n
if x (i) >  0  Then pp=pp +  1 
End if
Next i
if x (i) <  0  Then oo=oo +  1 
End If
If oo>pp Then Print "Отрицательных больше"
If pp=oo Then Print "Количество отрицат и полож равно"
If pp>oo Then Print "Положительных больше"
End Sub.
...
Рейтинг: 0 / 0
27.08.2011, 20:37
    #37414823
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
Тут куча ошибок вот все исправлено

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private x( 1  To  50 ) As Single
Private i As Integer
Private n As Integer
Private Sub Command1_click()
    n = Val(Text1.Text)
    For i =  1  To n
        x(i) = InputBox("Введите x=")
        List1.AddItem x(i)
    Next i
End Sub

Private Sub Command2_Click()
    Dim pp, oo As Integer
    pp = oo =  0 
    For i =  1  To n
        If x(i) >  0  Then pp = pp +  1 
        If x(i) <  0  Then oo = oo +  1 
    Next i
    If oo>pp Then Print "Отрицательных больше"
    If pp=oo Then Print "Количество отрицат и полож равно"
    If pp>oo Then Print "Положительных больше"
End Sub

...
Рейтинг: 0 / 0
27.08.2011, 20:45
    #37414824
Maximvlz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
bac, спасибо!
...
Рейтинг: 0 / 0
27.08.2011, 23:19
    #37414896
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
bacвсе исправленоАга, как винда новой версии, старые ошибки исправлены, новые внесены
проверять-то хотя бы правильность работы кто будет?
Код: plaintext
pp = oo =  0 
и чему будет равна переменная pp в результате этого выражения и правильно ли будет выведен результат?
...
Рейтинг: 0 / 0
28.08.2011, 09:59
    #37414964
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
Shocker.Proпроверять-то хотя бы правильность работы кто будет?
Код: plaintext
pp = oo =  0 
и чему будет равна переменная pp в результате этого выражения и правильно ли будет выведен результат?

Конечно все проверил: pp равно 0. Могу прислать проект.
...
Рейтинг: 0 / 0
28.08.2011, 10:02
    #37414968
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
bacКонечно все проверил: pp равно 0. Могу прислать проект
давай-давай, присылай

(ЗЫ: это тебе не C++)
...
Рейтинг: 0 / 0
28.08.2011, 10:12
    #37414971
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
bacShocker.Proпроверять-то хотя бы правильность работы кто будет?
Код: plaintext
pp = oo =  0 
и чему будет равна переменная pp в результате этого выражения и правильно ли будет выведен результат?

Конечно все проверил: pp равно 0. Могу прислать проект.

Верно - прошу прощения. С++ дает себя знать! В выражении pp сначала true, потом в первом сложении 0, т.к. идет преобразование true в -1.


Код: plaintext
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.
26.
Option Explicit
Private x( 1  To  50 ) As Single
Private i As Integer
Private n As Integer

Private Sub Command1_click()
    n = Val(Text1.Text)
    For i =  1  To n
        x(i) = InputBox("Введите x=")
        List1.AddItem x(i)
    Next i
End Sub

Private Sub Command2_Click()
    Dim oo As Integer
    Dim pp As Integer
    pp = oo =  0 
    For i =  1  To n
        If x(i) >  0  Then pp = pp +  1 
        If x(i) <  0  Then oo = oo +  1 
    Next i
    If oo>pp Then Print "Отрицательных больше"
    If pp=oo Then Print "Количество отрицат и полож равно"
    If pp>oo Then Print "Положительных больше"
End Sub


PS Shocker.Pro Как всегда точен!!!
...
Рейтинг: 0 / 0
28.08.2011, 10:18
    #37414973
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
Код: plaintext
1.
2.
    pp =  0 
    oo =  0 

Вот это надо исправить
...
Рейтинг: 0 / 0
28.08.2011, 10:20
    #37414975
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
bac
Код: plaintext
1.
2.
    pp =  0 
    oo =  0 

Вот это надо исправитьЗачем? Лучше просто убрать.

ЗЫ: Раз пошла такая пьянка взялись исправлять, то и это исправьте:
Код: plaintext
1.
        x(i) = InputBox("Введите x=")
        List1.AddItem x(i)
...
Рейтинг: 0 / 0
28.08.2011, 10:26
    #37414978
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
скукотищаЛучше просто убрать.скорее, не "лучше", а "можно". Я лично всегда инициализирую переменные, когда они далее используются в цикле или другим образом подразумевается их начальное значение. Это хорошо облегчает понимание программы, а иногда - конвертацию кода на другой язык :)
...
Рейтинг: 0 / 0
28.08.2011, 10:38
    #37414983
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
скукотища и это исправьте:
Код: plaintext
1.
2.
        
x(i) = InputBox("Введите x=")
List1.AddItem x(i)


Не понял тут что не так?
...
Рейтинг: 0 / 0
28.08.2011, 10:42
    #37414984
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
2 Shocker.Pro: Со стилевой поправкой полностью согласен.
А вот фразаоблегчает конвертацию кода на другой язык
поставила в тупик. Разве не во всех ...современных(?) языках переменные целого типа по умолчанию инициализируются нулём ?
...
Рейтинг: 0 / 0
28.08.2011, 10:43
    #37414985
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
bac,
нет контроля типов (или обработчика ошибок).
...
Рейтинг: 0 / 0
28.08.2011, 10:45
    #37414986
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
скукотищаРазве не во всех ...современных(?) языках переменные целого типа по умолчанию инициализируются нулём ?
В TSQL (куда мне часто приходится переводить код) это NULL, в .NET (кажется) что-то типа nothing
...
Рейтинг: 0 / 0
28.08.2011, 10:56
    #37414991
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
скукотищаbac,
нет контроля типов (или обработчика ошибок).

Что нет контроля типов - понятно. Я как-то и не задавался этой проблемой. Думаю ученикам это не надо.
И вообще мне не нравится inputBox. А значения лучше вводить через таблицу. Тогда не потребуется вводить количество.
И про положительные и отрицательный можно сообщать непосредственно после ввода значения.
...
Рейтинг: 0 / 0
28.08.2011, 12:00
    #37415020
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
ОФФ:
* скукотища посыпает голову пеплом и идёт похмеляться чтитаь мантры маны *
...
Рейтинг: 0 / 0
31.08.2011, 17:01
    #37419550
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
задание с массивом. нужна помощь
OFF> Автор: Shocker.Pro
> +


добавлю, в С++ при объявлении переменной, под неё где-то выделяется память и переменная получает значение, которое
находится в этой ячейке памяти. И это может быть совсем не ноль, а все что угодно, в том числе и ноль. Поэтому:

Задача:
Мальвина дала Буратино 3 яблока,потом забрала назад 1
Впорос:Сколько яблок осталось у Буратино?
Ответ:ХЗ.Никто не знает сколько у него яблок было до того
Мораль:ВСЕГДА инициализируйте переменные


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / задание с массивом. нужна помощь / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]