1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

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

Тема в разделе "MS Visual C++", создана пользователем zhenek91, 28 окт 2008.

Статус темы:
Закрыта.
  1. zhenek91

    zhenek91 Гость

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

    etc Гость

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

    zhenek91 Гость

    j - это локальная переменная
     
  4. @LE}{@NDER

    @LE}{@NDER Гость

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

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

    alexsid Гость

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

    MozgOFF215 New Member

    Регистрация:
    5 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    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 ();
    }
     
  7. Neutrino

    Neutrino Гость

    Небольшая поправка: Нельзя дважды определять переменную в одной области видимости.
    i объявлена в области видимости цикла for, потому во втором цикле так же нужна её декларация.
     
Загрузка...
Похожие Темы - перевод из восьмеричной
  1. FaRReLL
    Ответов:
    0
    Просмотров:
    847
  2. FaRReLL
    Ответов:
    0
    Просмотров:
    889
  3. FaRReLL
    Ответов:
    0
    Просмотров:
    908
  4. FaRReLL
    Ответов:
    0
    Просмотров:
    732
  5. FaRReLL
    Ответов:
    0
    Просмотров:
    697
Статус темы:
Закрыта.

Поделиться этой страницей