Форум программистов, компьютерный форум 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 D=b*b-4*a*c; http://www.cyberforum.ru/cpp-beginners/thread648920.html
C++ Вычислить с заданной точностью значение функции
вот такая задачка..
Ошибка в организации класса C++
Мои первые попытки написать консольную версию пошагового боя обвенчались неудачей в самом начале. При тестовых ударах в цикле for увидел что очки жизней персонажа не уменьшаются, тк кк задумывалось. Начинаю подозревать что нужно использовать указатели, но это тоже не обвенчалось успехом, посоветуйте пожалуйста что нужно сделать чтобы из класса P2 переменная hp начала уменьшаться а не обнулялась...
C++ Описать функцию, которая формирует список Common http://www.cyberforum.ru/cpp-beginners/thread648898.html
В составе программы описать функцию, которая формирует список Common, включив в него элементы, которые входят одновременно в список М1 и М2. Помогите пожалуйста, ибо идей вообще нет, как это сделать...
C++ Необходимо вернуть значение функции из Булевского значения и посчитать факториал Стоит задача- Написато программу которая спрашивает пользователя - Рост, вес, и возраст а затем выдаёт размер одежды по след. формулам: 1) Hat_size = вес/Рост*2.9; 2) Jacket_size = вес*Рост/288 и прибавить поправку 1/8 к каждым 10 over 30. (первая поправка вводится если возвраст 40); 3) Waist = вес/5.7 и прибавить поправку 1/10 к каждым 2-х годам over 28 (первая поправка вводится если... подробнее

Показать сообщение отдельно
arreke
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 13
09.09.2012, 12:58     Задача: Отгадать цифру, проверить на честность
Описание

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;
}
код работает, но не со всеми вариантами теста, на некоторых вариантах выдает не правильный результат.
подскажите, пожалуйста, что не так, или хотябы основные моменты этой задачи на которые надо особо обратить внимание...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru