Пример выполнения работы. Решить задачу, используя функцию
Условие задачи:
Решить задачу, используя функцию.
Даны два натуральных числа a и b – числитель и знаменатель дроби. Сократите дробь, разделив числа на их наибольший общий делитель (НОД). Функция должна находить НОД 2- х чисел по алгоритму Евклида.
Алгоритм Евклида:
1. Вычислим r - остаток от деления числа a на b (a>b), a = bq+r, 0 <= r < b.
2. Если r = 0, то b есть искомое число (НОД).
3. Если r != 0, то заменим пару чисел (a, b) парой (b, r), и перейдем к шагу 1.
Для решения задачи в среде Microsoft Visual Studio 2013 было создано стандартное консольное приложение (проект типа Win32 Console Application) с установленным свойством «пустой проект» (Empty project). В проект добавлен файл с расширением .cpp, исходный код которого приведен ниже.
Листинг программы с комментариями:
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
unsigned Evklid(int a, int b)
{
// Находим НОД для а и b
int a1, b1;
if (a>b)
{
a1 = a; b1 = b;
}
else
{
a1 = b; b1 = a;
}
int o;
do
{
o = a1 % b1;
if (o == 0) return b1;
a1 = b1;
b1 = o;
} while (1);
}
int main(int argc, char *argv[])
{
int a, b, // Исходные данные - числитель и знаменатель
nod;
setlocale(LC_ALL, "rus"); // Возможность вывода русских символов в кодировке
// Windows-1251 на консоль
if (argc < 3) // Ошибка
{
printf_s("Ошибка, параметров в командной строке не хватает для задания исходных данных. Для завершения нажмите любую клавишу\n");
system("pause");
return 1;
}
// Читаем значения из командной строки
if (sscanf_s(argv[1], "%d", &a) < 1) // Читаем a
{
printf_s("Ошибка, неверный формат первого входного параметра. Для завершения нажмите любую клавишу\n");
system("pause");
return 1;
}
if (sscanf_s(argv[2], "%d", &b) < 1) // Читаем a
{
printf_s("Ошибка, неверный формат первого входного параметра. Для завершения нажмите любую клавишу\n");
system("pause");
return 1;
}
nod = Evklid(a, b); // Получаем наибольший общий делитель
printf("a=%d, b=%d, nod=%d. Сокращенная дробь: %d/%d. Для завершения нажмите любую клавишу\n", a, b, nod, a/nod, b/nod);
system("pause"); // Остановка программы до нажатия любой клавиши
return 0;
}
После компиляции и сборки программы ее необходимо запустить в командной строке. Если имя исполняемого файла MyProg.exe, то его необходимо в командной строке ввести команду MyProg 66 100
После имени исполняемого файла обязательно идут через пробелы 2 параметра, являющиеся целыми значениями – числителем и знаменателем дроби.
Результаты работы программы представлены на рисунке 6.
Рисунок 6 – Результаты работы программы