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

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

Войти
Регистрация
Восстановить пароль
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
#1

Создать число из набора цифр - C++

16.02.2013, 15:22. Просмотров 464. Ответов 4
Метки нет (Все метки)

Программа переводит число из десятичной системы в двоичную. Затем мне нужно выводить надписи в зависимости от цифр в двоичной форме числа. Если первая цифра 1, то вывести "Female"..., затем такая же операция ко второй и третьей цифре.( например для числа 11100000 должно выводить Female senior и т.д.) Проблема в том, что когда я переводила число из СС в цикле for, оно записалось просто набором цифр, соответственно, программа печатает неправильный результат. Как можно исправить это?
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
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
void main()
{
    int a,c,i;
    printf("vvedite chislo=");
    scanf("%d",&a);
    printf("dvoichnoe chislo=");
    for (i=0;i<8;i++)
    {
        c=a;
        c=c<<i;
        c=c>>7;
        c=c&1;
        printf("%d",c);
    }
    switch (c>>7)
    {
    case 0: printf("\nMale ");
        break;
    case 1: printf("\nFemale ");
        break;
    }
    switch ((c<<1)>>6)
    {
    case 0: printf("child");
        break;
    case 1: printf("teenager");
        break;
    case 2: printf("adult");
        break;
    case 3: printf("senior");
        break;
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2013, 15:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать число из набора цифр (C++):

Создать число из цифр - C++
Есть одноименные темы, но к моему вопросу они не имеют отношения. Фрагмент кода: ... int array={0,1,2,3,4,5,6,7,8,9}; ... cout &lt;&lt;...

Задано натуральное число. Создать стек с его цифр. - C++
У меня такое задание: Задано натуральное число. Создать стек с его цифр. Я не понимаю что вообще нужно делать. Помогите пожалуйста.

Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1 до k) - C++
Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1...

дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!! - C++
дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!...

Печатать число из набора случайным образом: 2, 4, 6, 8, 10 - C++
Помогите пожалуйста написать программу в цикле, которая будет печатать число из набора случайным образом: 2, 4, 6, 8, 10. В программе...

Создать класс из набора функций - C++
нужно оформить все в класс пока есть только вот это class String { private: char str; public: void getStr ()

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
16.02.2013, 15:48 #2
если честно не совсем понятно что вы хотите и не совсем понятно что делается здесь


Цитата Сообщение от marina11 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
switch ((c<<1)>>6)
* * {
* * case 0: printf("child");
* * * * break;
* * case 1: printf("teenager");
* * * * break;
* * case 2: printf("adult");
* * * * break;
* * case 3: printf("senior");
* * * * break;
* * }
0
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
16.02.2013, 16:12  [ТС] #3
Цитата Сообщение от MrGrig Посмотреть сообщение
если честно не совсем понятно что вы хотите и не совсем понятно что делается здесь
Извиняюсь,что непонятно, просто язык начала изучать недавно...
PHP
1
switch ((c<<1)>>6)
Беру значения второй и третьей ячеек и сдвигаю их так, чтобы они оказались справа, а все остальное обнулилось, например число 01111011, я сдвигаю так,чтобы 2 и 3 оказались в конце числа (сдинув сначала на 1 влево,а потом на 6 вправо): 00000011
А далее с помощью case вывожу надпись, в зависимости от того какое число в двоичной системе у меня получилось.

Может быть перевод из десятичной в двоичную (в начале) делать каким-то другим способом?
0
Maxim Prishchepa
Эксперт С++
1922 / 1034 / 74
Регистрация: 29.03.2010
Сообщений: 3,167
16.02.2013, 16:16 #4
как-то сложно... я бы сделал нечто этокое:
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
struct MasksStruct{
  int mask;
  char display[25];
};
 
main(...){
  const int masksCount = 3;
  MasksStruct myMasks[masksCount];
  for(int i = 0; i < maskCount; ++i) {
     char display[25];
     switch(i) {
         case 0: strcpy(display, "child");
         case 1: strcpy(display, "teenager");
        //...
     }
     strcpy(myMasks[i].display, display);
     myMasks[i].mask = 1 << i;
   }
   char ch;
   cin >> ch;
 
  for(int i = 0; i < masksCount; ++i) {
      if (1 == (ch & myMasks[i].mask)) {
            cout << myMasks[i].display;
      }
  }
}
хе)) сча прочитал написанное, понял, что очень сильно облегчил)))
0
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
16.02.2013, 16:56 #5
marina11, можёт подойдёт чтото типа такого
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
#include <string>
#include <iostream>
 
using namespace std;
 
union data
{
   struct{
   unsigned short firstname : 1;
   unsigned short lastname : 1;
   unsigned short password : 1;
   //...  запись в переменные идёт снизу вверх, т. е справа на лево
   };
   int i;
};
 
 
const unsigned int size = 8;
int main(){
   data d;
   d.i = 0b100;
   cout << d.firstname << d.lastname <<d.password <<endl;
 
 return 0;
}
вам только нужно писать имя интересуещего вас бита, обращение компилятор сделает сам

Добавлено через 9 минут
Цитата Сообщение от Van111 Посмотреть сообщение
struct{
* *unsigned short firstname : 1;
* *unsigned short lastname : 1;
* *unsigned short password : 1;
* *//... *запись в переменные идёт снизу вверх, т. е справа на лево
* *};
если вы хотите чтоб первый бит d.i = 0b100; отвечал за фамилию то вы её должны поставить данный бит в конец. это при условии что ваш компилятор раставляеет данные именно так, как вы указали
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2013, 16:56
Привет! Вот еще темы с ответами:

Заменить данное натуральное число на число, которое получается из исходного записью его цифр в обратном порядке. Например, дано число 156, нужно получ - C++
Вобщем,если не сложно,именно саму функцию помочь написать,ибо я просто не могу понять:) Добавлено через 22 минуты вот так...

Найти минимальное положительное число из данного набора - C++
Дано целое число N и набор из N целых чисел. Найти минимальное положительное число из данного набора. Если положительные числа в наборе...

Вывести на экран наименьшее и наибольшее число из набора чисел - C++
Пользователь вводит числа, заканчивая ввод нулем. Вывести на экран наименьшее и наибольшее число из набора.

Из 8 различных цифр составить число, делящееся на любую из этих цифр - C++
Необходимо из 8 различных цифр составить число, делящееся на любую из этих цифр. Добавлено через 9 минут Не понимаю как сделать цикл...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.02.2013, 16:56
Ответ Создать тему
Опции темы

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