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

Задача: игра "Поймать парасёнка" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как обучиться программированию? http://www.cyberforum.ru/cpp-beginners/thread655053.html
Всем привет! Кто может научить, все обьяснить по С++. Хочу выучить, помогите. Откликнитесь пожалуйста!
C++ AnsiString обуляет char //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; http://www.cyberforum.ru/cpp-beginners/thread655045.html
C++ Определить, находятся ли слова последовательности в алфавитном порядке
Помогите пожалуйста написать программу: Дана последовательность слов, разделенных пробелами (не обязательно 1 пробел), за последним словом - точка. Определить, находятся ли слова последовательности в алфавитном порядке. Если да, то изменить порядок слов на обратный. Разрешается пользоваться стандартными функциями и объектами класса string. Запрещается использовать контейнер map, векторы и...
работа с изображениями C++
Всем доброго дня, уважаемые форумчане, подскажите плиз книги или статьи, которые можно прочитать, и узнать о классификации изображений, желательно чтобы были с какими-нибудь примерами или алгоритмами, зарание спасибо
C++ Магический квадрат http://www.cyberforum.ru/cpp-beginners/thread655033.html
с клавы вводиться число N. нужно сделать магический квадрат с размерами
C++ Задача: редактирование математических выражений Описание Вы ввели на компьютере несколько строк, содержащих математические выражения, в выражениях нет лишних скобок (то есть скобок, которые могли бы повлиять на результат выражения). Когда вас не было, ваш братишка добавил лишние скобки. Вы должны вернуть выражения в первоночальный вид, к тому же несколько выражений слишком длинные, редактировать руками слишком медленно. Ваша задача... подробнее

Показать сообщение отдельно
arreke
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 13
21.09.2012, 19:47  [ТС]     Задача: игра "Поймать парасёнка"
Мой код:

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
86
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int check ()
{
  int i, j, len[4], Sum[4], l, h[13], C10, S12, D11, H, finish;
  char str[256], p[4][17][5];
  char *pch;
  
// Enter elements 
  
  for (i=0; i<4; i++) {
    scanf("%d", &len[i]); scanf("%[^\n]s", str);  // gets(str);
    //printf ("%d\n%s\n", len[i], str);
    pch = strtok(str, " "); l=0;
    while (pch != NULL)
    {
      //printf ("%s\n",pch);
      sprintf(p[i][l++], "%s", pch);
      pch = strtok (NULL, " ");
    }
    //for (j=0; j<len[i]; j++) printf ("%s\n", p[i][j]);
  }
  
// Check exit
 
  finish=1; for (j=0; j<4; j++) if (len[j]!=0) finish=0;
  if (finish==1) return finish;
  
// Check elements 
 
  for (i=0; i<4; i++) {
    Sum[i]=0; C10=0; S12=0; D11=0; H=1; 
    for (j=0; j<13; j++) { h[j]=0; }
    for (j=0; j<len[i]; j++) {
      //printf ("%s", p[i][j]);
      if (strcmp("C10", p[i][j]) == 0) { C10=1; }
      if (strcmp("S12", p[i][j]) == 0) { S12=1; }
      if (strcmp("D11", p[i][j]) == 0) { D11=1; }
 
      if (strcmp("H1", p[i][j]) == 0) { h[0]=50; }
      if (strcmp("H2", p[i][j]) == 0) { h[1]=2; }
      if (strcmp("H3", p[i][j]) == 0) { h[2]=3; }
      if (strcmp("H4", p[i][j]) == 0) { h[3]=4; }
      if (strcmp("H5", p[i][j]) == 0) { h[4]=5; }
      if (strcmp("H6", p[i][j]) == 0) { h[5]=6; }
      if (strcmp("H7", p[i][j]) == 0) { h[6]=7; }
      if (strcmp("H8", p[i][j]) == 0) { h[7]=8; }
      if (strcmp("H9", p[i][j]) == 0) { h[8]=9; }
      if (strcmp("H10", p[i][j]) == 0) { h[9]=10; }
      if (strcmp("H11", p[i][j]) == 0) { h[10]=20; }
      if (strcmp("H12", p[i][j]) == 0) { h[11]=30; }
      if (strcmp("H13", p[i][j]) == 0) { h[12]=40; }
    }
    
    for (j=0; j<13; j++) if (h[j]==0) { H=0; }
    if (H==1) {
      if ((S12==1) && (D11==1)) Sum[i]+=500; else Sum[i]+=200;
    } else {
      for (j=0; j<13; j++) Sum[i]-=h[j];
      if (S12==1) Sum[i]-=100;
      if (D11==1) Sum[i]+=100;
    }
    if (C10==1) {
      if (len[i]==1) Sum[i]=50; else Sum[i]*=2;
    }
    if (i>0) printf(" ");
    if (Sum[i]>0) printf("+%d", Sum[i]); else printf("%d", Sum[i]);
  }
  printf("\n");
  
  return finish;
}
 
int main() 
{  
  int finish;
  do {
    finish = check();
  } while (finish!=1);
 
  printf("\n");
  system("PAUSE");
  return 0;  
}
Вроде работает, но на одном из вариантов ввода выдаёт неправильный результат. Где может быть ошибка?
 
Текущее время: 00:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru