Форум программистов, компьютерный форум CyberForum.ru

Программа для перевода чисел из 10 системы в 2 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа должна сохранять данный в файле http://www.cyberforum.ru/cpp-beginners/thread162397.html
Здравствуйте,я хочу чтобы моя программа сохраняла данные,а именно значения переменных в текстовом или еще в каком нибудь файле(не имеет значения) и могла потом загружать их из этого файла. Подскажите какую функцию использовать и если надо,то что подключать?Заранее спасибо)
C++ Динамическое выделение памяти Уважаемые программисты!!!! Подскажите как выделить память для двумерного массива. Заранее спасибо!!! http://www.cyberforum.ru/cpp-beginners/thread162390.html
Аналог метода Split для std::string C++
Как можно раздилить string? вот например строчка из сишарп string s = "class Klass"; string sarr = s.Split(' '); есть нечто подобное в с++ ?
Поиск букв латиницы C++
Найти буквы латиницы в словах текста. Вывести такие слова на екран.
C++ Вывести на экран имя класса http://www.cyberforum.ru/cpp-beginners/thread162327.html
Можно как нибуть форматнуть в string имя класса? class HelloWorld { public: string s; void view(){ cout << s << endl;
C++ Системы исчиления в C++ Как работать со системами исчиления на C++. Какие переменные надо использовать? Для примера помогите мне решить эту задачу... Число вводится своим двоичным представлением (длина числа не превышает 10000 двоичных разрядов). Необходимо определить делится ли число на 15. подробнее

Показать сообщение отдельно
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
29.08.2010, 23:02  [ТС]     Программа для перевода чисел из 10 системы в 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/ lab1.cpp : Defines the entry point for the console application.
//
 
#include "stdio.h"
 
void main()
{
    //Переменные для исходных данных
    int x = 0, y = 0, m = 0, n = 0;
 
    //Переменные для результатов
    int x_new = 0, y_new = 0;
 
    //Временные переменные
    unsigned int mask;
    const unsigned int all_bits_up = -1; // -1 записуется в памяти как все биты равные 1 [url]http://ru.wikipedia.org/wiki/Дополнительный_код_(представление_числа[/url])
 
    //запрашиваем ввод
    printf("input values for 'x', 'y', 'm' and 'n' separated by spaces\nwaiting for input# ");
    //считываем ввод
    scanf("%d%d%d%d",&x, &y, &m, &n);
    
    //выводим исходные данные
    printf("\n\nYou've just inputed next values:\n x = '%d'\n y = '%d'\n m = '%d'\n n = '%d'\n", x, y, m, n);
 
    //подготавливаем маску
    //"a (*)= b" это то же самое что и "a = a (*) b" - вместо (*) подставить нужный оператор
    mask = all_bits_up; //включаем все биты
    mask <<= n;         //сдвигаем влево на n бит
    mask ^= -1;         //инвертируем (исключающее ИЛИ с универсальным множеством)
    mask <<= m;         //сдвигаем влево на m бит
 
    //Дальше нужно вырезать нужные биты их 'x' и 'y' и склеять их в 'x_new'
 
    //1)  0xCCCCCCCC  2)  0xAAAAAAAA  3)  0xCCCC00CC
    //   &               &               |
    //    0xFFFF00FF      0x0000FF00      0x0000AA00
    //   =               =               =
    //    0xCCCC00CC      0x0000AA00      0xCCCCAACC
 
 
    //mask ^ all_bits_up - инвертация маски
    //x & ( mask ^ all_bits_up ) - все биты из 'x' которые равны '1' в инвертированой маске
    //y & mask - все биты их 'y' которые равны '1' в неинвертированой маске
    //x & ( mask ^ all_bits_up ) | y & mask - наложение результата друг на друга
    x_new = x & ( mask ^ all_bits_up ) | y & mask;
 
 
    //теперь нужно получить маску из единиц и шести нулей в конце
    mask = all_bits_up; //все единицы
    mask >>= 6;         //сдвигаем на 6 вправо, что бы получить нули в конце
    y_new = y | ( mask ^ all_bits_up ); //логическое ИЛИ с маской оставит исходные биты в тех местах где в маске '1' и перетрет нулем в тех где '0'
 
    //теперь нужно вывести побитово в столбик старые и новые значения
    for (unsigned int i = 0 ; i < sizeof(int) * 8 ; i++)
    {
        //сдвигаем единичку на текущее значение i что бы проверить какое значение текущего бита каждого значения
 
        // 1010 & 0010 != 0 но 1001 & 0010 == 0
        int next_bit_x      = ( ( 1 << i ) & x) ? 1 : 0;
        int next_bit_y      = ( ( 1 << i ) & y) ? 1 : 0;
        int next_bit_x_new  = ( ( 1 << i ) & x_new) ? 1 : 0;
        int next_bit_y_new  = ( ( 1 << i ) & y_new) ? 1 : 0;
 
        if (i == 0)
        {
            printf("\nx(old): %d y(old): %d x(new): %d y(new): %d\n", 
                next_bit_x,
                next_bit_y,
                next_bit_x_new,
                next_bit_y_new);
        }
        else
        {
            //каждые четыре строчки выводим разделитель
            if ( i % 4 == 0) //оператор % это остаток от деления по модулю
            {
                printf("[%d-%d]\n", i, i + 3);
            }
 
            printf("        %d         %d         %d         %d\n", 
                next_bit_x,
                next_bit_y,
                next_bit_x_new,
                next_bit_y_new);
        }
    }
}
Добавлено через 41 секунду
Лабораторная работа№1. Вариант 1 – (2009)
Написать программу на языке C++, читающую со стандартного ввода 4 деся-
тичных числа x, y,m, n. Все смещения будут указываться начиная с младшего
бита, начиная с 0.
Из числа y n бит начиная с m-го поместить в соответствующие биты в x, и
установить в ‘1’ значения 6 старших бит в y.
Программа должна вывести все исходные данные в десятичном виде,
исходные и полученные значения x, y в двоичном виде в столбик, причём
справа от числа должно быть выведено имя соответствующей переменной.
В программе не должно быть более одного цикла. Не следует использовать
классы и библиотеки для работы с битовыми объектами. Рекомендуется не
изменять исходные переменные, следует определить выходные и временные
переменные. Программа должна быть корректной вне зависимости от коли-
чества бит в целом числе на данной архитектуре.

Добавлено через 39 секунд
вот листинг но программа работает неправильно
а иногда вообще не работает
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru