Перевод из 8 в 10 систему счисления - C (СИ)

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

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

Здравствуйте, помогите пожалуйста доделать лабу...как можно быстро перевести из 8 в 10 сс? Не существует ли интерпретаторов? Перевод где //int Perevod(int natur)
#include <iostream>
#include <time.h>
#include <math.h>
#include <stdio.h>
#define N 14
#define Y 16
 
using namespace std;
 
//Вывод массива
void Print(int *mass, int n) {
    cout << "Задание 3.1\n";
    for (int i = 0; i < n; i++) {
        printf("%d  ", mass[i]);
    }
    putchar('\n');
    
}
 
//Поиск равнобедренного треугольника
int Search(int *mass, int n) {
    int k = 0, a, b, c;
    for (int i = 0; i < mass[N-2]; i++) {
        a = mass[i]; b = mass[i+1]; c = mass[i+2];
        if ((a + b) > c && (b + c) > a && (c + a) > b && (a == b || a == c || b == c)) {
            k++;
        }
    }
    return k;
}
 
/*-------------------------------------------------*/
 
void Print2(int *mass2, int n) {
    cout << "Задание 3.2\n";
    for (int i = 0; i < n; i++) {
        printf("%d  ", mass2[i]);
    }
    putchar('\n');
    
}
 
int Max(int *mass2, int n) {
    int max = 0;
    for (int i = 0; i < n; i++) {
        if (mass2[i] > max) {
            max = mass2[i];
        }
    }
    return max;
}
 
int Chet(int chet) {
    int a, b = 1;
    a = chet % 10;
    while (chet / 10 != 0) {
        chet /= 10;
    }
    b = chet;
    if ((a % 2 == 0 && b % 2 == 0) || (a % 2 != 0 && b % 2 != 0)) {
        return 1;
    } else return 0;
}
 
/*-------------------------------------------------*/
 
int Proverka(int natur) {
    int flag = 0;
    while (natur) {
        if (natur % 10 <= 7) {
            flag = 1;
        } else {
            flag = 0; break;
        }
        natur /= 10;
    }
    return flag;
}
 
//int Perevod(int natur)
 
int main(int argc, const char * argv[]) {
    
    int mass[N]  = {1, 8, 10, 3, 4, 4, 7, 20, 21, 21, 54, 45, 15, -18};
    int mass2[Y] = {85, -3, 13, 94, 72, 169, -21, 4372, 5798, 46, 9, 12, 8312, 10143, 49, 28}, chet = Max(mass2, N);
    int natur;
    
    Print(mass, N);
    cout << "K = " << Search(mass, N) << "\n----------\n";
    Print2(mass2, Y);
    
    cout << "Max = " << Max(mass2, Y) << "\n";
    Chet(chet) ? printf("Да\n----------\n") : printf("Нет\n----------\n");
    
    do {
        cout << "Введите натуральное число: "; cin >> natur;
    } while (natur == 0 || natur < 0);
    Proverka(natur) ? Perevod(natur) : printf("Число не является 8 сс\n");
    
    return 0;
}
Немного почитав литературу я нашел как быстро перевести из 8 в 10
   
 do {
    printf("Введите натуральное число: ");
    scanf("%o", &natur);
    } while (natur == 0 || natur < 0);
    printf("В десятичной: %d\n", natur);
Присутствует проверка на ввод числа больше либо равно 1, но при вводе, например числа 182, он аварийно завершает программу. Что можно дописать что бы он повторно просил ввод?

Решение задачи: «Перевод из 8 в 10 систему счисления»

textual
Листинг программы
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    system("chcp 1251>NUL");
 
    int natur;
 
    do {
        printf("Введите натуральное число: ");
        scanf("%o", &natur);
            
            while (getchar(stdin) != '\n') natur = 0;
            ungetc('\n', stdin);
    } while ( natur <= 0 );
 
    printf("В десятичной: %d\n", natur);
 
    return;
}

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

  1. Подключение необходимых библиотек для работы с файлами и для работы с памятью.
  2. Объявление переменной типа int с названием natur.
  3. Ввод натурального числа с помощью функции scanf в переменную natur.
  4. Проверка корректности ввода числа с помощью цикла do-while. Если число введено некорректно, то программа выведет сообщение об ошибке и попросит ввести число заново.
  5. Вывод числа в десятичной системе счисления с помощью функции printf.
  6. Возвращение значения функции main в точку вызова (если функция была вызвана).

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


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

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

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