Непонятная Ошибка (си)

Тема в разделе "Общие вопросы по С и С++", создана пользователем d3fToR, 2 мар 2012.

  1. d3fToR

    d3fToR Гость

    У меня такая проблема:
    Ниже я вставил код программы, в которой определена функция, которая переводит число из 10-чной Системы счисления(сс) в n-ичную сс, где n<=25.
    Если вы запустите программу, то увидите, что число переводится правильно ( только в массиве запись не верна ), но если речь идёт о, допустим 12-ичной, то после 9ти идёт А,В и так далее. Так вот, после подсчёта остатков после деления, он не переводит остаток из числа в символ, допустим если у меня остаток 12, то он не переводит в С. Вместо этого он оставляет пробелы.. Я не понимаю почему, спросил у преподователя, он тоже не смог найти ошибку. Надеюсь на вас. Код компилируется ( у меня MinGW ), синтаксических ошибок нету, поэтому можете скомпилировать и посмотреть, что на том месте где должен быть символ, появляется пробел, а после него, для наглядности я поставил это "-|".

    Огромное спасибо, за то что хотябы уделили мне своё внимание.


    Код (C++):
    #include "stdio.h"
    void perevod4isla(int x, int n)
    {
    char a[]="0123456789ABCDEFGHIJKLMNO";
    int mass[10],i;
    puts("Введите число в десятичной системе счисления");
    scanf("%i", &x);
    puts("Введите систему счисления");
    scanf("%i", &n);
    if(x<=0)
    {
    puts("Второе число должно быть положительное!");
    scanf("%i", &x);
    };
    for(i=0;i<=10;i++)
    {
    mass[i]=x%n;
    x/=n;
    printf("%i", mass[i]);
    };
    for(i=0;i<=10;i++)
    printf("%c-|", a[mass[i]]);
    };

    void main()
    {
    int x,n;
    perevod4isla(x,n);
    }
     
  2. qqwertty

    qqwertty Гость

    У вас массив a портится, во всяком случае у меня, да.

    Код (C++):
    for(i=0;i<=10;i++)
    {
    mass[i]=x%n;
    x/=n;
    printf("%i", mass[i]);
    };
    Вот здесь у вас ошибка. Массив mas имеет 10 элементов. А вы пишите что-то в 11. Перепишите цикл
     
  3. d3fToR

    d3fToR Гость

    qqwertty, огромое спасибо!) так и знал, что какая-то банальная ошибка..
    СПАСИБО!!!
     
  4. d3fToR

    d3fToR Гость

    Появилась новая проблема, не могу поменять условие цикла так, чтобы остаток числа,который вычисляется первый, записывался в последний элемент массива, следующий в n-1, вот код, вроде правильный, но при компиляции всё равно пишет по старому?О_о файл точно тото компилирую и сохраняю ;)

    Код (C++):
    for(i=9;i>=0;i--)//(i=0;i<10;i++) - код, который был раньше
    {
    mass[i]=x%n;
    x/=n;
    printf("%i", mass[i]);
    };
     
  5. qqwertty

    qqwertty Гость

    Выводите в том же цикле - следовательно массив у вас в обратном порядке. Отдельно вывод сделайте.
     
Загрузка...
Похожие Темы - Непонятная Ошибка (си)
  1. Anatoly
    Ответов:
    4
    Просмотров:
    2.848
  2. sanch
    Ответов:
    5
    Просмотров:
    3.717
  3. astana2030
    Ответов:
    4
    Просмотров:
    928
  4. beloff
    Ответов:
    15
    Просмотров:
    2.694
  5. sasha465
    Ответов:
    0
    Просмотров:
    1.043

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