Перейти к содержимому

Фото
- - - - -

Visual Basic 6.0


  • Вы не можете создать новую тему
  • Please log in to reply
38 ответов в этой теме

#1 m4dne55

m4dne55
  • Пользователь
  • 12 сообщений

Отправлено 27 ноября 2009 - 15:02

Нужно написать 3 маленькие программы на VB - задание по информатике. Кто возмется? Естественно на возмездной основе.

Задача 1
Существует теория, которая утверждает, что каждый человек с момента своего рождения живет, испытывая на себе действие трех синусоидальных биоритмов: физического, эмоционального и интеллектуального.
Физический биоритм имеет период 23 дня, эмоциональный – 28 дней, а интеллектуальный – 33 дня.
Особо непрятными для человека являются так называемые критические точки, когда та или иная синусоида, возрастая, проходит через свое нулевое значение.
Напишите программу, которая выдает три числа, - количество суток, оставшихся до ближайших критических точек всех трех биоритмов.
Замечания: Вам придется работать с данными формата Date;
количество дней – это разность между текущей датой и датой рождения, которая должна вводится.




Задача 2
Напишите следующую программу: ввести три числа и вычислить разность между максимальным и минимальным числом. Результат вывести на экран.
Замечание: при вводе числа следует проверять число-не число.




Задача 3
Напишите программу для решения следующей задачи:
Индийский раджа, которому преподнесли в подарок шахматную игру, захотел наградить изобретателя и разрешил ему выбрать награду самому. «Дай мне, - сказал мудрец, - только несколько пшеничных зерен, причем ровно столько, сколько поместится на шахматной доске, если ты на первую клетку положишь одно зернышко, на вторую клетку два зернышка и так далее: на каждую клетку вдвое больше, чем на предыдущую».
Сколько тонн зерна требуется, чтобы выполнить эту просьбу?
Информация: шахматная доска имеет 64 поля;
тонна пшеницы содержит 4 000 000 зерен
  • 0

#2 NDK

NDK
  • Пользователь
  • 269 сообщений
  • Откуда:TLN

Отправлено 29 ноября 2009 - 16:10

в третьей задаче что нужно вводить - выводить? как оформить ответ, так скажем?
  • 0
IAXB

#3 m4dne55

m4dne55
  • Пользователь
  • 12 сообщений

Отправлено 29 ноября 2009 - 17:09

в третьей задаче что нужно вводить - выводить? как оформить ответ, так скажем?



Просто кнопка "посчитать" и вывод в тоннах. Можно количество зерен в скобках тоже.
  • 0

#4 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 30 ноября 2009 - 09:45

Можно количество зерен в скобках тоже.

:D Сразу видно, человек сам не сдаст. Вычисление такого числа даже лишь в Int64 - невозможно, т.к. оно превышает максимальное значение для этого типа данных. Операции же со столь огромными числами посредсвом Int32 выходят далеко за рамки университетской программы. Вывода в тоннах будет более чем достаточно.
Общитался, влаззиит в Int64 :)

Сообщение изменено: Vitalts (30 ноября 2009 - 10:10 )

  • 0

#5 m4dne55

m4dne55
  • Пользователь
  • 12 сообщений

Отправлено 30 ноября 2009 - 12:39

:D Сразу видно, человек сам не сдаст. Вычисление такого числа даже лишь в Int64 - невозможно, т.к. оно превышает максимальное значение для этого типа данных. Операции же со столь огромными числами посредсвом Int32 выходят далеко за рамки университетской программы. Вывода в тоннах будет более чем достаточно.
Общитался, влаззиит в Int64 :)



Сдам. Преподу достаточно получить программы по майлу, врятли будет много вопросов задавать)
  • 0

#6 m4dne55

m4dne55
  • Пользователь
  • 12 сообщений

Отправлено 06 января 2010 - 22:51

Тема очень актуальна. Кто возмется?
  • 0

#7 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 00:19

m4dne55, по чем рыбка?
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#8 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 09:29

2^64 = 18446744073709551616 / 4000000 = 4611686018427,387904 и вправду мудрец ... блин.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#9 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 07 января 2010 - 10:11

2^64 - 1 если быть точным :lol:
  • 0

Вначале делаю, потом думаю :)


#10 Junk1e

Junk1e
  • Постоялец
  • 793 сообщений
  • Откуда:Тарту

Отправлено 07 января 2010 - 10:21

Аккурат в int64 влазит:) Очень изввестная задачка, кстате ;)
На делфях могу написать:D

Сообщение изменено: Junk1e (07 января 2010 - 10:23 )

  • 0

#11 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 10:31

2^64 - 1 если быть точным :lol:

Ты хоть понял что написал? :D

не слушайте меня ...

Сообщение изменено: Инкуб (07 января 2010 - 12:48 )

  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#12 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 января 2010 - 10:31

Аккурат в int64 влазит:D Очень изввестная задачка, кстате ;)

Влазить-то влазит, но ведь и на int16 она когда-то решалась. Инт64 лишь сильно облегчает решение данной задачи. Но решать все же рекомендую используя инт32, чуть сложнее, но это и к лучшему, с этим расчетом задача и давалась.
  • 0

#13 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 10:48

Влазить-то влазит, но ведь и на int16 она когда-то решалась. Инт64 лишь сильно облегчает решение данной задачи. Но решать все же рекомендую используя инт32, чуть сложнее, но это и к лучшему, с этим расчетом задача и давалась.


Вот никогда не думал что в VB есть int16 , int64 , int32 ...

Сообщение изменено: Инкуб (07 января 2010 - 12:48 )

  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#14 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 января 2010 - 10:51

Вот никогда не думал что в VB есть int16 , int64 , int32

А я не конкретно о VB, а в общем. Есть здесь и те кто Дельфит (не будем показывать пальцем :)

Сообщение изменено: Vitalts (07 января 2010 - 10:51 )

  • 0

#15 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 10:53

Vitalts, тут есть и те кто асемблит, явит, дотнетит и так далее ... но тема то совсем в другом. Решить надо на VB. :D
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#16 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 января 2010 - 10:56

Из справки по VBA (VB нету)
Byte variables are stored as single, unsigned, 8-bit (1-byte)
Integer variables are stored as 16-bit (2-byte)
Long (long integer) variables are stored as signed 32-bit (4-byte)
  • 0

#17 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 11:03

Второе задание выглядит примерно так

Dim a(0 To 2) As Long
Dim min, max As Integer

a(0) = 5
a(1) = 7
a(2) = -3
min = max = a(0)
For i = 0 To Len(a) - 1
    If a(i) < min Then
        min = a(i)
    End If
    If a(i) > max Then
        max = a(i)
    End If
End If

Dim z As Integer
z = max - min

Писал на VBA ... но думаю прокатит и на VB
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#18 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 07 января 2010 - 11:03

Кури геометрическую прогрессию.
  • 0

Вначале делаю, потом думаю :)


#19 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 11:16

Чтение , вывод организуй сам.

1-е задание вообще сводится к нахождению наименьшее общего кратного (НОК). Что вообще проще пареной репы.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#20 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 января 2010 - 11:26

1-е задание вообще сводится к нахождению наименьшее общего кратного (НОК). Что вообще проще пареной репы.

Перечитай задание, все гораздо проще. Нахождение даты совпадения всех трех критических точек не требуеться
  • 0

#21 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 11:46

а ... ну да ... что-то тупанул с утра :D

А с другой стороны ... день когда полный писец ... более важен!
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#22 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 января 2010 - 12:25

А с другой стороны ... день когда полный писец ... более важен!

По моим скромным подсчетам на calc.exe такой день бывает раз в 58 лет. Это же 1-2 дня полного писца за всю жизнь, в такие дни, наверное, наступают писцы писцее всех писцов.

Вот, ради интереса накатал на VBA задачку про зерна на 32bit системе
  Dim ByInt As Boolean
  
  Dim zerna As Long
  Dim tonn As Double
  Dim i As Byte
  
  zerna = 1
  ByInt = True
  
  For i = 2 To 64
    If ByInt Then
      zerna = zerna * 2
    Else
      tonn = tonn * 2
    End If
    
    If ByInt And (zerna > 1073741823) Then
      tonn = zerna / 4000000
      ByInt = Not ByInt
    End If
  Next
  
  Debug.Print tonn
Ответ получаемый приведенным кодом: 2305843009213.69 тонн

Только вот VBA всю картину портит, т.к. Double - 64 bit. Тут бы turbo pascal 16-битный, да ответ к мегатоннам приводить

Сообщение изменено: Vitalts (07 января 2010 - 13:32 )

  • 0

#23 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 13:04

Akhenaton, Vitalts, :D вы правы ... тут точно прогрессия ...

Софвем выжил из ума на старости лет...

На Jave

    BigDecimal zerna = new BigDecimal("0");
    for(int i = 0; i < 64;i++) {
       zerna = zerna.add(new BigDecimal("2").pow(i));
    }
    System.out.println(zerna.divide(new BigDecimal("4000000")));

Ответ : 4611686018427.38790375

Сообщение изменено: Инкуб (07 января 2010 - 13:21 )

  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#24 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 января 2010 - 13:05

Тема очень актуальна. Кто возмется?

Млин, пропустил сей пост, думал ведь поначалу решение зарарить с пасвордом, ради прикола, а потом думаю, накуя, тема ведь забытая, а нет... Так бы не выложил. пойду-ка подотру, пока не поздно.
  • 0

#25 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 13:25

VBA

Dim zerna As Double
zerna = 0
For i = 0 To 63
  zerna = zerna + 2 ^ i
Next
MsgBox (zerna / 4000000)

Vitalts, твой код был ошибочным... :D

Сообщение изменено: Инкуб (07 января 2010 - 13:22 )

  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#26 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 января 2010 - 13:29

Vitalts, твой код был ошибочным...

И то верно, это ж я посчитал сколько тонн зерна нужно на последнюю клетку :)
  • 0

#27 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 14:11

Думаю после не долгих подсчетов раджа решил порешить мудреца, нежели отдавать ему стока зерна.

Сообщение изменено: Инкуб (07 января 2010 - 14:11 )

  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#28 Вырвиглаз

Вырвиглаз

    Убийца травы

  • Постоялец
  • 15 928 сообщений
  • Откуда:Эстония, Таллин

Отправлено 07 января 2010 - 15:34

long=byte^4. Совсем двоичную систему забыли? Как мы по-вашему на 8 битных МК считаем 32ух битные величины с плавающей точкой? Легко! Умножил, сдвинул, умножил, сдвинул и т.д. Высший байт, низший байт...
  • 0
Кто живет и грешит в Эстонии, тот опять родится в Эстонии.

#29 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 07 января 2010 - 15:39

Вырвиглаз, дыши ровно ... не нервничай. :D
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#30 Вырвиглаз

Вырвиглаз

    Убийца травы

  • Постоялец
  • 15 928 сообщений
  • Откуда:Эстония, Таллин

Отправлено 07 января 2010 - 15:47

Из справки по VBA (VB нету)
Byte variables are stored as single, unsigned, 8-bit (1-byte)
Integer variables are stored as 16-bit (2-byte)
Long (long integer) variables are stored as signed 32-bit (4-byte)

У тебя отдельной справки по VBA нету? А то у метя MSDN лежит, который 1.5Гб занимает.
  • 0
Кто живет и грешит в Эстонии, тот опять родится в Эстонии.