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

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

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

Здравствуйте, помогите пожалуйста доделать лабу...как можно быстро перевести из 8 в 10 сс? Не существует ли интерпретаторов? Перевод где //int Perevod(int natur)
Листинг программы
  1. #include <iostream>
  2. #include <time.h>
  3. #include <math.h>
  4. #include <stdio.h>
  5. #define N 14
  6. #define Y 16
  7. using namespace std;
  8. //Вывод массива
  9. void Print(int *mass, int n) {
  10. cout << "Задание 3.1\n";
  11. for (int i = 0; i < n; i++) {
  12. printf("%d ", mass[i]);
  13. }
  14. putchar('\n');
  15. }
  16. //Поиск равнобедренного треугольника
  17. int Search(int *mass, int n) {
  18. int k = 0, a, b, c;
  19. for (int i = 0; i < mass[N-2]; i++) {
  20. a = mass[i]; b = mass[i+1]; c = mass[i+2];
  21. if ((a + b) > c && (b + c) > a && (c + a) > b && (a == b || a == c || b == c)) {
  22. k++;
  23. }
  24. }
  25. return k;
  26. }
  27. /*-------------------------------------------------*/
  28. void Print2(int *mass2, int n) {
  29. cout << "Задание 3.2\n";
  30. for (int i = 0; i < n; i++) {
  31. printf("%d ", mass2[i]);
  32. }
  33. putchar('\n');
  34. }
  35. int Max(int *mass2, int n) {
  36. int max = 0;
  37. for (int i = 0; i < n; i++) {
  38. if (mass2[i] > max) {
  39. max = mass2[i];
  40. }
  41. }
  42. return max;
  43. }
  44. int Chet(int chet) {
  45. int a, b = 1;
  46. a = chet % 10;
  47. while (chet / 10 != 0) {
  48. chet /= 10;
  49. }
  50. b = chet;
  51. if ((a % 2 == 0 && b % 2 == 0) || (a % 2 != 0 && b % 2 != 0)) {
  52. return 1;
  53. } else return 0;
  54. }
  55. /*-------------------------------------------------*/
  56. int Proverka(int natur) {
  57. int flag = 0;
  58. while (natur) {
  59. if (natur % 10 <= 7) {
  60. flag = 1;
  61. } else {
  62. flag = 0; break;
  63. }
  64. natur /= 10;
  65. }
  66. return flag;
  67. }
  68. //int Perevod(int natur)
  69. int main(int argc, const char * argv[]) {
  70. int mass[N] = {1, 8, 10, 3, 4, 4, 7, 20, 21, 21, 54, 45, 15, -18};
  71. int mass2[Y] = {85, -3, 13, 94, 72, 169, -21, 4372, 5798, 46, 9, 12, 8312, 10143, 49, 28}, chet = Max(mass2, N);
  72. int natur;
  73. Print(mass, N);
  74. cout << "K = " << Search(mass, N) << "\n----------\n";
  75. Print2(mass2, Y);
  76. cout << "Max = " << Max(mass2, Y) << "\n";
  77. Chet(chet) ? printf("Да\n----------\n") : printf("Нет\n----------\n");
  78. do {
  79. cout << "Введите натуральное число: "; cin >> natur;
  80. } while (natur == 0 || natur < 0);
  81. Proverka(natur) ? Perevod(natur) : printf("Число не является 8 сс\n");
  82. return 0;
  83. }
Немного почитав литературу я нашел как быстро перевести из 8 в 10
Листинг программы
  1. do {
  2. printf("Введите натуральное число: ");
  3. scanf("%o", &natur);
  4. } while (natur == 0 || natur < 0);
  5. printf("В десятичной: %d\n", natur);
Присутствует проверка на ввод числа больше либо равно 1, но при вводе, например числа 182, он аварийно завершает программу. Что можно дописать что бы он повторно просил ввод?

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

textual
Листинг программы
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main()
  5. {
  6.     system("chcp 1251>NUL");
  7.  
  8.     int natur;
  9.  
  10.     do {
  11.         printf("Введите натуральное число: ");
  12.         scanf("%o", &natur);
  13.            
  14.             while (getchar(stdin) != '\n') natur = 0;
  15.             ungetc('\n', stdin);
  16.     } while ( natur <= 0 );
  17.  
  18.     printf("В десятичной: %d\n", natur);
  19.  
  20.     return;
  21. }

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

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

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


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

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

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы