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

Игра "Угадай число"

30.05.2013, 16:00. Показов 11828. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите мне, пожалуйста. Нужно написать игру «Угадай число». Программа с помощью датчика случайных чисел выбирает число в диапазоне от 0 до 9. Угадать это число за три попытки. После каждой попытки сообщается, больше или меньше названное число задуманного.
Вот мой код:
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
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"
 
int main()
{
    srand (unsigned (time(NULL)));
    int i, a, b, c;
    printf("Igra ygadai chislo\n");
    printf("Computer zagadal chislo ot 0 do 9\n");
    a=rand()%9+0;
    do
    {
     c:
    printf("Vvedite chislo i nagmite Enter\n");
    scanf("%d", &b);
    if(b==a)
    {
        printf("Vi viigraly\n");
        //printf("Vi otgadaly s i popytki");
    }
    if(b>a)
    {
        printf("Net, vvedennoe chislo bolshe\n"); goto c;
    }
    if(b<a)
    {
         printf("Net, vvedennoe chislo menshe\n"); goto c;
    }
    if(b!=a && i==3)
    {
         printf("Vi prigraly\n");
         printf("Pravilnoe chislo\n", a); break;
    }
    }
    while(i!=3);
    getche();
}
Вроде бы все работает, но не очень правильно, потому что программа не ограничивается тремя попытками, а после выигрыша игра не заканчивается. Очень нужна помощь,
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2013, 16:00
Ответы с готовыми решениями:

Игра "Угадай число"
Создать программу, которая «задумывала» бы целое положительное число из указанного пользователем...

Программа Угадай Число
У меня 110 кнопок мне надо сделать так что каждая кнопка имела своё число но оно должно меняться...

Написать игру «Угадай число»
Написать игру «Угадай число». Программа загадывает число в диапазоне от 1 до 500. Пользователь...

Угадай число или быки и коровы
Написать программу на си, использую библиотеку &lt;graphics.h&gt;, но не пользуюсь ооп. Правила...

Игра «угадай число». Задуманное число рассчитать из текущей секунды часов
Разработать программу на языке Ассемблера Intel x86 для ОС MS-DOS. Модель памяти – не...

15
69 / 83 / 33
Регистрация: 09.12.2012
Сообщений: 222
Записей в блоге: 3
30.05.2013, 17:03 2
Gina, во-первых, у вас цикл пока i не равно 3, когда i будет равна 3 если вы её не увеличиваете, если вы хотите чтобы когда число введённое становилось равно загаданному программа заканчивала действие, то добавьте либо выход из цикла(break), либо вообще выход из программы(exit(0)).
0
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 38
30.05.2013, 17:19  [ТС] 3
Цитата Сообщение от Федя Форточкин Посмотреть сообщение
Gina, во-первых, у вас цикл пока i не равно 3, когда i будет равна 3 если вы её не увеличиваете, если вы хотите чтобы когда число введённое становилось равно загаданному программа заканчивала действие, то добавьте либо выход из цикла(break), либо вообще выход из программы(exit(0)).
Т.е. вот так надо?
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
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"
 
int main()
{
    srand (unsigned (time(NULL)));
    int i, a, b, c;
    printf("Igra ygadai chislo\n");
    printf("Computer zagadal chislo ot 0 do 9\n");
    a=rand()%9+0;
    do
    {
    c:
    printf("Vvedite chislo i nagmite Enter\n");
    scanf("%d", &b);
    if(b==a)
    {
        printf("Vi viigraly\n");
    }
    if(b>a)
    {
        printf("Net, vvedennoe chislo bolshe\n"); goto c;
    }
    if(b<a)
    {
         printf("Net, vvedennoe chislo menshe\n"); goto c;
    }
    if(b!=a && i==3)
    {
         printf("Vi prigraly\n");
         printf("Pravilnoe chislo\n", a); break;
    }
    if(i==3) break;
    i++;
    }
    while(i!=3);
    getche();
}
Только все равно я что-то не так делаю.
0
69 / 83 / 33
Регистрация: 09.12.2012
Сообщений: 222
Записей в блоге: 3
30.05.2013, 17:52 4
Gina, вот тут вот:
C++
1
2
3
4
 if(b==a)
    {
        printf("Vi viigraly\n");
    }
надо добавить либо break либо exit(0), а вот это
C++
1
if(i==3) break;
уберите, просто инкрементируйте i, как только она станет равна трём автоматом из цикла выйдёт
1
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 38
30.05.2013, 17:57  [ТС] 5
Федя Форточкин, спасибо) После выигрыша программа заканчивает работу. Но вот все равно она не ограничивается тремя попытками.
0
69 / 83 / 33
Регистрация: 09.12.2012
Сообщений: 222
Записей в блоге: 3
30.05.2013, 18:00 6
Gina, а i вы увеличиваете?
0
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 38
30.05.2013, 18:17  [ТС] 7
Увеличиваю. Я и через for пробовала. Писала for(i=0;i<=2;i++).
А если с do while:
do{
....
i++;
}
while(i!=3);
0
69 / 83 / 33
Регистрация: 09.12.2012
Сообщений: 222
Записей в блоге: 3
30.05.2013, 18:23 8
Gina, поставь условие i<3
0
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 38
30.05.2013, 18:30  [ТС] 9
Все равно(((
0
95 / 95 / 58
Регистрация: 04.10.2012
Сообщений: 189
30.05.2013, 22:29 10
Да у вас просто логика в программе страдает.
Вот как можно было реализовать:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "time.h"
 
int main(void)
{
    int i, a, b;
    srand (time(NULL));
    printf("Igra ygadai chislo\n");
    printf("Computer zagadal chislo ot 0 do 9\n");
    a = rand()%9;
    for (i=0; i < 3; i++)
    {
        printf("Vvedite chislo i nagmite Enter\n");
        scanf("%d", &b);
        
        if (a == b) break;
        
        if (a > b) printf("Net, vvedennoe vami chislo menshe\n");
        
        if (a < b) printf("Net, vvedennoe vami chislo bolshe\n");
    }
    
    if (i == 3) printf("You lose\n");
    else printf("You win!\n");
    
    getch();
    return 0;
}
2
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 38
30.05.2013, 23:35  [ТС] 11
uburuntu, спасибо огромное)))
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
31.05.2013, 01:53 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    int i, var = 10, maxTries = 3, randNumber;
    srand(time(NULL));
    randNumber = rand() % 10;
    
    for (i=0; i < maxTries && var != randNumber; i++)
    {
        printf("Enter variable: ");
        scanf("%d", &var);
        
        if (var == randNumber)
            printf("You win!");
        else
            printf(var < randNumber ? "Higher\n" : "Lower\n");
    }
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 38
16.06.2013, 19:58  [ТС] 13
Тема закрыта. Ответ найден.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,763
17.06.2013, 18:42 14

Не по теме:

Цитата Сообщение от Gina Посмотреть сообщение
Тема закрыта. Ответ найден.
Да щас! Hello World fest detected!


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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define NUM_OF_ATTEMPTS (3)
#define NUMBER_BOUND (10)
 
int main(void) {
    int number, guessed, attempt;
    
    srand(time(NULL));
    
    number = rand() % NUMBER_BOUND;
    attempt = 1;
    
    while ( attempt <= NUM_OF_ATTEMPTS ) {
        printf("Attempt #%d: ", attempt);
        scanf("%d", &guessed);
        
        if ( guessed == number )
            break;
        printf("%s!\n", ( guessed < number ) ? "bigger" : "smaller");
        
        ++attempt;
    }
    
    printf("You %s!\n", ( attempt > NUM_OF_ATTEMPTS ) ? "loose" : "win");
}
2
81 / 81 / 33
Регистрация: 03.03.2013
Сообщений: 311
17.06.2013, 21:11 15
И каждый решил показать свой череп, перебирая разными циклами и условиями, оставаясь на одном и том же варианте )))
0
95 / 95 / 58
Регистрация: 04.10.2012
Сообщений: 189
18.06.2013, 23:12 16
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define NUM_OF_ATTEMPTS (3)
#define NUMBER_BOUND (10)
 
int main(void) 
{
    int number, guessed, attempt = 1;
 
    srand(time(NULL));
    number = rand() % NUMBER_BOUND;
 
    while ( (attempt <= NUM_OF_ATTEMPTS ? (printf("Attempt #%d: ", attempt) && scanf("%d", &guessed) && (guessed != number ? printf("%s!\n", guessed < number ? "bigger" : "smaller") : (printf("You win\n") && !(attempt = 0)))) : (printf("You lose\n") && !(attempt = 0))) && attempt++);
 
    return 0;
}
0
18.06.2013, 23:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2013, 23:12
Помогаю со студенческими работами здесь

Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона
Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона. Диапазон и...

Игра «Угадай число»
4. Игра «Угадай число». Компьютер загадывает число, человек отгадывает. Всего 5 попыток. (random)

Игра угадай число
При угадывании числа все равно пишет что не угадали помогите пожалуйста import random ...

Игра угадай число
Помогите написать программу...уже целый день мучаюсь - никак не допрут, но мысли какие-то есть) ...

Игра угадай число
стоит задача, написать простую программу, которая через prompt принимает числа от пользователя и...

Игра Угадай Число
Необходимо создать игру УГАДАЙ ЧИСЛО с помощью html + css + js в одном файле *.html например,...


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

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