Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Jumb0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 85
#1

Типы данных, определяемые пользователем - C++

25.11.2012, 23:32. Просмотров 2444. Ответов 24
Метки нет (Все метки)

3. Разработать битовое поле, описывающее состояния элементов прибора. Ввести с консоли число в 16-ричной системе счисления, преобразовать его в битовое поле за счёт использования объединения. Вывести на консоль состояния элементов прибора, соответствующие состоянию битов во введённом числе.

(MP3 проигрыватель-диктофон. Элементы: воспроизведение вкл/выкл, пауза вкл/выкл, запись вкл/выкл.)
По возможности . можете написать на си
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2012, 23:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Типы данных, определяемые пользователем (C++):

Структуры, объединения и определяемые пользователем типы. Массивы структур - C++
Здравтсвуйте! Помогите, пожалуйста, разобраться с одной задачкой! Условие следующее: Разработать программу обработки данных...

Манипуляторы, определяемые пользователем - C++
Суть программки в то, что нужно создать класса MyClass, в которой добавлены манипуляторы iOnly и jAlso, управляющие выводом на экран i и j,...

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си? - C++
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы: 1. Можете ли на понятным для...

Типы данных - C++
__int64 Z = pow(a,x); long double Y = 9/Z; cout<<Y //Y = 0 Как вывести подробней? Добавлено через 6 минут И при Y%Z не...

Типы данных - C++
Ребят, можете мне помочь написать простенькую прогу на c++ где использовались бы все типы данных.Заранее большое спасибо.

Типы данных - C++
Какого типа мне нужна переменная, чтобы принимала во такое число: 100000000000000 (15 цифр) ???

24
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
26.11.2012, 00:24 #2
Это форум С++, поэтому напишу на С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
union status{
    struct{
        unsigned rec  : 1;
        unsigned pause: 1;
        unsigned play : 1;
    }bits;
    unsigned char data;
};
int main(){
    union status MyStat;
    printf("input hex byte:");
    scanf("%x", &(MyStat.data));
    printf("\ndevice status:");
    printf("\nrec  :%s", (MyStat.bits.rec  )?"on":"off");
    printf("\npause:%s", (MyStat.bits.pause)?"on":"off");
    printf("\nplay :%s", (MyStat.bits.play )?"on":"off");
    getchar();
return 0;
}
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
26.11.2012, 00:41 #3

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Это форум С++, поэтому напишу на С++
А написали на чистом Си.



Добавлено через 1 минуту
Цитата Сообщение от Jumb0 Посмотреть сообщение
Разработать битовое поле,
std::bitset. Раз уж С++.
0
activnaya
256 / 46 / 2
Регистрация: 24.11.2012
Сообщений: 466
26.11.2012, 00:59 #4
Цитата Сообщение от Jumb0 Посмотреть сообщение
Ввести с консоли число в 16-ричной системе счисления, преобразовать его в битовое поле за счёт использования объединения.
разъяснить бы
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
26.11.2012, 01:03 #5
del...
0
activnaya
256 / 46 / 2
Регистрация: 24.11.2012
Сообщений: 466
26.11.2012, 01:05 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от go Посмотреть сообщение
activnaya, если просите помощи, так уважайте других.
не поняла. Я говорю что мне непонятно это предложение, и поэтому я не понимаю как помочь человеку. Хотя с удовольствием бы ему написала эту программу. Вот ты можешь мне растолковать это предложение?
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
26.11.2012, 01:06 #7
activnaya, Простите, это не к Вам относится. Я ошибся. Извините.
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
26.11.2012, 01:06 #8
Цитата Сообщение от go Посмотреть сообщение
Просто зачем изобретать велосипед?
просто для того, чтобы изучить язык. А то так можно довольно долго программировать и не подозревать, что в языке С++ существуют объединения, битовые поля и поразрядные операторы.
0
activnaya
256 / 46 / 2
Регистрация: 24.11.2012
Сообщений: 466
26.11.2012, 01:13 #9
мало того, что преобразовать число в битовое поле, так еще и с помощью операции объединения.
http://www.cyberforum.ru/cgi-bin/latex.cgi?A\cup B = C, \{ c \in C : \(c \in A \) \wedge \(c \in B\) \}
Преподы там упоротые сидят что ли?
0
Jumb0
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 85
26.11.2012, 01:19  [ТС] #10
Все . я разобрался . спасибо . мне бы вот эту помочь рекурсивная функция
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
26.11.2012, 01:26 #11
Цитата Сообщение от activnaya Посмотреть сообщение
мало того, что преобразовать число в битовое поле, так еще и с помощью операции объединения.
Преподы там упоротые сидят что ли?
Во, о чём я говорю. Нынешние изучающие С++, даже не поняли, что задание требует использовать union. Но конечно, зато про std::bitset все знают и что-то на преподов катят. Извиняюсь если что.
0
activnaya
256 / 46 / 2
Регистрация: 24.11.2012
Сообщений: 466
26.11.2012, 01:41 #12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Во, о чём я говорю. Нынешние изучающие С++, даже не поняли, что задание требует использовать union.
Если ты про ЯП Си, то напрасно. Я уверена, что могу использовать его возможности как минимум не хуже тебя. Кстати, было бы разумнее не структуру вложить в объединение, а наоборот - объединение в структуру (как это обычно и делается). О птичках.

Добавлено через 3 минуты
+ еще спецификатор %x подразумевает тип unsigned int (который далеко не всегда, точнее почти никогда) не равен двум байтам.
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
26.11.2012, 01:57 #13
Цитата Сообщение от activnaya Посмотреть сообщение
+ еще спецификатор %x подразумевает тип unsigned int (который далеко не всегда, точнее почти никогда) не равен двум байтам.
Кстати да.
Kuzia domovenok, чем мотивирован его выбор?
0
Kuzia domovenok
2130 / 1958 / 197
Регистрация: 25.03.2012
Сообщений: 6,821
Записей в блоге: 1
26.11.2012, 02:09 #14
Цитата Сообщение от go Посмотреть сообщение
Кстати да.
Kuzia domovenok, чем мотивирован его выбор?
не знаю. а что придётся читать байт и сохранять только младший? или хранить эти биты в int?
Выбор то мотивирован условием, требующим вводить с консоли число в 16ричной системе.
Можно конечно вообще тупо читать 2 символа (0..9a..f) и переводить их в число из 16й системы.
Цитата Сообщение от activnaya Посмотреть сообщение
Кстати, было бы разумнее не структуру вложить в объединение, а наоборот - объединение в структуру
А вот с этим ну никак не могу согласиться. Объединение каких элементов в структуру вкладывать? У меня объединение байта и вложенной структуры. Всё логично: благодаря объединению к одной и той же переменной можно обращаться или как к байту или как к структуре битов. А иначе что за белиберда получится?
0
activnaya
256 / 46 / 2
Регистрация: 24.11.2012
Сообщений: 466
26.11.2012, 03:33 #15
Kuzia domovenok, в том-то и дело, что под объединением в ТЗ скорее всего подразумевается именно побитовое ИЛИ. Я вообще не понимаю зачем и для чего (и как это сюда прилепить, чтобы было похоже на программу) в данном случае необходимо использовать union. Вот мой вариант
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
#include <stdio.h>
#include <stdlib.h>
 
enum {PLAY = 1, PAUSE = 2, RECORD = 4};
 
typedef struct {
    size_t status : 3;
} status_t;
 
int main()
{
    status_t standing;
    size_t value;
 
    while( scanf("%x", &value) != 1)
        ;
    standing.status |= value;
 
    if(standing.status & PLAY)
        printf("is playing\n");
    if(standing.status & PAUSE)
        printf("is paused\n");
    if(standing.status & RECORD)
        printf("is records\n");
 
    exit(EXIT_SUCCESS);
}
Добавлено через 15 минут
тут разработано
Цитата Сообщение от Jumb0 Посмотреть сообщение
битовое поле, описывающее состояния элементов прибора
есть ввод
Цитата Сообщение от Jumb0 Посмотреть сообщение
с консоли число в 16-ричной системе счисления
есть преобразование
Цитата Сообщение от Jumb0 Посмотреть сообщение
его в битовое поле за счёт использования объединения
есть вывод
Цитата Сообщение от Jumb0 Посмотреть сообщение
на консоль состояния элементов прибора, соответствующие состоянию битов во введённом числе.
всё по ТЗ
0
26.11.2012, 03:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2012, 03:33
Привет! Вот еще темы с ответами:

типы данных - C++
int x1, x2; float summa; x1 = 5; x2 = 6; summa = (x1 + x2)/2; cout &lt;&lt; summa &lt;&lt; endl; почему в результате 5, а не...

Типы Данных - C++
Извиняюсь, за тупой вопрос, но какой самый большой целочисленный тип данных доступный в компиляторе visual c++ express edition 2010, по...

типы данных - C++
уважаемые программисты, как отвести типу char 2 байта? пишу шахматы, 6 фигур, хочу, чтобы каждый бит отводился для определенной фигуры, +...

Типы данных - C++
Добрый день. Очень нужна помощь умных людей в написании программы, задание приведено ниже. Буду очень благодарен если кто-то откликнется. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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