Visual Basic 6.0
#1
Отправлено 27 ноября 2009 - 15:02
Задача 1
Существует теория, которая утверждает, что каждый человек с момента своего рождения живет, испытывая на себе действие трех синусоидальных биоритмов: физического, эмоционального и интеллектуального.
Физический биоритм имеет период 23 дня, эмоциональный – 28 дней, а интеллектуальный – 33 дня.
Особо непрятными для человека являются так называемые критические точки, когда та или иная синусоида, возрастая, проходит через свое нулевое значение.
Напишите программу, которая выдает три числа, - количество суток, оставшихся до ближайших критических точек всех трех биоритмов.
Замечания: Вам придется работать с данными формата Date;
количество дней – это разность между текущей датой и датой рождения, которая должна вводится.
Задача 2
Напишите следующую программу: ввести три числа и вычислить разность между максимальным и минимальным числом. Результат вывести на экран.
Замечание: при вводе числа следует проверять число-не число.
Задача 3
Напишите программу для решения следующей задачи:
Индийский раджа, которому преподнесли в подарок шахматную игру, захотел наградить изобретателя и разрешил ему выбрать награду самому. «Дай мне, - сказал мудрец, - только несколько пшеничных зерен, причем ровно столько, сколько поместится на шахматной доске, если ты на первую клетку положишь одно зернышко, на вторую клетку два зернышка и так далее: на каждую клетку вдвое больше, чем на предыдущую».
Сколько тонн зерна требуется, чтобы выполнить эту просьбу?
Информация: шахматная доска имеет 64 поля;
тонна пшеницы содержит 4 000 000 зерен
#4
Отправлено 30 ноября 2009 - 09:45
Можно количество зерен в скобках тоже.
Общитался, влаззиит в Int64
Сообщение изменено: Vitalts (30 ноября 2009 - 10:10 )
#5
Отправлено 30 ноября 2009 - 12:39
Сразу видно, человек сам не сдаст. Вычисление такого числа даже лишь в Int64 - невозможно, т.к. оно превышает максимальное значение для этого типа данных. Операции же со столь огромными числами посредсвом Int32 выходят далеко за рамки университетской программы. Вывода в тоннах будет более чем достаточно.
Общитался, влаззиит в Int64
Сдам. Преподу достаточно получить программы по майлу, врятли будет много вопросов задавать)
#11
Отправлено 07 января 2010 - 10:31
Ты хоть понял что написал?2^64 - 1 если быть точным
не слушайте меня ...
Сообщение изменено: Инкуб (07 января 2010 - 12:48 )
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#12
Отправлено 07 января 2010 - 10:31
Влазить-то влазит, но ведь и на int16 она когда-то решалась. Инт64 лишь сильно облегчает решение данной задачи. Но решать все же рекомендую используя инт32, чуть сложнее, но это и к лучшему, с этим расчетом задача и давалась.Аккурат в int64 влазит Очень изввестная задачка, кстате
#13
Отправлено 07 января 2010 - 10:48
Влазить-то влазит, но ведь и на int16 она когда-то решалась. Инт64 лишь сильно облегчает решение данной задачи. Но решать все же рекомендую используя инт32, чуть сложнее, но это и к лучшему, с этим расчетом задача и давалась.
Вот никогда не думал что в VB есть int16 , int64 , int32 ...
Сообщение изменено: Инкуб (07 января 2010 - 12:48 )
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#17
Отправлено 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
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#19
Отправлено 07 января 2010 - 11:16
1-е задание вообще сводится к нахождению наименьшее общего кратного (НОК). Что вообще проще пареной репы.
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#22
Отправлено 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 )
#23
Отправлено 07 января 2010 - 13:04
Софвем выжил из ума на старости лет...
На 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 )
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#25
Отправлено 07 января 2010 - 13:25
Dim zerna As Double zerna = 0 For i = 0 To 63 zerna = zerna + 2 ^ i Next MsgBox (zerna / 4000000)
Vitalts, твой код был ошибочным...
Сообщение изменено: Инкуб (07 января 2010 - 13:22 )
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#27
Отправлено 07 января 2010 - 14:11
Сообщение изменено: Инкуб (07 января 2010 - 14:11 )
Верю в смерть после жизни, любовь после секса и в крем после бритья ...
#30
Отправлено 07 января 2010 - 15:47
У тебя отдельной справки по VBA нету? А то у метя MSDN лежит, который 1.5Гб занимает.Из справки по 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)