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

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

zhenek91

Код:
{
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 ();
}
Последний цикл выдает неправильное значение... Буду благодарен, если мне укажут на ошибку и помогут исправить этот код.
 
Несмотрел логикау ... изходя из - "Последний цикл выдает неправильное значение"
посмотрите на - int j=0; почему оно под циклом?
 
j - это локальная переменная
 
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++;
}
 
юзай
Код:
#include <cstdlib>
#include <iostream>
void main() 
{
int num;
std::cin >> std::oct >> num;
std::cout << num << std::endl;
system("PAUSE");
}
 
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 ();
}
 
3. Нельзя дважды определять переменную i
Небольшая поправка: Нельзя дважды определять переменную в одной области видимости.
i объявлена в области видимости цикла for, потому во втором цикле так же нужна её декларация.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab