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

Не работает операция switch-case - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перенести записи с двух массивов в третий http://www.cyberforum.ru/cpp-beginners/thread789694.html
Помогите пожалйста))) Очень нужно) Можна идею подсказать как сделать задание, а то я не совсем понимаю как его делать. Задание: Заданы два массива записей, каждый из которых содержит фамилии и адреса сотрудников. Составленная программа должна перенести (в любом порядке) записи с двух массивов в третий, причем с двух одинаковых записей переносится только одна.
C++ Получить новую матрицу путем сложения Кто может уделить немного времени знающий язык С++ и помочь сделать данную программу плиз... с операторами ввода/вывода( printf("..");/scanf("...");) плиз, буд оч. благодарен программистам которые помогут. задание: Получить новую матрицу путем сложения всех элементов данной матрицы с ее наименьшим по модулю элементом. Добавлено через 20 минут нуждаюсь в помощи от программиста С++... http://www.cyberforum.ru/cpp-beginners/thread789687.html
Вывод ошибки для дробного и отрицательного числа C++
Пишу код для программы вычисления факториала числа. Как его изменить так, чтобы при вводе дробного и отрицательного числа выводилась ошибка? Заранее спасибо #pragma once #include "stdafx.h" #include "fact.h" #include <stdio.h> long double fact(int N)
C++ Вложенные циклы. Различным набором разных гирек определить заданный вес показать все варианты и выбрать минимальный
Всем доброго времени суток.Пожалуйста помогите чайнику справиться с задачей.Дано 10 разновесов(гирек).Требуется различным набором разных гирек определить заданный вес показать все варианты и выбрать минимальный. Мозги уже вспухли,а ничего лучшего не придумал иначе,как перебрать все варианты.Вот мой упрощенный код: #include <iostream> #include <iomanip> using namespace std; int main()
C++ Запоминание последовательности чисел компьютером http://www.cyberforum.ru/cpp-beginners/thread789682.html
Нужно написать программу на C++ ,типа приложение на запоминание последовательности чисел компьютером,это все нужно сделать по уровням сложности,чтобы можно было выбирать любой из уровней. Буду очень благодарен:cry:
C++ Подсчет строк в гигантском текстовом файле > 4 Гб Всем привет, я новичок в С++, но очень стараюсь. Прочитал Дейтелов и теперь хочу сделать что-то практическое и полезное. Сам занимаюсь этическим хакингом , есть небольшая практическая цель - написать прогу, которая бы обьединяла N текстовых файлов - словарей для брутфорса в один гигантский, при этом бы сортировала слова и удаляла повторяющиеся. И при этом бы не жрала память. Начало было... подробнее

Показать сообщение отдельно
UVEN
3 / 3 / 0
Регистрация: 19.02.2013
Сообщений: 26
19.02.2013, 05:16     Не работает операция switch-case
Проблема вот в чем ...
Ваша программа показывает число 123 как 01111011
"Female" выводиться в том случае, когда переменная c равна 1, но при сдвиге на 7 у вас получается 0, поэтому на экран отобразиться надпись "male".. Должно быть (c>>6) а не (c>>7)

Далее надпись "long" будет при ((c<<3)>>9)
Надпись Business будет при (c>>6)<<1
Надпись yes будет при (c<<6)>>12

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
89
90
91
92
93
94
95
96
97
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char array[8];
    unsigned int c, i;
    printf("\n vvedite desyatichnoe chislo= ");
    scanf("%s", &array[0]);
    printf("\n dvoichnoe chislo=");
    for (i = 0; i < 8; i++)
    {
        c = atoi(array);
           printf("%hhd", ((c << i) >> 7) & 1);
    }
    switch (c>>6)
    {
        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;
    }
 
    if ((c<<7)==0)
    {
        switch ((c<<3)>>6)
        {
            case 0: printf("plumber");
                break;
            case 1: printf("president");
                break;
            case 2: printf("student");
                break;
            case 3: printf("tutor");
                break;
        }
        switch ((c<<5)>>6)
        {
            case 0: printf("sport");
                break;
            case 1: printf("classic");
                break;
            case 2: printf("busines");
                break;
            case 3: printf("hippie");
                break;
        }
    }
    else
    {
 
        switch ((c<<3)>>9)
        {
            case 0: printf("short");
                break;
            case 1: printf("long");
                break;
        }
 
        switch ((c>>6)<<1)
        {
            case 0: printf("sport");
                break;
            case 1: printf("classic");
                break;
            case 2: printf("busines");
                break;
            case 3: printf("hippie");
                break;
        }
 
        switch ((c<<6)>>12)
        {
            case 0: printf("no");
                break;
            case 1: printf("yes");
                break;
        }
    }
    return 0;
}
switch работают как всегда... Проблема в том что значения с битовым смещением переменной c не попадают под case
 
Текущее время: 03:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru