среда, 7 декабря 2011 г.

Использование функций на деле!!!

Задача:

Написать программу, реализующую игру "Угадай число".*


Код программы:

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "time.h"

#define N 3 // кол-во цифр в числе
#define DEBUG // отладка

void main()
{
 clrscr();
 {
  char pl[N]; // игрок
  char pc[N]; // компьютер

  int a[N]; // a[i] == 1 если i-я цифра
   // pc совпала с одной из цифрой pl
  int ugad; // угадано чисел
  int mesto; // из них на своих местах
  int i, j;     // индексы
  time_t t;

  printf ("Игра:%25sУгАдАй ЧиСлО!!\n");
  srand((unsigned)time(&t));

  for (i=0; i<N; i++)
   pc[i]=rand() % 10 + 48;
   //48-код символа '0'

#ifdef DEBUG

  printf ("\n\nКомпьютер задумал 3-х значное число:\n");

  for (i=0; i<N; i++)

                
#endif

  do
  {
   printf ("\nВаш Вариант => ");
   scanf  ("%s", &pl);

   for (i=0; i<N; i++)
    a[i]=0;

   // проверка сколько цифр угадано
   ugad=0;
                // каждую цифру игрока
   // сравним с цифрами ПК

   for (i=0; i<N; i++)
    for (j=0; j<N; j++)
    {
     if ((pl[i]==pc[j])&& !a[j])
     {
      ugad++;
      a[j]=1; // запретим сравнивать эту
   // цифру ПК с еще не проверенными
   // цифрами игрока
      break;
     }
    }
   // проверим, сколько на своих местах
   mesto=0;
   for(i=0; i<N; i++)
    if (pl[i]==pc[i])
   mesto++;
   printf ("Угадано: %i. На своих местах: %i",ugad,mesto);
  }
 while ((ugad<N) || (mesto<N));
 printf ("\n\nПоздравляю! Вы угадали число\n");
 }
 getch();
}

Результат:







* Правила игры: Компьютер загадал трехзначное число. Вам надо за меньшее количество ходов угадать это число. после каждого хода компьютер дает подсказку - если та или иная цифра в загаданном числе. К примеру: компьютер загадал число 782. Вы предположили, что это число 281. Компьютер дает подсказку: Вы угадали две цифры "2" и "8", но при этом одно из них стоит на своем месте "8".