- •Главление
- •Часть 1 Решение уравнения 42
- •Практическое занятие №1 Тема: «Знакомство со средой разработки и элементами управления. Создание диалогового приложения».
- •1. Настройка среды разработки Microsoft Visual Studio 2008 при первом запуске.
- •2. Создание нового проекта.
- •3. Создание диалогового приложения.
- •3.1. Работа с мастером mfc Application Wizard. Шаг 1.
- •3.2. Работа с мастеромMfcApplicationWizard. Шаг 2. Выбор типа приложения.
- •4. Знакомство со средой разработки.
- •5.Создание диалогового окна при помощи визуальных средств разработки.
- •5.1. Знакомство с обозревателем ресурсов и окном свойств объекта. Настройка рабочего языка проектируемого приложения.
- •5.2. Работа с редактором ресурсов. Знакомство со способами удаления и размещения элементов управления в диалоговом окне.
- •5.3. Работа с окном свойств. Настройка свойств выбранных элементов управления.
- •5.4. Настройка внешнего вида диалогового окна.
- •5.5. Подготовка к работе элементов управления.
- •5.6. Выравнивание управляющих элементов и редактирование порядка переключения между элементами управления
- •6. Проверка работоспособности, компиляция и запуск программы
- •7. Связывание программного кода с элементами управления
- •7.1. Связывание переменных с элементами управления. Работа с мастером добавления новой переменной.
- •7.2. Удаление переменной, связанной с элементом управления
- •7.3. Создание обработчика события. Работа с мастером обработки событий.
- •8. Написание программного кода для выполнения вычислений.
- •9. Тестирование разработанного приложения.
- •10. Исправление ошибки, связанной сUnicode.
- •Задания для самостоятельного выполнения
- •Практическое занятие №2. Тема: «Приложения, использующие команды ветвления». Часть 1 Решение уравнения
- •Часть 2 Пример приложения, использующего операторswitch
- •Задание для самостоятельного выполнения
- •Практическое занятие №3 Тема: «Приложения, использующие команды повторения» Часть 1 Приложение, использующее циклwhile
- •Часть 2 Приложение, использующее циклdo-while
- •Часть 3 Отладка программы. Использование оператора trace
- •Приложение, использующее циклfor
- •Часть 4 Погрешность. Понятие погрешности. Проверка полученного значения на соответствие заданной точности.
- •Пример программы, вычисляющей сумму ряда
- •Задания для самостоятельного выполнения
- •Практическое занятие №4. Тема: «Вспомогательные функции. Работа с элементом управления Список(List Box)» Элемент управления «Список»
- •Добавление вспомогательной функции с помощью мастера.
- •Пример 1 Приложение, которое находит дружественные числа на заданном отрезке
- •Пример 2 Программа, которая находит заданное количество чисел, которые равны сумме квадратов двух натуральных чисел
- •Задания для самостоятельного выполнения
- •Практическое занятие №5.
- •Тема: «Работа со строками».
- •Пример 1
- •Программа, которая считывает строку символов, состоящую только из русских букв, точек и пробелов, и увеличивает длину строки, если она меньше заданной, вставляя пробелы между словами
- •Пример 2 Программа, которая считывает строку, содержащую числа, с проверкой допустимости вводимых символов и оставляет по 2 цифры после точки, удаляя остальные цифры дробной части
- •Пример 3 Программа, которая считывает строку символов и создает новую строку, заменяя заданное слово на другое.
- •Задания для самостоятельного выполнения
- •Практическое занятие №6 Тема: «Диалоговое приложение для работы с файлами»
- •6.1. Приложение, которое считывает файл посимвольно и делает ширину текста равной заданному количеству символов в строке.
- •6.2. Открытие и считывание файла. Нахождение строк, содержащих цифры. Запись нового файла
- •Задания для самостоятельного выполнения
- •Практическое занятие №7 Тема: «Однодокументное приложение для работы с файлами. Полосы прокрутки. Использование модальных диалоговых окон».
- •7.1. Простой пример однодокументного приложения для чтения текстового файла.
- •7.2. Простой пример однодокументного приложения, использующего класс документа для чтения файла и полосы прокрутки для отображения файла в окне.
- •Задания для самостоятельного выполнения
- •Практическое занятие №8 Тема: «Элементы графики. Использование мыши».
- •Задания для самостоятельного выполнения
Пример 1 Приложение, которое находит дружественные числа на заданном отрезке
"Дружественными" называются числа, каждое из которых равно сумме всех натуральных делителей другого, исключая само другое число, например, такими числами являются 220 и 284.
Создайте диалоговое приложение и спроектируйте окно как показано на рисунке.
Свяжите с окнами редактирования переменные long a и long b, а со списком -объект CListBox list.
Добавьте функцию для кнопки OK, которая будет проверять все числа на отрезке [a, b] с помощью вспомогательной функции.
Добавьте вспомогательную функцию long SumDel (long n) в класс С…Dlg. Эта функция будет находить сумму делителей числа n.
Добавьте в функии код, показанный ниже.
// Функция, которая обрабатывает нажатие кнопки OK:
void CDrugNumbersDlg::OnBnClickedOk()
{
UpdateData();
long j;
CString str;
list.ResetContent(); // Очищаем список
// Нам нужно найти два числа
for (int i = a; i<=b; ++i) // берем очередное число на отрезке [a, b]
{
j = SumDel(i); // и число, которое равно сумме делителей первого
if (i==SumDel(j) && j>i && j <= b)
/* если первое число равно сумме делителей второго и второе число больше первого и лежит на отрезке [a, b], то числа i и j удовлетворяют условию и их нужно вывести с помощью списка*/
{
str.Format(" %i и %i", i, j);// делаем из чисел строку
list.AddString(str); // и добавляем ее в список
}
} // здесь заканчивается цикл for
if (list.GetCount() == 0)
// если в списке нет ничего, выводим сообщение:
list.AddString("Нет дружественных чисел");
list.AddString("в этом диапазоне");
}
// Вспомогательная функция, которая находит сумму делителей заданного числа
long CDrugNumbersDlg::SumDel(long n)
{
long s = 0; // переменная, с помощью которой мы находим сумму делителей
for (int d = 1; d <= n/2; ++d) // проверяем все возможные делители d
if (n % d == 0) s += d; // если n делится на d, добавляем d к сумме
return s;
}
Постройте исполняемый файл и запустите приложение. Не стоит задавать диапазон длиной более 100 000. Программа будет работать слишком долго.
Пример 2 Программа, которая находит заданное количество чисел, которые равны сумме квадратов двух натуральных чисел
Создайте диалоговое приложение и спроектируйте окно как показано на рисунке.
Свяжите с окном редактирования переменную int kol, а со списком – объект CListBox list.
Добавьте функцию для кнопки “Найти”, она будет с помощью вспомогательной функции проверять все подряд натуральные числа, пока не найдет заданного количества нужных чисел.
Добавьте вспомогательную функцию BOOL Equal(int n, int& a, int& b) в класс С…Dlg. Эта функция будет проверять, существуют ли числа a и b, такие что n = a2 + b2 .
Добавьте в функии код, показанный ниже.
void CSumKvadDlg::OnButton1() //
{
UpdateData();
int k = 0; //
int i = 0; //
CString str; //
int a, b; //
m_list.ResetContent();//
while (k < kol) //
{
i++; //
if (i==2000000) //
{
m_list.AddString("Поиск закончен");
break;
}
if (Equal(i, a, b)) //
{
str.Format(" %i = %i * %i + %i * %i",i, a, a,b, b);
m_list.AddString(str); //
k++; //
}
}
}
//
BOOL CSumKvadDlg::Equal(int n, int& a, int& b)
{
BOOL flag = false; //
for (a = 1; a< sqrt(double(n)); a++)//
{
b = int(sqrt(double(n - a*a))); //
if (n == a*a + b*b) //
{
flag = true;
break;
}
}
return flag;
}