Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2013, 14:23   #1
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию игра 21 "очко"

Подскажите не могу сровнять правильно результат выпавших карт
между игроком и компьютером..
Код:
#include <iostream>
#include<ctype.h>
#include<time.h>

using namespace std;
 
	void mast()
{
	setlocale(LC_ALL,"rus");
	char a;
	srand(time(NULL));
	a=rand()%(6+1-3)+3;
	cout<<a;
}

int karta()
{
    const int s = 13;
    char *kart[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "V", "D", "K", "T"};
    int q[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 11};
    srand(time(NULL));
	int sum=0;
       int t;
	   char a;
		do{	
	   t = rand()%s;
        cout<<kart[t];
		mast();
		cout<<" = "<<q[t]<<" очка\n"; 
		sum+=q[t];
		  cout<<"у Вас "<<sum<<" очков\n";
		cout<<"Еще карту нажмите y\n";
        cin>>a;
		}while(a =='y');
		return sum;
	}

int karta_comp()
{
    const int s = 13;
    char *kart[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "V", "D", "K", "T"};
    int q[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 11};
    srand(time(NULL));
	int sum=0;
       int t;
	   char a;
		while(sum<17){
	   t = rand()%s;
        cout<<kart[t];
		mast();
		cout<<" = "<<q[t]<<" очка\n"; 
		sum+=q[t];
		  cout<<"у компютера "<<sum<<" очков\n\n";        
		}
		  return sum;
	}
int main(){
	int sum_igrok;
	int sum_comp;
	sum_igrok=karta();
	sum_comp=karta_comp();
	
	
	if(sum_igrok<=21 || sum_igrok>sum_comp || sum_comp>21){
		cout<<"Вы выиграли - "<<sum_igrok<<"  против компютера - "<<sum_comp;
	}
	else
		if(sum_comp > sum_igrok )
		cout<<"Вы проиграли - "<<sum_igrok<<"  против компютера - "<<sum_comp;
		else
			cout<<"Вы прoиграли\n";
	}
mixon-21 вне форума Ответить с цитированием
Старый 13.06.2013, 14:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, если Вам помогают, принято благодарить.

во-вторых, Вы чужой код выдаёте за свой без зазрения совести.

в-третьих, зачем ещё одну тему создавать, чем Вас старая тема не устраивает?!
название старой темы я могу изменить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.06.2013, 14:44   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кросс потер )
Цитата:
не могу сровнять правильно результат выпавших карт
В смысле?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2013, 14:59   #4
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

неправильно работает


Код:
int main(){
	int sum_igrok;
	int sum_comp;
	sum_igrok=karta();
	sum_comp=karta_comp();
	
	
	if(sum_igrok<=21 || sum_igrok>sum_comp || sum_comp>21){
		cout<<"Вы выиграли - "<<sum_igrok<<"  против компютера - "<<sum_comp;
	}
	else
		if(sum_comp > sum_igrok )
		cout<<"Вы проиграли - "<<sum_igrok<<"  против компютера - "<<sum_comp;
		else
			cout<<"Вы прoиграли\n";
	}
mixon-21 вне форума Ответить с цитированием
Старый 13.06.2013, 15:03   #5
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

Код:
if((sum_igrok<=21 && sum_igrok>sum_comp) || sum_comp>21)
попробуй так
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Старый 13.06.2013, 15:19   #6
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
sum_igrok<=21 || sum_igrok>sum_comp || sum_comp>21
Это кхм... это условие у вас не верное - игрок выигрывает всегда, если у него не более 21 очка.

Цитата:
if((sum_igrok<=21 && sum_igrok>sum_comp) || sum_comp>21)
Если у вас меньше (или ровно) 21 очков и больше очков, чем у компьютера, то у компьютера никак не может получиться больше 21 очка. (т.е. последнее условие заведомо лишнее)

Т.е. условие можно записать как

Код:
if(sum_igrok<=21 && sum_igrok>sum_comp)
К стати, у вас "колода" сделана не правильно. Скажем так, судя по тому, что я вижу в коде, у вас запросто у игрока и у компьютера выпасть по три шестерки (что не возможно, ибо их в колоде всего 4). Кроме того, насколько я знаю два туза туза это 21 очко (если других карт нет). Кроме того туз может быть посчитан и как 11 и как 1 очко. Ценность Дам, Вальтов и Королей я, к сожалению, не помню.

upd.
Не тот знак поставил, исправил.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 13.06.2013 в 15:29.
ROD вне форума Ответить с цитированием
Старый 13.06.2013, 15:24   #7
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

Тогда уже так)

Код:
if(sum_igrok<=21 && sum_igrok>sum_comp)
Непонятно только что делать, если одинаково очков.
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Старый 13.06.2013, 15:53   #8
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

а как правильно подскажите плиз???
mixon-21 вне форума Ответить с цитированием
Старый 13.06.2013, 16:49   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

в связи с
Цитата:
Сообщение от mixon-21 Посмотреть сообщение
игрушка получилась всем спасибо
данную тему можно закрывать!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.06.2013, 16:50   #10
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Сообщение от mixon-21 Посмотреть сообщение
а как правильно подскажите плиз???
Посмотри два сообщения перед твоим. Там тебе даже условие правильное написали!
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
игра 21 "очко" mixon-21 Общие вопросы C/C++ 3 10.06.2013 20:05
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
игра "worms", доработка игры "косынка". C# den790 Фриланс 11 09.12.2011 10:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Игра "четный" "нечетный" bigcat Помощь студентам 1 01.03.2008 00:24