Перевод из 8 в 10 систему счисления - C (СИ)
Формулировка задачи:
Здравствуйте, помогите пожалуйста доделать лабу...как можно быстро перевести из 8 в 10 сс? Не существует ли интерпретаторов?
Перевод где //int Perevod(int natur)
Присутствует проверка на ввод числа больше либо равно 1, но при вводе, например числа 182, он аварийно завершает программу. Что можно дописать что бы он повторно просил ввод?
#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);
Решение задачи: «Перевод из 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; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и для работы с памятью.
- Объявление переменной типа int с названием
natur
. - Ввод натурального числа с помощью функции scanf в переменную
natur
. - Проверка корректности ввода числа с помощью цикла do-while. Если число введено некорректно, то программа выведет сообщение об ошибке и попросит ввести число заново.
- Вывод числа в десятичной системе счисления с помощью функции printf.
- Возвращение значения функции main в точку вызова (если функция была вызвана).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д