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

"Угадай число" (напишите программу, хочу проверить со своей). - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
POMIDORKA
 Аватар для POMIDORKA
1 / 1 / 0
Регистрация: 11.05.2011
Сообщений: 30
29.06.2011, 13:49     "Угадай число" (напишите программу, хочу проверить со своей). #1
"Угадай число". Пользователю предлагается отгадать число за 10 попыток. Программа даёт подсказки вида больше, меньше.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2011, 13:49     "Угадай число" (напишите программу, хочу проверить со своей).
Посмотрите здесь:

Игра "Угадай число" C++
Игра "Угадай число" C++
Game "Угадай число" как зделать запрет на "букви" ???? C++
C++ Игра "Угадай число"!
C++ Написать программу "Угадай число"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.06.2011, 13:53     "Угадай число" (напишите программу, хочу проверить со своей). #2
Цитата Сообщение от POMIDORKA Посмотреть сообщение
Программа даёт подсказки вида больше, меньше.
а какой диапазон чисел?
POMIDORKA
 Аватар для POMIDORKA
1 / 1 / 0
Регистрация: 11.05.2011
Сообщений: 30
29.06.2011, 13:54  [ТС]     "Угадай число" (напишите программу, хочу проверить со своей). #3
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
#include "stdafx.h"
#include <time.h>
#include <stdio.h>
#include <iostream>
 
void main()
{
    srand(time(0));
    int n=0,m=0,i=0;
    m=rand()%1024;
    while(i<10)
    {
        i++;
        printf("vvedite ygadivaemoe chislo n= ");
        scanf("&f",&n);
        if(n<m)
        {
            printf("net bolshe\n");
        }
        else
        {
            if(m<n)
            {
                printf("net menshe\n");
            }
            else
            {
                printf("da\n vi sdelali %d hodov",i);
                i=10;
            };
        }
    }
    scanf("%i",&n);
}
Добавлено через 40 секунд
любой
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
29.06.2011, 13:56     "Угадай число" (напишите программу, хочу проверить со своей). #4
Напиши лучше программу, которая так же отгадывает у пользователя его число, а он только вводит больше/меньше. ИМХО, так сложнее и интереснее.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
29.06.2011, 14:10     "Угадай число" (напишите программу, хочу проверить со своей). #5
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define LOWER_BOUND 0
#define UPPER_BOUND 20
 
int main()
{
    srand(time(NULL));
    int target_num =
        rand() % (LOWER_BOUND + UPPER_BOUND + 1) - LOWER_BOUND;
    int user_num;
    size_t attempts = 10;
        printf("You have %d attempts.\n", attempts);
    while (attempts)
    {
        printf("Enter a number from %d to %d: ",
            LOWER_BOUND, UPPER_BOUND);
        scanf("%d", &user_num);
                --attempts;
 
        if (user_num > target_num)
            printf("Less\n");
        else if (user_num < target_num)
            printf("Greater\n");
        else {
            printf("Guessed!\n");
            exit(0);
        }
    }
    printf("Your attempts run out.\n");
    exit(0);
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.06.2011, 14:15     "Угадай число" (напишите программу, хочу проверить со своей). #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{ int a,b,i;    a=rand()%1024;
i=10;
while (i--)                             {
scanf ("%d",&b);
      if (b<a) printf ("\nBolshe");
        else if (a=b) { printf ("\nUgagali");   break;}
                else printf ("\nMenshe");
             }
 
 
 
    return 0;
}
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.06.2011, 14:30     "Угадай число" (напишите программу, хочу проверить со своей). #7
Цитата Сообщение от go Посмотреть сообщение
else if (a=b)
... ==
-=ЮрА=-
Заблокирован
Автор FAQ
29.06.2011, 14:34     "Угадай число" (напишите программу, хочу проверить со своей). #8
Вот код и скриншот работы
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
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
void main()
{
start:
    printf("Vvedite chislo povtorov\t:");
    int i = 0,nCount;scanf("%d",&nCount);
    if(nCount < 1)
        nCount = 1;
    srand(time(0));
    int NUM = rand() % 1024,OTVET;
    while(i < nCount)
    {
        printf("\tPopitka %d\r\n",i + 1);
        printf("Vvedite otvet\t:");
        scanf("%d",&OTVET);
        if(NUM == OTVET)
        {
            printf("YGADALI!!!");
            break;
        }
        else
        if(NUM < OTVET)
            printf("YGADIVAEMOE CHISLO MENSHE %d\r\n",OTVET);
        else
            printf("YGADIVAEMOE CHISLO BOLSHE %d\r\n",OTVET);
        i++;
    }
    if(i == nCount && OTVET != NUM)
        printf("VI NE YGADALI!\r\nZAGADIVAEMOE CHISLO %d\r\n",NUM);
    printf("Press NUM1 to RESTART\r\n");
    scanf("%d",&i);
    if(i == 1)
        goto start;
}
Миниатюры
"Угадай число" (напишите программу, хочу проверить со своей).  
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.06.2011, 14:44     "Угадай число" (напишите программу, хочу проверить со своей). #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdlib.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{ int a,b,i;    a=rand()%1024;
i=10;
while (i--)                             {
scanf ("%d",&b);
          if (b<a) printf ("\nBolshe\n");
                else if (a==b) { printf ("\nUgagali");   break;}
                                else printf ("\nMenshe\n");
                         }
 
 
 
        return 0;
}
Добавлено через 37 секунд
Цитата Сообщение от asics Посмотреть сообщение
... ==
Спасибо
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,696
29.06.2011, 15:15     "Угадай число" (напишите программу, хочу проверить со своей). #10
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <time.h>
#include <stdio.h>
int main()
{
    srand(time(0));
    int i, n=0,m = rand()%1024;
    printf("%d\n",m);
    for (i=0;i<10;++i)
    {
        printf("vvedite ygadivaemoe chislo n= ");
        scanf("%d",&n);
        if (n==m)
        {
            printf("da\nvi sdelali %d hodov\n",i);
            break;
        }
        else
            printf("net %s\n", (m>n) ? "bolshe" : "menshe");
    }
    if (n!=m) printf("Ne ugadali\n");
    return (n==m);
}
Добавлено через 2 минуты
Цитата Сообщение от POMIDORKA Посмотреть сообщение
scanf("&f",&n);
Что в вашем коде означает "&f"?
Имхо не "&" а "%"
И не "f", а "d" - вы ж целые угадываете
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
29.06.2011, 16:35     "Угадай число" (напишите программу, хочу проверить со своей). #11
Есть на С++ у меня:
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
#include <iostream> //
using std::cout;    //
using std::cin;     //
using std::endl;    //
                    //
#include <cstdlib>  //
using std::rand;    //
using std::srand;   //
                    //
#include <ctime>    //
using std::time;    //
                    //
#include <conio.h>  //
//////////////////////
 
int main()
{
    cout << "\t\t| Hello! Thank you for using this application! |" << endl;
    cout << "\t\t|______________________________________________|" << endl;
    
    char choice; // выбор пользователя (да/нет) на повторение игры
    
 do
 {
    int random;  // случайное загаданное программой число
    int guess;   // число введенное пользователем
    
    cout << endl << endl;
    cout << "\t\tMy number is between 1 and 1000. Can you guess it?" << endl << endl;    // текст
    cout << "\t\t     Please, enter your first attempt: ";    // просит ввести первую попытку
    cin >> guess;     // записывает догадку в переменную
    
    srand (time (0) );             // совсем рандом
    random = 1 + rand() % 1000;    // задаём диапазон рандома (1 - 1000)
    
    // цикл решения больше/меньше
    while (guess != random)
     {
        if (guess > random)
         {
           cout << "\t\t\t    Too high. Try again: ";
           cin >> guess;
         }
        
        if (guess < random)
         {
           cout << "\t\t\t    Too small. Try again: ";
           cin >> guess;
         }
     }
     
     // ответ, если число таки угадали
     if (guess == random)
      {
        cout << endl;
        cout << "\t\t\t    Yeah! You are right!";
      }   
      
      // спрашивает, хочется ли сыграть ещё
      cout << endl;
      cout << "\t\t\tDo you want play again? [y/n]: ";
      cin >> choice;
      
      if (choice == 'y')
      {
      cout << ">______________________________________________________________________________<";      
      cout << endl << endl;
      }
 } while (choice != 'n');
         
      cout << endl;
      cout << "\t\t\t       Thank you! Bye!";
       
    getch();
    return 0;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.06.2011, 16:37     "Угадай число" (напишите программу, хочу проверить со своей). #12
vortexx1, так по условие только 10 попыток
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
29.06.2011, 17:48     "Угадай число" (напишите программу, хочу проверить со своей). #13
Ну, можно ведь модифицировать немного
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
29.06.2011, 19:17     "Угадай число" (напишите программу, хочу проверить со своей). #14

Не по теме:

Это в продолжение темы "Напешыте хело ворлд"?



C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MAX_NUMBER 100
#define MIN_NUMBER 1
#define ATTEMPTS 10
    
int main(void){
    int i, yourNumber, myNumber;
    
    srand(time(NULL));
    myNumber = rand() % MAX_NUMBER + MIN_NUMBER;
    
    for ( i = 0; i < ATTEMPTS && printf("Guess number from %d to %d (%d attempts left): ", MIN_NUMBER, MAX_NUMBER, ATTEMPTS - i) && scanf("%d", &yourNumber) == 1 && yourNumber != myNumber; ++i )
        printf("My number is %sward\n", ( myNumber > yourNumber ) ? "up" : "down");
    
    printf("\nYou %s!\n", ( i < ATTEMPTS ) ? "win" : "lose");
    
    return 0;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
30.06.2011, 17:24     "Угадай число" (напишите программу, хочу проверить со своей). #15
Цитата Сообщение от vortexx1 Посмотреть сообщение
Напиши лучше программу, которая так же отгадывает у пользователя его число, а он только вводит больше/меньше. ИМХО, так сложнее и интереснее.
Вот начиркал прогу, вы указывайте диапазон и число попыток компьютеру, своё число держите в уме, подсказыайте ему вот комманды: меньше, больше, угадал.
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
 
wchar_t  wtolower(wchar_t  ch)  {
     if(ch >= 1072)
         return  ch;
     if(ch + 0x20 >= 0x430 && ch + 0x20 <= 0x44F)
         return ch + 0x20;
     return ch;
}
 
 
bool  wstricmp(const wchar_t*  src, const wchar_t*  dst) {
      while( wtolower(*src) == wtolower(*dst) ) {
           *src++;
           *dst++;
           if( *src == L'\0' && *dst == L'\0')
                return true;
      }
      return  false;
}
 
 
//  диапазон угадывания: first < N < last
void  main(void) {
 
   srand(time(NULL));
   setlocale(LC_ALL, "Russia");  // "rus_rus.866" - в MS VC++ 6.0 такую локаль ставьте а не "Russia"
   system("color 17");
   const wchar_t*  CMD[4] = { L"меньше", L"больше", L"угадал" };
 
prev:
   int first, last, pos, counter = 1, number = 0;
 
   wprintf(L"Задумайте число в уме, компьютер попробует его угадать, задайте диапазон.\nОт: ");
   wscanf(L"%d", &first);
   wprintf(L"До: ");
   wscanf(L"%d", &last);
   wprintf(L"Максимальное число попыток, чтобы угадать: ");
   wscanf(L"%d", &number);
 
   wchar_t   str[32];    
 
   while(1) {
       pos = last - first;
       if(pos <= 0){
          wprintf(L"Вы наверное жульничаете !\n");
          goto jump;
          break;
       }
       pos = first + rand() % pos;
       wprintf(L"Вот это число: %d\n",  pos);
       wprintf(L"\t\tВаш ответ: ");
       wscanf(L"%s", str);
 
       if( wstricmp(str,  CMD[0]))    // меньше
             last  = pos;
       else if( wstricmp(str, CMD[1])) // больше
             first = pos + 1;
       else if(wstricmp(str, CMD[2]))   // угадал
             break;
       else {
             wprintf(L"Неизвестная комманда !\n");
             continue;
       }
       counter++;
       if(counter > number)
            break;
   }
 
   if(counter <= number)
         wprintf(L"Компьютер угадал ваше задуманное число за N - %d попыток.\n\n", counter);
   else
         wprintf(L"Очень жаль что я не угадал...\n\n");
jump:
   wprintf(L"Начать заново, Да или Нет ? _ ");
   wscanf(L"%s", str);
   if(wstricmp(str, L"да")) {
        system("cls");
        goto  prev;
   }
 
}
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
29.07.2011, 15:16     "Угадай число" (напишите программу, хочу проверить со своей). #16
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
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
#include <time.h>
 
 
int main()
{
    srand( time ( 0 ) );
    int number;
    bool success = false;
    int difficult;
    int choice;
    cout << "Try to find random number\nSelect Dificult:\n\t1.Easy\t( 10 lives )\n\t2.Normal( 8 lives )\n\t3.Hell!\t( 5 lives )\n";
    cin >> difficult;
 
    int lives;
    difficult == 1 ? difficult = 10 : difficult == 2 ? difficult = 8 : difficult = 5;
    number = rand() % 100 + 1;
    system("cls");
    cout << "Now it's your turn 2 find the number (1-100) !\n\tTry to stay alive!"<<endl << endl;
    while ( difficult > 0)
    {
        
        cout << "====================================================";
        if ( difficult > 1 )
            cout << "\nYou still have " << difficult << " lives! You still can win!";
        else
            cout << "\nLast chance!";
        difficult--;
        cout << "\nEnter the number: ";
        cin >> choice;
        if ( choice > 100 && choice < 0 ) 
            cout << "Enter the numbers 0 < x < 100";
        {
            
            if( number < choice ) 
                cout << "Too big!";
            else
                if ( number == choice ) { cout << "Unbeliviable! YOU GOT IT!! CONGRATULATIONS ! "; break; }
            else cout << "Too small!";
            cout << endl;
        }
 
    }
    if ( difficult == 0 ) 
        cout << "\t\tGAME OVER";
 
    cout << endl;
    system("pause");
    return 0;
}
ыть )
Nameless One
30.07.2011, 08:26
  #17

Не по теме:

Вы бы еще факториалами померялись...

leoned
 Аватар для leoned
29 / 29 / 1
Регистрация: 30.06.2011
Сообщений: 467
30.07.2011, 18:13     "Угадай число" (напишите программу, хочу проверить со своей). #18
Цитата Сообщение от xAtom Посмотреть сообщение
Вот начиркал прогу, вы указывайте диапазон и число попыток компьютеру, своё число держите в уме, подсказыайте ему вот комманды: меньше, больше, угадал.
прикольнуло)минут 15 баловался потом надоело
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
17.08.2011, 12:39     "Угадай число" (напишите программу, хочу проверить со своей). #19
Есть такая игра в примерах компилятора Dev-C++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2011, 13:24     "Угадай число" (напишите программу, хочу проверить со своей).
Еще ссылки по теме:

Программу "Угадай число" C++
Игра "Угадай число" C++
C++ Нужен совет по задаче "Угадай число"

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

Или воспользуйтесь поиском по форуму:
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.08.2011, 13:24     "Угадай число" (напишите программу, хочу проверить со своей). #20
Цитата Сообщение от vortexx1 Посмотреть сообщение
Напиши лучше программу, которая так же отгадывает у пользователя его число, а он только вводит больше/меньше. ИМХО, так сложнее и интереснее.
Внесу свою лепту:

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
#include <stdio.h>
 
#define LESS   -1
#define EQU     0
#define GREATER 1
 
 
char tryToGuess( int num )
{
    printf( "My guess is %i.\n1) My number is less\n2) You guessed!\n3) My number is greater\n>", num );
 
    int i;
 
    do scanf( "%i", &i );
    while( i < 1 || i > 3 );
 
    return i - 2;
}
 
int main( int argc, char ** argv )
{
    int iMin, iMax; /* минимальное и максимальное числа */
    char responce; /* Ответ пользователя: меньше, равно, больше, да, нет */
 
    puts( "============ Number guesser ============" );
 
    do
    {
 
        printf( "\nPlease enter the minimum number\n>" );
        scanf( "%i", &iMin );
 
        printf( "Please enter the maximum number\n>" );
        scanf( "%i", &iMax );
 
        int low = iMin, high = ++iMax, tries = 1; /* нижняя граница, верхняя граница, количество попыток */
 
        do
        {
            int half = (low + high) / 2;
 
            if( low >= high )
            {
                puts( "Don't try to fool me!" );
                break;
            }
 
            responce = tryToGuess( half );
 
            if( responce == LESS )
               high = half;
            else if( responce == GREATER )
               low = half + 1;
            else
               break;
 
            tries++;
        }
        while( 1 );
 
        if( responce == EQU )
           printf( "It took me %i tries to guess your number\n", tries );
 
        do
        {
            fseek( stdin, 0, SEEK_END );
 
            printf( "Do you want to play with me again? [y/N] " );
            scanf( "%c", &responce );
 
            responce = toupper( responce );
        }
        while( responce != 'Y' && responce != 'N' );
    }
    while( responce != 'N' );
 
    return 0;
}
Yandex
Объявления
17.08.2011, 13:24     "Угадай число" (напишите программу, хочу проверить со своей).
Ответ Создать тему
Опции темы

Текущее время: 14:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru