Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Пример выполнения работы. Решить задачу, используя функцию




Условие задачи:

Решить задачу, используя функцию.

Даны два натуральных числа 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 – Результаты работы программы





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 480 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Своим успехом я обязана тому, что никогда не оправдывалась и не принимала оправданий от других. © Флоренс Найтингейл
==> читать все изречения...

2396 - | 2210 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.