Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 25.03.2021
Сообщений: 6
1

Исправить код

03.05.2021, 23:44. Показов 1237. Ответов 7
Метки нет (Все метки)

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 <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
//#include <cstdlib>
 #include <ctime>
const int NUM = 20;
const char wordlist[NUM][20] = {"арбуз", "бабушка", "воробей",
                                "дама", "ёжик", "фабрика", "гараж", "дедушка", "утка",
                                "косметика", "трактор", "лиана", "моряк", "насос", "омлет",
                                "чайка", "гитарист", "ремонт", "самовар", "яблоко" };
int main()
{
    char input[3];
    char c;
    printf(" Будешь ли вы играть игру в слова? <да/нет> ");
    scanf("%s", input);
    while((c= getchar()) != '\n' && c != EOF);
    char *p = input;
    for (; *p; ++p) *p = tolower(*p);
 
    while (strcmp(input,"да") == 0)
    {
        char target[32];
        target[0] = '\0';
 
        //wordlist[rand() % NUM]
        strcpy(target, wordlist[rand() % NUM]);
        int length = strlen(target);
 
        char attempt[]="";
        char temp = '-';
        for (int i = 0; i < length; i++)
        {
            strncat(attempt, &temp, 1);
        }
 
        char badchars[] = "";
        int guesses = 10;
        printf(" мое секретное слово %i буквы, вы догадали \n одну букву за один раз. Вы получаете %i неправильно. \n", length, guesses);
        printf("Ваша слово: %s\n", attempt);
        while (guesses > 0 && strcmp(attempt, target) != 0)
        {
            char letter;
            printf(" Угадайте слово ");
            scanf("%c", &letter);
            if (strchr(badchars, letter) != NULL || strchr(attempt, letter) != NULL)
            {
                printf(" Вы уже догадались. Попробуйте еще раз.. \n ");
                continue;
            }
            char* loc = strchr(target, letter);
            if (loc == NULL)
            {
                printf("Oh, bad guess! \n ");
                --guesses;
                strncat(badchars, &letter, 1);
            }
            else
            {
                printf(" правильно! \n ");
                do
                {
                    attempt[loc - target] = letter;
                    // check if letter appears again
                    loc = strchr((loc + 1), letter);
                } while (loc != NULL);
            }
            printf("Ваша слово: %s\n", attempt);
            if (strcmp(attempt, target) != 0)
            {
                if (strlen(badchars) > 0)
                    printf(" Неправильный выбор: %s\n", badchars);
                printf("%i неверных предположений осталось\n", guesses);
            }
        }
        if (guesses > 0)
            printf(" Это правильно!\n ");
        else
            printf(" К сожалению, это слово %s.\n ", target);
 
        printf(" Будете ли вы играть еще?<да/нет> ");
 
        printf(" Будешь ли вы играть игру в слова? <да/нет> ");
        scanf("%s", input);
        char *p = input;
        for (; *p; ++p) *p = tolower(*p);
    }
 
    printf(" до свидания \n ");
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2021, 23:44
Ответы с готовыми решениями:

Исправить код
Кто может найти ошибку в коде, либо немного подправить мою программу!?:cry: Буду очень...

Исправить код
Не правильно считает среднее арифметическое цифр массива.Помогите пожалуйста исправить функцию. ...

MergeSort - исправить код
Доброго времени суток! Коротко о проблеме. После ознакомления с кодом в Вики и на различных...

Исправить код калькулятора
Я первокурсник, только начинаю во все это дело вливаться. Написал лабораторную, но в ней кое-какие...

7
127 / 80 / 48
Регистрация: 10.01.2020
Сообщений: 292
04.05.2021, 16:02 2
Пропишите сверху: #define _CRT_SECURE_NO_WARNINGS
И не забудьте про setlocale для кириллицы.
1
из племени тумба-юбма
2097 / 1503 / 319
Регистрация: 29.11.2015
Сообщений: 7,131
Записей в блоге: 13
04.05.2021, 16:53 3
Цитата Сообщение от stdin Посмотреть сообщение
Пропишите сверху: #define _CRT_SECURE_NO_WARNINGS
Это только для Visual Studio нужно.
Цитата Сообщение от stdin Посмотреть сообщение
И не забудьте про setlocale для кириллицы
Тоже не поможет, так как присутствует не только консольный вывод кириллицы но и ввод. Правильней будет так:
C
1
2
3
4
5
6
7
8
9
#include<Windows.h>
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    .
    .
    return 0;
}
1
0 / 0 / 0
Регистрация: 25.03.2021
Сообщений: 6
04.05.2021, 22:10  [ТС] 4
Почему-то не работает!#define _CRT_SECURE_NO_WARNINGS я нарисал.

const char wordlist[NUM][20] = {"арбуз", "бабушка", "воробей",
"дама", "ёжик", "фабрика", "гараж", "дедушка", "утка",
"косметика", "трактор", "лиана", "моряк", "насос", "омлет",
"чайка", "гитарист", "ремонт", "самовар", "яблоко" };

Добавлено через 14 секунд
Почему-то не работает!#define _CRT_SECURE_NO_WARNINGS я нарисал.

const char wordlist[NUM][20] = {"арбуз", "бабушка", "воробей",
"дама", "ёжик", "фабрика", "гараж", "дедушка", "утка",
"косметика", "трактор", "лиана", "моряк", "насос", "омлет",
"чайка", "гитарист", "ремонт", "самовар", "яблоко" };
0
из племени тумба-юбма
2097 / 1503 / 319
Регистрация: 29.11.2015
Сообщений: 7,131
Записей в блоге: 13
04.05.2021, 22:58 5
Лучший ответ Сообщение было отмечено AndreyV21 как решение

Решение

попробуйте 8 строку const int NUM = 20; заменить на #define NUM 20
1
0 / 0 / 0
Регистрация: 25.03.2021
Сообщений: 6
05.05.2021, 20:11  [ТС] 6
большое спасибо
0
0 / 0 / 0
Регистрация: 25.03.2021
Сообщений: 6
07.05.2021, 20:51  [ТС] 7
не работает правильно. ошибки слова, что делать?
0
из племени тумба-юбма
2097 / 1503 / 319
Регистрация: 29.11.2015
Сообщений: 7,131
Записей в блоге: 13
07.05.2021, 22:37 8
Дык не кому не известно, как правильно должна работать ваша программа. Как сами написали, так она и работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2021, 22:37

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Исправить код с объединениями
Здравствуйте! Получил задачу в которой нужно применить объединение. Нужно было организовать работу...

Исправить код транспонирования матрицы
помогите пожалуйста исправить программу вот я написал но она не работает Добавлено через 21...

Исправить код, что бы он заработал
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #define F 50.0 /*частота, Гц*/ #define TD 20.0...

Исправить код с Segmentation fault
после ввода третьего имени выдает Segmentation fault (core dumped) Помогите пожалуйста ...

Метод Виженера - исправить код
Помогите исправить ошибку в коде. #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;clocale&quot;...

Как исправить этот код?
Эта функция удаляет элемент, стоящий после значения 55. Как удалить элемент, стоящий ПЕРЕД 55? ...


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

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

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