Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Titul_i_zadanie_na_KP (2).docx
Скачиваний:
2
Добавлен:
21.09.2019
Размер:
303.48 Кб
Скачать

Ошибки отображения Excel

Скриншот Microsoft Excel 2007, показывающий ошибку отображения 65535

22 сентября 2007 года было сообщено, что в определённых ситуациях Excel 2007 будет показывать неправильные результаты. В частности, для тех пар чисел, чье произведение равно 65535 (например, 850 и 77,1), Excel отобразит в качестве итога 100000. Это происходит с примерно 14,5 % таких пар. Кроме того, если к результату добавить единицу, Excel выведет итог 100001. Однако, если вычесть из итога единицу, на дисплее отобразится правильный результат 65534. (Также, если итог умножить или разделить на 2, будут отображены 131070 и 32767,5 соответственно.)

Microsoft сообщила в блоге Microsoft Excel, что проблема существует в отображении шести конкретных значений с плавающей запятой между 65534,99999999995 и 65535 и шести значений между 65535,99999999995 и 65536 (не включая границ). Любые расчеты, результат которых равен одному из двенадцати значений, будут отображаться неправильно. Фактические данные, хранящиеся и передающиеся в другие ячейки, верны, неверно лишь отображение значения. Ошибка появилась в Excel 2007 и не существует в предыдущих версиях. 9 октября 2007 года Microsoft выпустила патч, исправляющий проблему. Он вошёл и в состав исправлений Service Pack 1.

Практическая часть

Программа «Пятнашки»:

Пятна́шки — популярная головоломка, придуманная в 1878 году Ноем Чепмэном. Представляет собой набор одинаковых квадратных костяшек с нанесёнными числами, заключённых в квадратную коробку. Кликая левой кнопкой мыши на кнопку, которая располагается рядом с пустой кнопкой (не по диагонали), она будет заменена на пустую. Цель игры — перемещая костяшки по коробке (в нашем случае кнопки по экрану) добиться упорядочивания их по номерам.

Программа состоит из 3-х основных функций: произвольная расстановка чисел на кнопки, взаимодействие пользователя с кнопками, проверка результата выполненных действий. На языке программирования VBA программный код выглядит так:

Private Sub CommandButton1_Click()

buttonclick

End Sub

Private Sub CommandButton2_Click()

buttonclick

End Sub

...

Private Sub CommandButton16_Click()

buttonclick

End Sub

Private Sub CommandButton17_Click()

' раставляем элементы в случайном порядке

Randomize

' собираем в массив уникальные числа

Dim arr(16) As Integer

For j = 0 To 14

Do

' получаем случайное число

temp = Int((15 * Rnd) + 1)

' проверяем что оно уникальное

Loop While (arr(temp) = 1)

' указываем что число уже используется

arr(temp) = 1

' рисуем число на кнопке

UserForm1.Controls(j).Caption = temp

'

Next j

' очищаем последнюю кнопку

UserForm1.Controls(15).Caption = ""

End Sub

Private Function proverka() As Boolean

Dim flag As Boolean

' флаг определяющий успешность сборки головоломки

flag = True

' проверяем только 15 кнопок, поскольку 16я не имеет значения

For j = 0 To 14

' кнопки считаем от 0, но значения идут от 1

' добавляем 1 к проверяемому значению

flag = flag And j + 1 = Val(UserForm1.Controls(j).Caption)

' если на любом шаге проверка не прошла, выходим

If (Not flag) Then

Exit For

End If

Next j

proverka = flag

End Function

Private Function buttonclick() As Boolean

' обрабатываем клик на кнопке

' если соседняя кнопка пустая, меняем значения местами

' берём активную кнопку

Index = UserForm1.ActiveControl.Name

' определяем её индекс в диапазоне 0..15

Index = Val(Replace(Index, "CommandButton", "")) - 1

' вычисляем строчку и колонку в матрице

c = Int(Index / 4)

r = Index - c * 4

' индекс от 0..15 кнопки с пустым значением

' если в этой переменной -1, значит пустой кнопки мы не нашли

newIndex = -1

If (r >= 0) And (c >= 0) And (r < 4) And (c < 4) Then

' выбираем кнопку над текущей

If (c - 1 >= 0) Then

If (Val(UserForm1.Controls((c - 1) * 4 + r).Caption) < 1) Then

newIndex = (c - 1) * 4 + r

End If

End If

' выбираем кнопку слева от текущей

If (newIndex = -1 And r - 1 >= 0) Then

If (Val(UserForm1.Controls(c * 4 + (r - 1)).Caption) < 1) Then

newIndex = c * 4 + (r - 1)

End If

End If

' выбираем кнопку под текущей

If (newIndex = -1 And c + 1 <= 3) Then

If (Val(UserForm1.Controls((c + 1) * 4 + r).Caption) < 1) Then

newIndex = (c + 1) * 4 + r

End If

End If

' выбираем кнопку справа от текущей

If (newIndex = -1 And r + 1 <= 3) Then

If (Val(UserForm1.Controls(c * 4 + r + 1).Caption) < 1) Then

newIndex = c * 4 + r + 1

End If

End If

End If

' если пустая кнопка найдена, переносим значение на неё

If (newIndex > -1) Then

UserForm1.Controls(newIndex).Caption = UserForm1.ActiveControl.Caption

UserForm1.ActiveControl.Caption = ""

End If

' проверяем, выиграл ли игрок

If (proverka()) Then

MsgBox ("Чётко! Умеешь! Могёшь!")

End If

End Function

Private Sub UserForm_Click()

End Sub

Блок-схема

начало

Кнопка «Перемешать»

расставляем элементы в случайном порядке

собираем в массив уникальные числа

Для j = 0 To 14

получаем случайное число

проверяем что оно уникальное

указываем что число уже используется

рисуем число на кнопке

Next j

очищаем последнюю кнопку

конец

Проверка

начало

flag = True

For j = 0 To 14

добавляем 1 к проверяемому значению

Not flag

да

нет

Next j

Exit For

конец

К

начало

обрабатываем клик на кнопке, если соседняя кнопка пустая, меняем значения местами

берём активную кнопку

определяем её индекс в диапазоне 0..15

лик на кнопке

берём активную кнопку определяем её индекс в диапазоне 0..15

c = Int(Index / 4)

r = Index - c * 4

индекс от 0..15 кнопки с пустым значением,

если в этой переменной -1, значит пустой кнопки мы не нашли

newIndex = -1

r >= 0 and c >= 0 and

r < 4 and c < 4

выбираем кнопку сверху от текущей

выбираем кнопку слева от текущей

Выбираем кнопку снизу от текущей

выбираем кнопку справа от текущей

пустая кнопка найдена, переносим значение на неё

проверка

HAPPY WINS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1111111111111

конец

Виды окон и формы

Начальный вид:

С помощью кнопки, показанной ниже, пользователь вызывает интерфейс, с которым ему придётся взаимодействовать

Gameplay:

П ользовательская форма состоит из девушки в правой стороне экрана, радующей глаз , кнопок с цифрами , кнопки, при нажатии на которую цифры меняют своё местопол ожение в произвольном порядке .

При выполнении задания (восстановлении последовательности чисел) на экране появляется одобрительная надпись, которая сводит все 50-тичасовые муки, вызванные бесконечными тыками мышкой в экран, на нет и ты горд собой .

Список используемой литературы:

  1. Колесников Р. Excel (русифицированная версия). - Киев: Издательская группа BHV,.

  2. Руководство пользователя. Microsoft Windows. - Neunkirchen: Buhl-Data-Service Microsoft Corporation, .

  3. Рассел Борланд. Эффективная работа с Microsoft Word . - СПб: Питер.

  4. Материалам эхоконференции RU.EXCEL Collected by Kirienko Andrew, 2:5020/239.21@fidonet

  5. Англо-русский словарь по программированию и информатике (с толкованиями). - М.: Рус. яз.,

  6. http://www.microsoft.ru/main.html

  7. http://www.microsoft.com/officefreestuff/excel

  8. http://nsvrv.ziet.zhitomir.ua/bmu/Sppp/index.html

  9. http://members.aol.com/gjlinker/projects/oraxcel

  10. http://www.infoart.ru:8000/it/book/russ_red/excel5/content.htm

  11. http://www.infoart.ru:8000/it/book/russ_red/excel5/intro.htm

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]