Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 14.05.2012
Сообщений: 13

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

20.09.2012, 17:58. Показов 1504. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описание

"Поймать парасёнка" - один из видов игры в карты.
Допустим за игральным столом 4 игрока.
Ваша задача посчитать итоговый результат этих игроков, следуя правилам подсчёта указанным ниже:
  1. S, H, D, C - соответственно пики, червы, бубны и трефы.
    Цифры от 1 до 13 соответственно A, 2, ..., Q, K.
    Например, H1 это червы A, S13 это пики K.
  2. В конце игры, учитываются лишь козырные карты, к которым относятся, S12 (парасенок), все червы, D11 (ягненок) и C10 (удвоение), итого 16 карт. Всы остальные карты не считаются. Если у игрока нет ни одной из этих 16-ти козырных карт, у него 0 очков.
  3. Если у игрока имеется только одна козырная карта C10, он получает +50 очков. Если кроме C10 есть ещё козырные карты, то сумма очков этих козырных карт удваивается.
  4. Если у игрока на руках не все червы, то за каждую из 13 карт от H1 до H13 у игрока отнимается соответственное колличество очков: -50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40. А за S12 у игрока отнимается -100, а за D11 игроку прибавляется +400.
  5. Если у игрока на руках все червы от H1 до H13, то ситуация нижеследующая:
  • За все червы он получает +200 очков
  • Если S12, D11, он съедают все его червы, и он получает +500 очков.
  • C10 все также считается по правилу, которое было описано выше.

Пример 1: Ниже приведены козырные карты на руках у игроков:

S12 H3 H5 H13
D11 H8 H9
C10 H1 H2 H4 H6 H7
H10 H11 H12

колличество очков каждого из игроков: -148, +83, -138, -60.

Пример 2: Ниже приведены козырные карты на руках у игроков: (у четвертого игрока нет козырных карт)

H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13
S12 C10
D11

колличество очков каждого из игроков: +200, -200, +100, 0.

Пример 3: Если у одно из игроков все 16 козырей, он получает +1000 очков. У всех остальных игроков по 0 очков.


Input

Может вводится несколько вариантов положения карт у игроков, каждый вариант состоит из 4 строк, 1-ое число каждой строки соответстует колличеству козырных карт этого игрока, остальные вводимые данные - козырные карты этого игрока. Вводимые данные разделяются пробелами. Между вводимыми строками нет пустых строк.
Программа завершается, когда у всех игроков будет по 0 козырей.


Output

Каждая выводимая строка соответствует результату каждой игры, строка состоит из 4 чисел (со знаком плюса или минуса, кроме нуля), числа разделяются пробелом. Между выводимыми строками нет пустых строк.

Например, Input:
4 S12 H3 H5 H13↵
3 D11 H8 H9↵
6 C10 H1 H2 H4 H6 H7↵
3 H10 H11 H12↵
13 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13↵
2 S12 C10↵
1 D11↵
0↵
0↵
0↵
0↵
0↵

Output:
-148 +83 -138 -60↵
+200 -200 +100 0↵


Подскажите, пожалуйста, как решить.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2012, 17:58
Ответы с готовыми решениями:

Мини-игра: поймать button
Здравствуйте. Вот решил сделать такую мини игру, идея не нова, конечно же: пользователь должен нажать на кнопку, она от него убегает с...

Игра (поймать хорошее, пропустить плохое)
Сама игра сделана, но нужно добавить бонус (kolba), который будет падать с более высокой скоростью и намного реже чем обычные объекты(тесак...

Задача "Максимальный подпалиндром" не могу поймать ошибку.
Палиндромом называется строка, которая одинаково читается как слева направо, так и справа налево. Подпалиндромом данной строки называется...

2
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
20.09.2012, 19:24
Цитата Сообщение от arreke Посмотреть сообщение
Подскажите, пожалуйста, как решить
Вы чё прикалывайтесь ?
Без ваших наработок ? И что бы кто то за вас это сделал ?
Дааааа !!!! Вам господин во фриланс путёвка заказана .
0
0 / 0 / 1
Регистрация: 14.05.2012
Сообщений: 13
21.09.2012, 19:47  [ТС]
Лучший ответ Сообщение было отмечено arreke как решение

Решение

Мой код:

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;  
}
Вроде работает, но на одном из вариантов ввода выдаёт неправильный результат. Где может быть ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2012, 19:47
Помогаю со студенческими работами здесь

Задача: Игра
Имеется клеточное поле высотой в одну клетку и шириной в N клеток. Поля нумеруются слева направо различными целыми числами от 1 до N....

Задача: Игра в фишки
На столе лежит куча из 1 &lt;= N &lt;= 10^6 фишек. Игроки First и Second ходят строго по очереди, первый ход за игроком First. Каждым ходом игрок...

Задача 6. Супер-игра
Имя входного файла: standard input Имя выходного файла: standard output Ограничение по времени: 2 секунды Ограничение по памяти: 256...

Задача #5 игра в спички
Задаем число спичек в коробке. Играем с компьютером, поочередно берем по 1,2 или 3 спички (проверку сколько взяли писать не стал - надеюсь...

Задача Простая игра
ПРОСТАЯ ИГРА. Дед Мазай и заяц играют в очень простую игру. Перед ними огромная куча одинаковых морковок. Каждый из них во время своего...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru