Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.03.2020
Сообщений: 7
1

Проблема с вводом

06.04.2020, 21:29. Показов 377. Ответов 1

Author24 — интернет-сервис помощи студентам
Приветствую! Писал уже на форум насчет проблемы, которую мне помогли устранить, но в следствии чего появилась новая. Старая: Выводилось два раза сообщение с призывом ввода символа.
Новая: Когда ввожу все слово сразу, получается так, что буква заходит в цикл через одну.
Если убрать getchar() и ввести всё слово, все нормально сработает, но появится старая проблема.
Заранее спасибо.
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
#include <string.h> //Подключаем библиотеки для корректной работы программы.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>  
#include <windows.h>
void Hello();
 
int main() {
    system("chcp 1251"); //Подключаем кодировку WIN1251.
    srand(time(NULL)); //Точка отсчета для rand().
    system("cls"); //Функция очищения консоли.
    const int Regist = 'a' - 'A';
    char Variants[7][12] = { "Москва", "Новосибирск", "Красноярск", "Сочи", "Владивосток", "Барнаул", "Пенза" }; //Массив с городами.
    char* word, Control[12]; //Массив для слова и массив для шифра этого слова.
 
    bool Guessed = false, Letter = false; //Первая переменная отвечает: угадали ли слово. Вторая: угадали ли букву.
 
    int Random = rand() % 7; //Случайный выбор из массива городов.
    word = Variants[Random]; //Слово = Город.
    Hello();
    switch (Random) { //Вопрос к городу.
    case 0:  printf("В каком городе находится Царь-пушка?\n"); break;
    case 1:  printf("Третий по численности город в России?\n"); break;
    case 2:  printf("В каком городе находится Коммунальный мост?\n"); break;
    case 3:  printf("В каком городе, в 2014 году, проводились Олимпийские игры?\n"); break;
    case 4:  printf("Где находятся Русский и Золотой мосты?\n"); break;
    case 5:  printf("Столица Алтайского края?\n"); break;
    case 6:  printf("Город в котором находится Музей Усадьба В.Г.Белинского?\n"); break;
 
    }
    for (int i = 0; i < strlen(word); i++) { //Заполнение (*)-ми количество букв в слове города.
        Control[i] = '*';
    }
    char symbol; //Символ пользователя.
 
 
 
    while (Guessed == false) { //Пока слово неугаданно, цикл работает.
        printf("Введите предполагаемую букву или все слово сразу: ");
        symbol = fgetc(stdin);
        getchar();
        Letter = false;
        for (int i = 0; i < strlen(word); i++) { //Буква нашлась в слове? Заменяем звездочку на нее.
 
            if (word[i] == symbol) {
                Control[i] = symbol;
                Letter = true;
            }
            if (word[i] == symbol - Regist ) { //Проверка с учетом регистра.
                Control[i] = symbol - Regist;
                Letter = true;
            }
            if (word[i] == symbol + Regist) {
                Control[i] = symbol + Regist;
                Letter = true;
            }
 
        }
 
 
        if (Letter == true) { //Выводим слово со звездочками.
            for (int i = 0; i < strlen(word); i++) {
                printf("%c", Control[i]);
            }
            printf("\n");
        }
 
        int count = 0;
        for (int i = 0; i < strlen(word); i++) { //Счетчик звездочек в слове.
            if (Control[i] == '*') {
                count += 1;
            }
        }
 
        if (count == 0) { //Условие выхода или повтра цикла.
            Guessed = true;
        }
        else {
            Letter = false;
        }
        
    }
    if (Guessed == true)
        printf("Поздравляем! Вы угадали слово!");
 
}
 
void Hello() {
    printf("Доброе время суток. Сыграем в игру?\nЭто Поле Чудес. \n");
    printf("Вам случайным образом из семи городов будет предоставлен один.\n");
    printf("Вы должны будете его угадать.\n");
    printf("Начнем: \n");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2020, 21:29
Ответы с готовыми решениями:

проблема с вводом
#include &lt;iostream&gt; #include &lt;queue&gt; // очередь #include &lt;vector&gt; // очередь using namespace...

Проблема со вводом
Здравствуйте, в коде присутствует ошибки не могу разобраться как исправить. Помогите пожалуйста....

Проблема с вводом числа
Решаю легкую задачку на степике. Решение написал, но столкнулся ошибкой, которую вижу впервые:...

Проблема с вводом пароля
Добрый вечер всем! Возникла проблема с вводом пароля. Установил manjaro linux xfce 32bit на...

1
0 / 0 / 0
Регистрация: 17.03.2020
Сообщений: 7
21.05.2020, 13:44  [ТС] 2
Проблему на СИ не решил. Перевел ввод на плюсы.
0
21.05.2020, 13:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2020, 13:44
Помогаю со студенческими работами здесь

Проблема с вводом параметров
Не могу допереть как ввести название детали с консоли? Кто знает помогите, пожалуйста. ...

Проблема с вводом данных
Нужно ввести две строки, первая строка единственное число a – количество элементов целочисленного...

Проблема с вводом-выводом из файлов
Только изучаю данную тематику, и нарвался на подобное - при попытке компилить, находит одну ошибку,...

Проблема с вводом уравнения в Mathcad
Здравствуйте, (сразу извините за такой простой и глупый вопрос, но со средой Mathcad я вообще не...

Проблема с вводом в таблицу русскоязычного текста
Доброго времени суток. В проект Visual C# 2010 Express добавил базу (Add &gt;&gt; New Item... &gt;&gt;...

Проблема с вводом символов-тегов в нотепад++
У меня установлена 7-ка, домашняя версия. Все вроде бы нормально работает, но появилась одна...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru