• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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 ();
}
Последний цикл выдает неправильное значение... Буду благодарен, если мне укажут на ошибку и помогут исправить этот код.
 
E

etc

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

@LE}{@NDER

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

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

MozgOFF215

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!