Арифметические вычисления со случайными числами и операциями (+/-) - 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;
}

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Включаются необходимые заголовочные файлы:
    • stdio.h - для работы с консолью (ввод/вывод данных);
    • time.h - для получения текущего времени, которое используется в качестве семени для генерации случайных чисел;
    • stdlib.h - для работы со случайными числами.
  2. Определяются две арифметические операции:
    • sum(int a, int b) - сложение двух целых чисел;
    • mul(int a, int b) - умножение двух целых чисел.
  3. Определяется структура операции:
    • operation - структура, которая содержит знак операции (сложение или умножение) и функцию, которую необходимо выполнить в зависимости от этого знака.
  4. Задаются начальные значения переменных:
    • 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, которая будет использоваться для выбора операции.
  5. Выполняется выбранная операция:
    • printf(%d%c%d=%d, a, operations[sign].sign, b, operations[sign].func(a, b)); - вызов функции printf для вывода на консоль случайно сгенерированных чисел и результата их обработки выбранной операцией.
  6. Завершается выполнение программы:
    • return 0; - возврат значения 0, что означает успешное завершение работы программы.

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы