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

Задача: Отгадать цифру, проверить на честность - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Стек http://www.cyberforum.ru/cpp-beginners/thread648922.html
Здравствуйте,помогите найти понятную реализую кода стека с объяснениями.заранее благодарю Добавлено через 27 секунд Не STL
C++ Функция вычисления корней квадратного уравнения Почему то корни не выводит...что не так? #include "iostream" #include "conio.h" #include "math.h" using namespace std; void root(float a,float b,float c,float &x1,float &x2) { float... http://www.cyberforum.ru/cpp-beginners/thread648920.html
C++ Вычислить с заданной точностью значение функции
вот такая задачка..
Ошибка в организации класса C++
Мои первые попытки написать консольную версию пошагового боя обвенчались неудачей в самом начале. При тестовых ударах в цикле for увидел что очки жизней персонажа не уменьшаются, тк кк задумывалось....
C++ Описать функцию, которая формирует список Common http://www.cyberforum.ru/cpp-beginners/thread648898.html
В составе программы описать функцию, которая формирует список Common, включив в него элементы, которые входят одновременно в список М1 и М2. Помогите пожалуйста, ибо идей вообще нет, как это...
C++ Необходимо вернуть значение функции из Булевского значения и посчитать факториал Стоит задача- Написато программу которая спрашивает пользователя - Рост, вес, и возраст а затем выдаёт размер одежды по след. формулам: 1) Hat_size = вес/Рост*2.9; 2) Jacket_size = вес*Рост/288 и... подробнее

Показать сообщение отдельно
arreke
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 13

Задача: Отгадать цифру, проверить на честность - C++

09.09.2012, 12:58. Просмотров 785. Ответов 5
Метки (Все метки)

Описание

Tom и Jerry играют в игру на отгадку чисел, Tom загадывает число, а Jerry отгадывает.
Область цифр в пределах от 1 до 10.
Jerry называет число, а Tom отвечает too high или too low или right on, на right on игра заканчивается.
Чтобы не допустить чтобы Tom обманывал, Jerry записывает цифры и ответы Tom-а.
Определите, обманывал Tom, или играл по правилам.

Input

Игра может повторятся несколько раз, игра заканчивается как только Jerry называет цифру 0.
Вводимая строка состоит из целого числа или строки ответа.

Output

Для каждой игры если в ответах Tom-а есть несоответствие, напечатать Tom is dishonest, в противном случае напечатать Tom may be honest.


Например, Input:

5
too low
7
too high
6
right on
10
too high
3
too low
4
too high
2
right on
0

Output:

Tom may be honest
Tom is dishonest


Мой код:

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main() {  
 
  int n, i, memLow[10], memHigh[10], sumLow=0, sumHigh=0, max, min;
  char number[256], huida[256], daAn[256];
  
  do {
    fgets( number, 256, stdin ); n = atoi(number);
    if (n==0) {
      if ((sumLow==0) && (sumHigh==0)) continue;
      sprintf( daAn, "Tom may be honest");
      min = memLow[0]; for (i=1; i<sumLow; i++) { if (memLow[i] > min) { min = memLow[i]; } }
      max = memHigh[0]; for (i=1; i<sumHigh; i++) { if (memHigh[i] < max) { max = memHigh[i]; } }
      //printf("%d %d\n", min, max);
      if ((min+1 >= max) && (sumLow>0) && (sumHigh>0)) { sprintf( daAn, "Tom is dishonest"); }
      if ((min>=10) && (sumLow>0)) { sprintf( daAn, "Tom is dishonest"); }
      if ((max<=1) && (sumHigh>0)) { sprintf( daAn, "Tom is dishonest"); }
      printf("%s\n", daAn);
      continue;
    }
    //printf ("Insert huida: "); 
    fgets( huida, 256, stdin ); huida[strlen(huida) - 1] = '\0';
 
//Right on
 
    if (strcmp ("right on", huida) == 0) {
      sprintf( daAn, "Tom may be honest");
      for (i=0; i<sumLow; i++) { if (memLow[i]>=n) { sprintf( daAn, "Tom is dishonest"); } }
      for (i=0; i<sumHigh; i++) { if (memHigh[i]<=n) { sprintf( daAn, "Tom is dishonest"); } }
      sumLow=0; sumHigh=0;
      printf("%s\n", daAn);
    }
    if (strcmp ("too low", huida) == 0) { memLow[sumLow]=n;  sumLow++; }
    if (strcmp ("too high", huida) == 0) { memHigh[sumHigh]=n;  sumHigh++; }
 
  } while (n!=0);
 
  return 0;
}
код работает, но не со всеми вариантами теста, на некоторых вариантах выдает не правильный результат.
подскажите, пожалуйста, что не так, или хотябы основные моменты этой задачи на которые надо особо обратить внимание...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru