Форум программистов, компьютерный форум 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++. Какие переменные надо использовать? Для примера помогите мне решить эту задачу... Число вводится своим двоичным представлением (длина числа не превышает... подробнее

Показать сообщение отдельно
JerryJackson
50 / 6 / 1
Регистрация: 15.07.2010
Сообщений: 112
29.08.2010, 23:02  [ТС]
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 секунд
вот листинг но программа работает неправильно
а иногда вообще не работает
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru