Арифметические вычисления со случайными числами и операциями (+/-) - C (СИ)
Формулировка задачи:
Есть интересная задумка:
Создать программу, которая генерирует два случ. числа, потом берет из массива случайный знак (+,-,/,*), подставляет между двух чисел и считает, что получилось.
Прога нужна, чтобы сделать кучу примеров для натаскивания дитя и избавления родителя от вычислений.
Тупо в файл генерируются примеры а в другой примеры с ответами. (вывод в файл и генерацию я умею делать)
Так вот вопрос, как реализовать подстановку знака и расчет?
Решение задачи: «Арифметические вычисления со случайными числами и операциями (+/-)»
textual
Листинг программы
#include <stdio.h> #include <time.h> #include <stdlib.h> int sum(int a, int b) { return a+b; } int mul(int a, int b) { return a*b; } typedef struct { char sign; int(*func)(int, int); } operation; int main() { srand(time(0)); operation operations[2]; operations[0].sign = '+'; operations[0].func = sum; operations[1].sign = '*'; operations[1].func = mul; int a = rand() % 100; int b = rand() % 100; int sign = rand() % 2; printf("%d%c%d=%d", a, operations[sign].sign, b, operations[sign].func(a, b)); return 0; }
Объяснение кода листинга программы
В данном коде происходит следующее:
- Включаются необходимые заголовочные файлы:
stdio.h
- для работы с консолью (ввод/вывод данных);time.h
- для получения текущего времени, которое используется в качестве семени для генерации случайных чисел;stdlib.h
- для работы со случайными числами.
- Определяются две арифметические операции:
sum(int a, int b)
- сложение двух целых чисел;mul(int a, int b)
- умножение двух целых чисел.
- Определяется структура операции:
operation
- структура, которая содержит знак операции (сложение или умножение) и функцию, которую необходимо выполнить в зависимости от этого знака.
- Задаются начальные значения переменных:
srand(time(0))
- инициализация генератора случайных чисел текущим временем;operations[0].sign = '+';
- задание знака операции для первого элемента массива операций;operations[0].func = sum;
- задание функции для выполнения операции сложения для первого элемента массива операций;operations[1].sign = '*';
- задание знака операции для второго элемента массива операций;operations[1].func = mul;
- задание функции для выполнения операции умножения для второго элемента массива операций;int a = rand() % 100;
- генерация случайного числа от 0 до 99 и присвоение его переменнойa
;int b = rand() % 100;
- генерация случайного числа от 0 до 99 и присвоение его переменнойb
;int sign = rand() % 2;
- генерация случайного числа от 0 до 1 и присвоение его переменнойsign
, которая будет использоваться для выбора операции.
- Выполняется выбранная операция:
printf(
%d%c%d=%d, a, operations[sign].sign, b, operations[sign].func(a, b));
- вызов функцииprintf
для вывода на консоль случайно сгенерированных чисел и результата их обработки выбранной операцией.
- Завершается выполнение программы:
return 0;
- возврат значения 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д