перевод из восьмеричной системы в десятичную

  • Автор темы zhenek91
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zhenek91

Гость
#1
Код:
{
int temp, size=0,nVal;
int S=0;
cout <<"Enter number,please.\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=size-1; i>=0;i--)
{
int j=0;
if (j<size)
{
S+=ar[i]*pow(8.0,j);
}
j++;
}
cout <<S;
getch ();
}
Последний цикл выдает неправильное значение... Буду благодарен, если мне укажут на ошибку и помогут исправить этот код.
 
E

etc

Гость
#2
Несмотрел логикау ... изходя из - "Последний цикл выдает неправильное значение"
посмотрите на - int j=0; почему оно под циклом?
 
@

@LE}{@NDER

Гость
#4
j - это локальная переменная
При каждой итерации цикла твоя локальная переменная переменная создается и инициализируется в 0. Следовательно в коде S+=ar*pow(8.0,j); j всегда будет =0. Поставь переменную перед циклом.

Код:
int j=0;
for (int i=size-1; i>=0;i--)  
{
if (j<size)
{
S+=ar[i]*pow(8.0,j);
}
j++;
}
 
A

alexsid

Гость
#5
юзай
Код:
#include <cstdlib>
#include <iostream>
void main() 
{
int num;
std::cin >> std::oct >> num;
std::cout << num << std::endl;
system("PAUSE");
}
 

MozgOFF215

New Member
05.07.2009
3
0
#6
1. Последний цикл непонятен. имхо гораздо проще работает так...
2. Не забываем удалять динамический массив
3. Нельзя дважды определять переменную i
код рабочего фрагмента:

{
int temp, size=0,nVal;
int S=0;
cout <<"Enter number,please.\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=temp%10;
temp/=10;
}
for (i=0; i<size; i++)
{
S+=ar*pow(8.0,i);
}
delete ar;
cout <<S;
getch ();
}
 
N

Neutrino

Гость
#7
3. Нельзя дважды определять переменную i
Небольшая поправка: Нельзя дважды определять переменную в одной области видимости.
i объявлена в области видимости цикла for, потому во втором цикле так же нужна её декларация.
 
Статус
Закрыто для дальнейших ответов.