Замените пожалуйста cin, cout на scanf, printf - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <iostream>
#include <math.h>
#include <cstdio>
using namespace std;
int TMP(int Value, int System) {
    int a = Value, tmp = 0, b;
    while (a > System - 1)
    {
        b = a % System;
        tmp++;
        a /= System;
    }
    tmp++;
    return tmp;
}
int SysConTo10(char str[], int sys) {
    float k, res = 0, st = 0, tmp = strlen(str);
    for (int i = tmp - 1; i >= 0; i--) {
        switch (str[i]) {
        case 'a': k = 10;
            break;
        case 'b': k = 11;
            break;
        case 'c': k = 12;
            break;
        case 'd': k = 13;
            break;
        case 'e': k = 14;
            break;
        case 'f': k = 15;
            break;
        default: k = (int)str[i];
            break;
        }
        if (k >= 48) {
            k -= 48;
        }
        if (k >= sys) {
            cout << "Число " << k << " не может находиться в данной системе счисления.\n";
            break;
            return 0;
        }
        else if (k != sys) {
            res += pow(sys, st) * k;
            st++;
        }
    }
    return res;
}
 
void main()
{
    setlocale(LC_CTYPE, "rus");
    int m, res = 0, st = 0; // m - основание системы счисления, res - результат, st - степень, val - строка в которую введено число;
    char val[100] = " ";
    cout << "Введите число: "; gets_s(val);
    cout << "Введите основание системы счисления: "; 
    cin >> m;
    res = SysConTo10(val, m); // Функиция, переводящая в 10-ную систему счисления;
    int m2 = 0;
    cout << "В какую систему счисления вы хотите перевести число ?" << endl;
    cin >> m2;
    int tmp2 = TMP(res, m2);
    for (int i = 0; i < tmp2; i++) {
        int b = res % m2;
        switch (b)
        {
        case 10: {
            val[i] = 'a';
            res /= m2;
        }
                 break;
        case 11: {
            val[i] = 'b';
            res /= m2;
        }
                 break;
        case 12: {
            val[i] = 'c';
            res /= m2;
        }
                 break;
        case 13: {
            val[i] = 'd';
            res /= m2;
        }
                 break;
        case 14: {
            val[i] = 'e';
            res /= m2;
        }
                 break;
        case 15: {
            val[i] = 'f';
            res /= m2;
        }
                 break;
        default: {
            if (b < 48) {
                b += 48;
            }
            val[i] = b;
            res /= m2;
        }
                 break;
        }
    }
    for (int i = tmp2 - 1; i > -1; i--)
        cout << val[i];
    cout << endl;
}

Решение задачи: «Замените пожалуйста cin, cout на scanf, printf»

textual
Листинг программы
scanf("%d",&m); //%d - тип данных - int. &m - адрес переменной m.
 printf("");
 printf("%d",m); // без адреса,т.к нам не нужно менять значение в самой переменной,а нужно её значение,чтобы вывести.

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

  1. Ввод значения переменной m с помощью функции scanf(%d,&m);
  2. Вывод значения переменной m с помощью функции printf(%d,m);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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