Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
adel132
2 / 2 / 2
Регистрация: 04.11.2012
Сообщений: 71
1

Перевод из 8 в 10 систему счисления

20.11.2015, 03:19. Просмотров 1673. Ответов 1
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста доделать лабу...как можно быстро перевести из 8 в 10 сс? Не существует ли интерпретаторов?
Перевод где //int Perevod(int natur)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#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;
}
Добавлено через 1 час 11 минут
Немного почитав литературу я нашел как быстро перевести из 8 в 10
C++ (Qt)
1
2
3
4
5
6
   
 do {
    printf("Введите натуральное число: ");
    scanf("%o", &natur);
    } while (natur == 0 || natur < 0);
    printf("В десятичной: %d\n", natur);
Присутствует проверка на ввод числа больше либо равно 1, но при вводе, например числа 182, он аварийно завершает программу. Что можно дописать что бы он повторно просил ввод?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2015, 03:19
Ответы с готовыми решениями:

Перевод из 16 в 10 систему счисления
Вот рабочий код программы, он работает только до 8 символов. А если больше 8 символов, то перевод...

Перевод с 5 в 10 систему счисления
Помогите пожалуйста. Срочно! С клавиатуры последовательно ввести Q целых чисел, каждое из которых...

Перевод в восьмеричную систему счисления
Задание: Ввести двузначное целое число х&lt;15. Написать программу перевода его в восьмеричную...

Перевод в восьмеричную систему счисления
Ребята, привет! Пожалуйста, скиньте готовую программу для вот такой задачи (на Си) Ввести...

Перевод чисел в восьмеричную систему счисления
ввести число не большее 500. вывести представление этого числа в восьмеричной системе счисления

1
VasiliyRM
68 / 68 / 55
Регистрация: 17.11.2015
Сообщений: 148
20.11.2015, 10:44 2
Лучший ответ Сообщение было отмечено adel132 как решение

Решение

do {
printf("Введите натуральное число: ");
scanf("%o", &natur);
scanf("%*[^\n]");
} while (natur == 0 || natur < 0);

если в воде попадется цифра больше 7 или буква то считается число только до неправильного символа
например:
ввод 118 (считается только 11)
вывод 9

Добавлено через 36 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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;
}
более подходящий вариант
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2015, 10:44

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

Перевод числа в 16-ричную систему счисления
целое десятичное трёхзначное число надо перевести в 16ричную систему счисления как это сделать?...

Перевод с десятичной в восьмеричную систему счисления
Написал такую вот программу: #include &lt;stdio.h&gt; #include &lt;stdafx.h&gt; void main(void) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.