0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 28
1

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

26.01.2016, 12:19. Показов 7845. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
 
int main()
{{char S[255];
int l,z,k,i;
float n;
float c;
printf("vvedite 8: ");
scanf("%s",S);
c=0;
for (i=0;i<strlen(S); i++)
{if (S[i]=='.')
break;
switch (S[i]) {
case '0': z = 0;break;
case '1': z = 1;break;
case '2': z = 2; break;
case '3': z = 3; break;
case '4': z = 4; break;
case '5': z = 5; break;
case '6': z = 6; break;
case '7': z = 7; break;
default:
cout << "Nepravilni vvod" << endl;
}
c=c*8+z;
}
 
cout<<c<<endl;
if (i='.')
float drob(int k, char *S);
char *t=strchr(S,'.');
k=t-S;
cout<<k<<endl;
float j=8;
float s=0;
for (i=k+1;i<strlen(S);i++)
{if (S[i]<=56)
{s=((int)S[i]-48)/j;
j=j*8;}
cout<<s<<"          ";
}
n=c+s;
cout<<n<<" "<<endl;
}
}
программа работает практически правильно , есть одно НО
при переводе из дробных частей он считает только последнюю цифру
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.01.2016, 12:19
Ответы с готовыми решениями:

Перевод из 16-ной 10-ную систему счисления
Народ помагите кто-нибудь написать програму на языке СИ для перевода числа из 16-ной в 10-ную...

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

Перевод числа из 10-ной в 2-ную систему счисления
помогите пожалуйста. я ввожу число он выдает двоичную систему счисления (например 100101 и затем...

Перевод из 2-ной в 8-ную систему счисления и обратно
помогите написать код, как перевести число из 2 в 8 систему счисления и обратно?

4
543 / 486 / 104
Регистрация: 05.05.2014
Сообщений: 1,110
26.01.2016, 13:36 2
Pechenka_a, Ваш switch заставляет шевелиться последние волосы на голове.
Это делается так
C++
1
2
if (S[i] >='0' && '7' >= S[i]) z = S[i] - '0';
else cout << "Nepravilni vvod" << endl;
Добавлено через 1 минуту
А дробные числа ( < 1) переводятся отдельно и совсем по другому алгоритму
1
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 28
27.01.2016, 12:09  [ТС] 3
ахаха вы меня рассмешили своими последними волосами

Добавлено через 2 минуты
мне уже помогли написать прогу не могли бы вы мне обьяснить в чем суть этой записи зачем писать "-0" минус ноль где логика ведь всеравно ничего не изменится , но стоить убрать этот ноль и все другие цифры.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
        char *t=strchr(S,'.');
        if(t==NULL)
    {
            S[0]=0;
        return 0;
    }
        int k=t-S;
        double j=8;
        double s=0;
        for (int i=k+1;i<S[i];i++)
    {
        if (S[i]<='7')
            s+=(S[i]-'0')/j;
            j*=8;
    }
        return s;
    }
0
543 / 486 / 104
Регистрация: 05.05.2014
Сообщений: 1,110
27.01.2016, 12:33 4
'0' - это код изображения нуля. Он равен 4810 = 3016
'5' - это код пятерки = 5310 = 3516
Чтобы по коду цифры получить соответствующее ей число, надо отнять код нуля ( - '0')
1
1 / 1 / 0
Регистрация: 05.10.2020
Сообщений: 30
17.10.2020, 16:51 5
Цитата Сообщение от Pechenka_a Посмотреть сообщение
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
 
int main()
{{char S[255];
int l,z,k,i;
float n;
float c;
printf("vvedite 8: ");
scanf("%s",S);
c=0;
for (i=0;i<strlen(S); i++)
{if (S[i]=='.')
break;
switch (S[i]) {
case '0': z = 0;break;
case '1': z = 1;break;
case '2': z = 2; break;
case '3': z = 3; break;
case '4': z = 4; break;
case '5': z = 5; break;
case '6': z = 6; break;
case '7': z = 7; break;
default:
cout << "Nepravilni vvod" << endl;
}
c=c*8+z;
}
 
cout<<c<<endl;
if (i='.')
float drob(int k, char *S);
char *t=strchr(S,'.');
k=t-S;
cout<<k<<endl;
float j=16;
float s=0;
for (i=k+1;i<strlen(S);i++)
{if (S[i]<=56)
{s=((int)S[i]-48)/j;
j=j*8;}
cout<<s<<"          ";
}
n=c+s;
cout<<n<<" "<<endl;
}
}
программа работает практически правильно , есть одно НО
при переводе из дробных частей он считает только последнюю цифру
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int cel,i=1,n,p,j,k,s,os,z[20];
cout<<"Vvedite kolichestvo proverok"<<endl;
cin>>n;
while (i<=n)
{s=0;j=0;
cout<<"Vvedite chislo"<<endl; cin>>p;
cout<<"Vyibirite sistemy schisleniya (2,8,16)"<<endl; cin>>k;
while (p!=0)
{cel=int(p/k);
os=p-cel*k; z[j]=os; //cout<<"z["<<j<<"]="<<z[j]<<endl;
if (k==16) {if (os>=10) switch(os)
{case 10:cout<<" A ";break;
case 11:cout<<" B ";break;
case 12:cout<<" C ";break;
case 13:cout<<" D ";break;
case 14:cout<<" E ";break;
case 15:cout<<" F ";break;
default:;break;}else
cout<<" "<<os;}else
cout<<" "<<os;
s=s+os*pow(k,j);
j++; cout<<endl;
for(int l=j-1;l>=0;l--) cout<<z[l];
p=cel;}
cout<<" proverka= "<<s<<endl;
i++;}
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2020, 16:51
Помогаю со студенческими работами здесь

Функция: перевод числа из 10-ной в 16-ную систему счисления
Напишите функцию, которая переводит заданное число из 10-ной системы счисления в 16-ричную систему...

Перевод числа из 10-ной в N-ую систему счисления
Всем добрый вечер! Написала программу перевода числа из 10чной в Nую систему счисления (2&lt;=N&lt;=16),...

Из 2-ной в 10-ную систему
Привет всем тем кто не пошел в школу или сидит на работе в интернете :) Есть код. Нужно из...

Перевод из 10-ной в 2-ную систему счисления
Помогите пожалуйста! Задали написать программу перевода из 10 в 2 сс. Но у меня почему-то она не...

Перевод числа из 10-ной в 16-ную систему счисления
Написать программу которая переводит число из 10 системы счисления в 16 сс

Перевод числа из 10-ной в 2-ную систему счисления
Написать программу перевода числа из десятичной системы счисления в двоичную систему счисления.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru