Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игральные кости, комп и человек 
:(
    Опции темы
Гость_welt
Дата 24.11.2005, 11:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ, помогите с задачей. Знаю, кк сделать ее на паскале, но совсем не знаю с++. (пробовал делать с random(10)+6 и двумя двумерными массивами)
имеется два игральных кубика со значениями от 1 до 6.Игра происходит с компьютером,кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотреть возможность получения первого хода человеком или компьютером . Кубики отображаются с помощью символов. В конце игры необходимо выводить среднюю сумму по броскам для обоих участников.


  Вверх
_hunter
Дата 24.11.2005, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



т.е. тебе с паскаля код перевести нужно?
выкладывай -- посмотрим...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Гость_welt
Дата 24.11.2005, 14:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











_hunter, короче еще сам додумай что можешь.
вот что я наклипал
Код

var
i,j:byte;
m:integer;
h:array[1..5,1..2] of integer;
k:array[1..6,1..2] of integer;
begin
randomize;
Writeln('Кто ходит первым? 1=компьютер, 2=человек');
readln(m);
//заполняем
for i:=1 to 6 do
 for j:=1 to 2 do
   h[i,j]:=random(10)+6;
for i:=1 to 6 do
 for j:=1 to 2 do
   k[i,j]:=random(10)+6;

if m=1 then
 begin
  for i:=1 to 6 do
    begin
      writeln('компютер пошел',' ход № ',i,k[i,1],' ',k[i,2]);
      writeln('Ваш ход № ',h[i,1],' ',h[i,2]);
    end;
  end

    else

if m=2 then
  begin
   for i:=1 to 6 do
    begin
      writeln('Ваш ход № ',h[i,1],' ',h[i,2]);
      writeln('компютер пошел',' ход № ',i,k[i,1],' ',k[i,2]);
    end;
  end;

//дальше хочу выести среднее значение, и кто выиграл,
//но еще не успел сделать
readln;
end.


  Вверх
Chaos A.D.
Дата 24.11.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 16.1.2005
Где: 09 RUS

Репутация: 6
Всего: 7



Вроде работает...

Код


#include <vector>
#include <string>
#include <iostream>
#include <algorithm>  // std::generate
#include <numeric>    // std::accumulate

class Rand
{
    public :
        unsigned short operator()( void ) const { return (std::rand() % 6) + 1; }
};


int main(int argc, char* argv[])
{
    std::srand( std::time(NULL) );

    typedef std::vector<unsigned short> Vec;
    Vec you(5);
    Vec comp(5);

    std::cout << "Do you want to start?(yes/no)" << std::endl;
    std::string answer;
    std::cin >> answer;

    Vec *first  = ( answer == "yes" ) ? &you  : &comp;
    Vec *second = ( first  == &you  ) ? &comp : &you;

    std::generate( first->begin(),  first->end(),  Rand() );
    std::generate( second->begin(), second->end(), Rand() );

    if ( first == &you )
        for( int i = 0; i < you.size(); ++i )
        {
            std::cout << "Turn " << i + 1 << std::endl;
            std::cout << "Your turn : " << you[i] << std::endl;
            std::cout << "Comp turn : " << comp[i] << std::endl;
            std::cout << "-----" << std::endl;
        }
    else
        for( int i = 0; i < you.size(); ++i )
        {
            std::cout << "Turn " << i + 1 << std::endl;
            std::cout << "Comp turn : " << comp[i] << std::endl;
            std::cout << "Your turn : " << you[i] << std::endl;
            std::cout << "-----" << std::endl;
        }

    unsigned int your_score = std::accumulate( you.begin(), you.end(),
        0, std::plus<unsigned int>() );
    unsigned int comp_score = std::accumulate( comp.begin(), comp.end(),
        0, std::plus<unsigned int>() );

    std::cout << "Your result = " << your_score << std::endl;
    std::cout << "Comp result = " << comp_score << std::endl;

    if ( comp_score < your_score )
        std::cout << "You win!";
    else if ( your_score < comp_score )
        std::cout << "You loose!";
    else
        std::cout << "Draw!" << std::endl;

    return 0;
}



Возможно, код трудно читается, писал, что называется, на коленке.
--------------------
Надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума...Ken Kesey - One Flew Over The Cocoo's Nest
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.