Вывод Остатка От Деления В Двоичной Системе

Тема в разделе "C/C++/C#", создана пользователем Rendall, 12 сен 2012.

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

    Rendall Гость

    Задача:

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

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    научись, разберись. Или не решай задачу вовсе - зачем тебе ее дали если ты не разбираешься?

    Добавлено:
    понял неправильно. В задаче ничего не сказано про вывод на экран в двоичной и десятичной системе, на экран можно вообще не выводить( в задаче сказано лишь про "вычисление"). Но надо как-то проверить работоспособность программы - самое банальное - вывести резальтат работы на экран, рассчитать результат вручную, и сравнить результаты.

    Про перевод в двоичную в условии задаче тоже ничего не сказано. Хватит фантазировать - работай )
     
  3. Rendall

    Rendall Гость

    это не фантазии, это лабораторная работа по с++ ;) , есть пример кода где числа в двоичном представлении складываются "в столбик" надо переделать чтоб делились и выводить остаток, вывод данных на экран или в файл.

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    //Example
    //подключаемые файлы с прототипами функций

    #include "stdafx.h"
    #include <iostream>
    #include <clocale>

    //вывод двоичного представления десятичного числа х
    void BinOut(unsigned char x);
    //вычисление суммы двух чисел в "столбец"
    unsigned char BinAdd(unsigned char a, unsigned char b);
    int _tmain(int argc, _TCHAR* argv[])
    {
    unsigned char a, b, sum;
    setlocale(0, "Rus");
    printf("Введите a: ");
    scanf_s("%d", &a);
    printf("Двоичное представление a: ");
    BinOut(a);
    printf("\nВведите b: ");
    scanf_s("%d", &b);
    printf("Двоичное представление b: ");
    BinOut(b);
    //вычисление суммы в "столбец"
    sum = BinAdd(a, b);
    printf("\nДесятичное представление a + b = %d\n", sum);
    printf("Двоичное представление a + b = ");
    BinOut(sum);
    printf("\n");
    //описание указателя на структуру типа FILE
    FILE* stream;
    errno_t err;
    //открытие файла для записи данных (в случае отсутствия файла с таким именем - создание)
    err = fopen_s(&stream, "test.txt", "w+" );
    if( err == 0 )
    {
    fprintf(stream, "Десятичное представление\n a = %d, b = %d\n a + b = %d", a, b, sum);
    fclose(stream);
    }
    else
    printf( "Файл 'test.txt' не был открыт\n" );
    system("pause");
    return 0;
    }
    void BinOut(unsigned char x)
    {
    for (int i = 0; i < 8; i++)
    {
    if (x & 0x80)
    putchar('1');
    else
    putchar('0');
    x=x<<1;
    }
    }
    unsigned char BinAdd(unsigned char a, unsigned char b)
    {
    unsigned char mem = 0, rez = 0;
    for (int i = 0; i < 8; i++)
    {
    rez>>=1;
    if (((a>>i)&1)^((b>>i)&1))
    {
    if (!(mem&1))
    rez|=0x80;
    }
    else
    if ((a>>i)&1)
    if (mem)
    {
    mem = 1;
    rez|=0x80;
    }
    else
    mem=1;
    else
    if (mem)
    {
    mem = 0; rez|=0x80;
    }
    }
    return rez;
    }
     
Загрузка...
Статус темы:
Закрыта.

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