Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
jock
2 / 2 / 0
Регистрация: 29.10.2011
Сообщений: 38
#1

Перевод из восьмиричной в десятиричную - C++

11.02.2012, 23:36. Просмотров 1896. Ответов 20
Метки нет (Все метки)

Помогите, пожалуйста, переписать программу, что бы она была без динамического массива:

C++
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
#include <iostream>   
#include <math.h>
using namespace std;
 
int main()
{
    int temp, size=0,nVal;
    int S=0;
    cout <<"Enter number\n";
    cin >> nVal;
    temp=nVal;
    while(temp!=0) 
    {
        temp/=10;
        size++;
    }
    temp=nVal; 
    int* ar = new int[size];
    for(int i=0; i<size; i++)
    {
        ar[i]=temp%10;
        temp/=10;
    }
    for (int i=0; i<size; i++)
    {
        S+=ar[i]*pow(8.0,i);
    }
    delete ar;
    cout <<S;
}
Или напишите свой код. Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 23:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод из восьмиричной в десятиричную (C++):

Перевод из восьмеричной системы в десятиричную - C++
Всё работает и переводит прекрасно - но только до числа 1000, дальше начинает врать. Помогите, пожалуйста, ликвидировать ошибку или хотя бы...

Перевод из восьмеричной системы исчисления в десятиричную - C++
Всем привет, пишу курчач:) и одна из проблем, с которой я столкнулся- перевод из восьмеричной системы исчисления в десятиричную...я...

Перевод числа из восьмиричной в десятичную систему счисления - C++
Здравствуйте! Вопрос такой. Мне нужно ввести с клавиатуры число и перевести его как бы (на самом деле в программе она должна находиться в...

Перевод из двоичной в десятиричную - C#
Помогите с кодом. Только чтобы не использовались методы типа Convert и так далее. Всё на уровне паскаля. Допустим делением по модулю на...

Перевод байта в десятиричную систему - C#
Здравствуйте, возникла проблема с переводом значения в 10 ричную систему, подскажите как это сделать программно. string...

Перевод из шестнадцатиричной системы в десятиричную - Visual Basic .NET
Насколько я понимаю то это выражение Const dsa = &amp;HA1 как раз и является &quot;вбшной шестнадцатиричной&quot; или это просто шестнадцатиричное...

20
renald
35 / 35 / 2
Регистрация: 11.02.2012
Сообщений: 105
12.02.2012, 00:25 #2
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
 
int main () {
  int nVal;
        cout <<"Enter number\n";
        cin >> oct >> nVal;
  cout << dec << nVal << endl;
}
2
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 00:44 #3
jock, твой код переводит из 10-ной в 8-ную. У меня к тебе вопрос: как вводим 8-чное - вручную либо оно в файле записано???Как ответишь - постараюсь помочь конкретным кодом...
1
Сtrl
139 / 129 / 3
Регистрация: 19.07.2011
Сообщений: 184
12.02.2012, 00:46 #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
вручную либо оно в файле записано
А что это меняет? Велика ли разница между чтением из istream и ifstream?
0
jock
2 / 2 / 0
Регистрация: 29.10.2011
Сообщений: 38
12.02.2012, 00:59  [ТС] #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
jock, твой код переводит из 10-ной в 8-ную. У меня к тебе вопрос: как вводим 8-чное - вручную либо оно в файле записано???Как ответишь - постараюсь помочь конкретным кодом...
Вроде бы из 8 в 10. Насчет ввода - вручную.
0
renald
35 / 35 / 2
Регистрация: 11.02.2012
Сообщений: 105
12.02.2012, 01:10 #6
А чем мой код не подходит?
2
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 01:18 #7
Цитата Сообщение от jock Посмотреть сообщение
Вроде бы из 8 в 10. Насчет ввода - вручную.
- тогда как то так
C++
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
#include <iostream>
#include <cmath>
using namespace std;
 
int oct2dec(int oct_val)
{
    
    int ipower = 0;
    int buffer = oct_val;
    while(0 < (buffer /= 8))
        ipower = ipower + 1;
    int dec_val= (oct_val%10);
    for(int i = 1; i <= ipower; i++)
    {
        oct_val /= 10;
        dec_val += (oct_val%10)*pow(8,i);
    }
    return dec_val;
}
 
int main()
{
    
    int val;
    while(true)
    {
        cout<<"Enter oct value : "; cin>>val;
        cout<<"Decimal value   : "<<oct2dec(val)<<endl;
    }
    return 0;
}
Отработка в консоли
Enter oct value : 72
Decimal value : 58
Enter oct value : 200
Decimal value : 128
Enter oct value :

Добавлено через 1 минуту

Не по теме:

PS:jock, да твой код норм, я сначала не въехал, как то сложно сразу перестроить мозги на 8-ку

1
Сtrl
139 / 129 / 3
Регистрация: 19.07.2011
Сообщений: 184
12.02.2012, 01:21 #8
Это чертовски неправильное решение. Почему - смотреть в главе 8 FAQ от Evg.
0
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 01:24 #9
jock, если компилятор сюда будет ругаться
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
pow(8,i);
- поставь pow(8,1.0*i);
Ниже рабочий проект в 9-й студии
1
Миниатюры
Перевод из восьмиричной в десятиричную  
Вложения
Тип файла: rar oct2dec_VS9_proj.rar (5.1 Кб, 8 просмотров)
-=ЮрА=-
12.02.2012, 01:26
  #10

Не по теме:

Цитата Сообщение от Сtrl Посмотреть сообщение
Это чертовски неправильное решение.
Сtrl, начинаешь утомлять, для тебя рабочий проект, попробуй найти ситуацию некорректного преобразования
PS:Я не в ответе за чьи-о кривые мозги...

1
Сtrl
12.02.2012, 01:43
  #11

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Сtrl, начинаешь утомлять, для тебя рабочий проект, попробуй найти ситуацию некорректного преобразования
Найти? Да ее и искать не надо, преобразование INT_MAX приведет к переполнению гарантированно.

1
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 01:52 #12
Цитата Сообщение от Сtrl Посмотреть сообщение
Найти? Да ее и искать не надо, преобразование INT_MAX приведет к переполнению гарантированно.
- причём тут INT_MAX я заменю тип на ULONG и всё!Ті мне инкреминировал ошибку логики, ну так давай покажи, где неправильно преобразовалось 8-ое в 10-ое - давай будем оперерировать числами чуть меньшими чем INT_MAX, хорошо?!Сам код ТС под такую ситуацию тоже не расчитан
Цитата Сообщение от jock Посмотреть сообщение
int S=0;
Цитата Сообщение от jock Посмотреть сообщение
S+=ar[i]*pow(8.0,i);
1
Сtrl
139 / 129 / 3
Регистрация: 19.07.2011
Сообщений: 184
12.02.2012, 01:57 #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- причём тут INT_MAX я заменю тип на ULONG и всё!Ті мне инкреминировал ошибку логики, ну так давай покажи, где неправильно преобразовалось 8-ое в 10-ое - давай будем оперерировать числами чуть меньшими чем INT_MAX, хорошо?!
Я даже не знаю как вам объяснить, что вы путаете теплое с мягким. Есть число, а есть представление числа. Число неизменно, и если на столе лежит N яблок, то там N яблок. В то же время мы можем по-разному записать это число N. Если в десятичной записи оно будет выглядеть как 11, то в восьмеричной - как 13. Вы же изменяете не представление числа, а само число, да еще и таким образом, чтобы его представление в десятичной системе выглядело так, как должно выглядеть в восьмеричной. Здесь есть глубокая логическая ошибка.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Сам код ТС под такую ситуацию тоже не расчитан
ТС - новичок, или вы будете на дилетантов равняться?
1
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 02:09 #14
Сtrl, уважаемый в 8-ке 128(10) будет 200 58(10) будет 72, алгоритм так и считает!
Задание стоит преобразовать число (8-е) вводимое с клавиатуры в 10-е, ну так вот
Цитата Сообщение от Сtrl Посмотреть сообщение
11, то в восьмеричной - как 13
- посмотри скрин и перестрой свой мозг, чтобы не делать глупых замечаний

Цитата Сообщение от Сtrl Посмотреть сообщение
ТС - новичок, или вы будете на дилетантов равняться?
- причём тут это,
в 8-ке число будет больше чем в 10-ке
Вот тебе преобразование из калькулятора(чтобы сам убедился)
oct 777777777777777777777
dec 9223372036854775807
Таким образом вводи в 8-ке INT_MAX и получай нормальный 10-ный ответ.
1
Миниатюры
Перевод из восьмиричной в десятиричную  
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 02:11 #15
Цитата Сообщение от Сtrl Посмотреть сообщение
на дилетантов
- пока я вижу делитанство у тебя или может неспособность перестроить мозг!
Код С++
C++
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
#include <iostream>
#include <climits>
#include <cmath>
using namespace std;
 
int oct2dec(int oct_val)
{
    
    int ipower = 0;
    int buffer = oct_val;
    while(0 < (buffer /= 8))
        ipower = ipower + 1;
    int dec_val= (oct_val%10);
    for(int i = 1; i <= ipower; i++)
    {
        oct_val /= 10;
        dec_val += (oct_val%10)*pow(8,1.0*i);
    }
    return dec_val;
}
 
int main()
{
    
    int val;
    while(true)
    {
        //cout<<"Enter oct value : "; cin>>val;
        cout<<"INT_MAX       : "<<(val = INT_MAX)<<endl;
        cout<<"Decimal value : "<<oct2dec(INT_MAX)<<endl;
        system("pause");
    }
    return 0;
}


PS:Хочу отметить, что INT_MAX даже не можем в oct вводить ибо надо вводить с разрядами меньше 8-ки, а ещё ведёшь речь о переполнении...
0
Миниатюры
Перевод из восьмиричной в десятиричную  
12.02.2012, 02:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 02:11
Привет! Вот еще темы с ответами:

Перевод из восьмиричной в десятичную - Delphi
Всем привет ! Долго долго искал на форуме, но так и не нашел, подскажите пожалуйста можно ли напрямую реализовать перевод из 8-чной в...

Перевод чисел из одной системы в десятиричную - C#
Сначала вводим основание системы, скажем 11. Затем вводим число 10. А ответ, при переводе выдает 11. Как задать что это именно число 10,...

Перевод из двоичной в десятиричную систему счисления - C#
Подскажите в чем ошибка? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

Макрос перевод из восьмиричной в десятичную систему - MS Excel
Подскажите пожалуйста, как написать код перевода из восьмеричной в десятичную. Я что то никак не пойму как записать это программно...


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

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

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