Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2014, 19:07   #1
Virts
 
Аватар для Virts
 
Регистрация: 10.10.2014
Сообщений: 6
По умолчанию Длинная арифметика и системы счисления (программа перевода из двоичной (вводимое число до 100 знаков) в другую СС (4-19) [C++]

Сорри, что правила только после написания прочитал, потому в названии не указал, что язык - С++. Название редактировать не могу.

Нужно написать программу, которая переводила бы с двоичной (вводимое число до 100 знаков) в другую систему счисления (4-19). Ниже приведу свой код и постараюсь сейчас объяснить в чем проблема. Я хочу взять число и делить его до тех пор, пока не поделю "полностью". Первое деление нормальное, т.к количество итераций как раз то, что и нужно. Но для остальных делений я понятия не имею, как "контролировать" работу цикла, а результатом этого есть то, что на начале стоят нужные цифры (при выводе), но далее массив забивается мусором, от которого сам избавится не могу. Постараюсь закомментить код, чтобы можно было быстрее разобраться. Буду очень благодарен за помощь.
Код:
#include "stdafx.h"
#include <clocale>
#include <iostream>
using namespace std;
 
int main()
{
    int kos[100], rez_ost[100], sys_sch, count, asso;
    setlocale(LC_CTYPE, "");
    cout << "Enter count : "; // количество цифр
    cin >> count;
    cout << "\nEnter number: ";
    for(int i = 0; i<count; i++) // ввод "длинного числа"
        cin >> kos[i];
    cout << endl << "Enter sys_sch : ";
    cin >> sys_sch; // выбор системы счисления (то есть краткий делитель)
    cout << "REZ : ";
 
    for(int n = 0; kos[1]!=0; n++) 
    /* этот цикл должен повторять деления числа и заполнять массив остатками (которые мне и нужны)
    с него начинаются проблемы: не знаю, как задать условия прекращения итераций.
    */
    {
        cout << endl;
    for(int i = 0; i<(count-1); i++) { 
        /* собственно алгоритм деления, сдесь вторая проблема (самая главная) - 
        опять таки в условии остановки итерации, ведь когда число уменьшается - нужно и итерации соотвественно уменшить, но простой счетчик сюда не влепить
        */
        asso = kos[i+1] + kos[i] * 10;
        kos[i+1] = asso % sys_sch;
        kos[i] = asso / sys_sch;
        
        cout << kos[i];
    }
        rez_ost[n] = kos[count-1];  // сюда планируется складывать остаток, который и нужен для перевода в другую систему счисления
    }
    return 0;
}

Последний раз редактировалось Virts; 10.10.2014 в 19:13. Причина: Забыл указать язык в названии
Virts вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа перевода чисел из любой системы счисления в любую. Paran01k Общие вопросы Delphi 2 08.12.2013 14:02
Программа для перевода из одной системы исчисления в другую МистерКо Помощь студентам 6 02.06.2013 16:03
Программа перевода из одной системы счисления в другую - Turbo Pascal 7.0. Prescott Помощь студентам 5 19.03.2010 19:26
паскаль,программа для перевода чисел из 10-ой системы счисления в другую до10-ой Nikitaunett Помощь студентам 4 28.11.2009 20:06