Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Symonenko
11 / 11 / 12
Регистрация: 20.11.2017
Сообщений: 84
#1

Цикл выводит ненужную ин-фу - C (СИ)

03.01.2018, 18:59. Просмотров 150. Ответов 5
Метки нет (Все метки)

Вот вся прога, при повторе цикла он выводит то, что я прописал в default в switch. Можно как-то этого избежать?
http://www.cyberforum.ru/c-beginners/thread1785468.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2018, 18:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Цикл выводит ненужную ин-фу (C (СИ)):

Цикл: Написать программу, которая выводит фигуру в виде пирамиды
Здравствуйте. Я начинающий программист. Учусь по книге Стивена Прата. Дошел до...

Цикл не выводит то, что надо
вот код С вводом тоже проблема. Первую переменную ввожу,вторую - пропускает....

Цикл for не выводит желаемого результата
функция (x,n), которая возвращает x в степени n. Иначе говоря, умножает x на...

Цикл for. Выводит пустые блоки
Друзья, помогите с проблемой: Есть постраничный вывод новостей из БД. На...

Цикл выводит только одну запись
почему выводится только 1 запись? вроде бы цикл объявлен правильно <?...

5
devMax
3 / 3 / 2
Регистрация: 24.12.2017
Сообщений: 16
03.01.2018, 22:49 #2
Предоставь весь код.
0
Symonenko
11 / 11 / 12
Регистрация: 20.11.2017
Сообщений: 84
03.01.2018, 23:48  [ТС] #3
Цитата Сообщение от devMax Посмотреть сообщение
Предоставь весь код.
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#include<stdio.h>
#include<Windows.h>
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    system("color F0");
    
    int n=1;
    while(n!=2) {
        
    char a;
    printf("Введите: \n");
    scanf("%c", &a);
    
    switch (a) {
        
        case 'A': 
                  printf(".-");
                  Beep(500, 1000/4);
                  Beep(500, 1000);
        break;
        case 'B': 
                  printf("-...");
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
        break;
        case 'C': 
                  printf("-.-.");
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1500);
                  Beep(500, 1000/4);
        break;
        case 'D': 
                  printf("-..");
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
        break;
        case 'E': 
                  printf(".");
                  Beep(500, 1000/4);
        break;
        case 'F': 
                  printf("..-.");
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 1500);
                  Beep(500, 1000/4);
        break;
        case 'G': 
                  printf("--.");
                  Beep(500, 1000);
                  Beep(500, 1000);
                  Beep(500, 1000/4);
        break;
        case 'H': 
                  printf("....");
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
        break;
        case 'I': 
                  printf("..");
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
        break;
        case 'J': 
                  printf(".---");
                  Beep(500, 1000/4);
                  Beep(500, 1000);
                  Beep(500, 1000);
                  Beep(500, 1000);
        break;
        case 'K': printf("-.-");
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1500);
        break;
        case 'L': 
                  printf(".-..");
                  Beep(500, 1000/4);
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
        break;
        case 'M': 
                  printf("--");
                  Beep(500, 1000);
                  Beep(500, 1000);
        break;
        case 'N': 
                  printf("-.");
                  Beep(500, 1000);
                  Beep(500, 1000/4);
        break;
        case 'O': 
                  printf("---");
                  Beep(500, 1000);
                  Beep(500, 1000);
                  Beep(500, 1000);
        break;
        case 'P': 
                  printf(".--.");
                  Beep(500, 1000/4);
                  Beep(500, 1000);
                  Beep(500, 1000);
                  Beep(500, 1000/4);
        break;
        case 'Q': 
                  printf("--.-");
                  Beep(500, 1000);
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1500);
        break;
        case 'R':
                  printf(".-.");
                  Beep(500, 1000/4);
                  Beep(500, 1000);
                  Beep(500, 1000/4);
        break;
        case 'S': 
                  printf("...");
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
        break;
        case 'T': 
                  printf("-");
                  Beep(500, 1000);
        break;
        case 'U': 
                  printf("..-");
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 1500);
        break;
        case 'V': 
                  printf("...-");
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
                  Beep(500, 2000);
        break;
        case 'W': 
                  printf(".--");
                  Beep(500, 1000/4);
                  Beep(500, 1000);
                  Beep(500, 1000);
        break;
        case 'X': 
                  printf("-..-");
                  Beep(500, 1000);
                  Beep(500, 250);
                  Beep(500, 250);
                  Beep(500, 1000);
                  Beep(500, 1000);
        break;
        case 'Y': 
                  printf("-.--");
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1500);
                  Beep(500, 1500);
        break;
        case 'Z': 
                  printf("--..");
                  Beep(500, 1000);
                  Beep(500, 1000);
                  Beep(500, 1000/4);
                  Beep(500, 1000/4);
        break;
    
        default : 
                  printf("Не знаю такого символа");
        break; 
    }
 
    printf("\n");   
} 
 
    system("PAUSE");
    return 0;
}
0
likehood
930 / 789 / 378
Регистрация: 25.12.2016
Сообщений: 2,627
Завершенные тесты: 3
04.01.2018, 00:27 #4
Symonenko, когда вы нажимаете Enter после ввода нужной буквы, во входной поток так же попадает символ '\n', который тут же считывается на следующей итерации цикла. Чтобы этого не было, его нужно вручную извлечь из потока, вызвав getchar() сразу после scanf.

Добавлено через 1 минуту
C
1
2
scanf("%c", &a);
getchar();
2
spvert
172 / 81 / 30
Регистрация: 25.11.2017
Сообщений: 285
Завершенные тесты: 1
04.01.2018, 03:17 #5
То что вам надо поправить, чтобы заработал ввод (VS2015):
C
1
2
3
4
5
        char a;
        printf("Enter: \n");
        scanf_s("%c", &a, 1);
        getchar();
        printf("Enter is %c (%02X)", a, a);
Охота вам писать здоровый кейс?
Загоните всю кодировку морзянки в массив, далее по введенной букве (а в изначальной программе, как я понимаю, еще и цифре) находите свою строку морзянки и отбипиваете ее.

Кликните здесь для просмотра всего текста
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
const struct _TMorse
{
    char key;
    char beeps[8];
} Morze[] = 
{
    { 'A', ".-" },
    { 'B', "-..." },
    { 'C', "-.-." },
    { 'D', "-.." }
};
 
int main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    system("color F0");
 
    int n = 1;
    while (n != 2) 
    {
 
        char a;
        printf("Enter: \n");
        scanf_s("%c", &a, 1);
        getchar();
        printf("Enter is %c (%02X)\n", a, a);
 
        for (n = 0; n < sizeof(Morze) / sizeof(_TMorse); n++)
        {
            if (Morze[n].key == a)
            {
                char *s = (char *) Morze[n].beeps;
                while (*s)
                {
                    switch (*s)
                    {
                    case '.': { printf("."); Beep(500, 1000 / 4); break; }
                    case '-': { printf("-"); Beep(500, 1000); break; }
                    default: Beep(1000, 2000); break;
                    }
                    s++;
                }
                n = -1; 
                break;
            }
        }
        if (n != -1) printf("Unknown enter");
        printf("\n");
    }
 
    system("PAUSE");
    return 0;
}
1
Symonenko
11 / 11 / 12
Регистрация: 20.11.2017
Сообщений: 84
04.01.2018, 22:40  [ТС] #6
спасибо большое всем!
0
04.01.2018, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2018, 22:40
Привет! Вот еще темы с решениями:

Цикл не выводит данные в поле со списком
Доброго времени суток! Хочу, чтобы у меня печаталось определённое количество...

Цикл выводит не все элементы массива
Всем привет! Очень нужна ваша помощь! Код выводит данные не с первого элемента,...

Цикл с mysql. Выводит только 1 запись
Почему когда я пытаюсь вытянуть уровень, то выводит только 1 запись из mysql? ...

Цикл выводит одинаковые значения в массиве
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace...


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

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

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