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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оцените решение задачки 
:(
    Опции темы
mr.Anderson
Дата 11.6.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

Репутация: нет
Всего: 128



Мож, не в тему тема создана (сорри за каламбур), но тем не менее.

Нашел в инете интересную задачку, попробовал сделать. Вот условие:
Цитата

В этой задаче мы воссоздадим один из истинно великих моментов истории, а именно, классическую гонку черепахи и зайца. Вы будете использовтаь генератор случайных чисел для разработки модели этого памятного события.
Наши соперники начинают гонку в первой клетке из 69 (номера от нуля). Каждая клетка представляет собой возможную позицию вдоль трассы гонки. Первый из соперников, достигший или миновавший клетку 69, награждается ведром моркови и салата. smile Трасса вьется по склону скользкой горы, так что участники гонки могут и падать.
Имеются часы, отбивающие такт раз в 0.2 секунды. С каждым тактом ваша программа должна устанавливать позиции животных согласно следующим правилам:

ЧЕРЕПАХА:
числа 0-4: +3 клетки к позиции,
числа 5-6: -6 клеток
числа 7-9: +1 клетка

ЗАЯЦ
числа 0-1: нет изменений позиции (типа он спит)
числа 2-3: +9
число 4: -12
5-7: +1
8-9: -2

Если позиции зайца и черепахи совпадут, считается, что черепаха кусает зайца (у зайца выводим вместо позиции AUCH!!!). Затем пишем, кто победил.

Прошу оценить мое решение:
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <conio>

using namespace std;
//---------------------------------------------------------------------------

void RabbitGenerator(int *pos);
void TurtleGenerator(int *pos);
//---------------------------------------------------------------------------

int main(void)
{
 int rabbit_pos=0,
     turtle_pos=0;

 bool finish=false;

 cout<<"Press any key to start racing!";
  getch();

 cout<<"\n\nBAMM!!! START!\n\nRABBIT\t\tTURTLE\n";

    randomize();

 while(!finish)
 {
  RabbitGenerator(&rabbit_pos);
  TurtleGenerator(&turtle_pos);

  if(rabbit_pos<0) rabbit_pos=0;
  if(turtle_pos<0) turtle_pos=0;

  if(turtle_pos>=69)
  {
   turtle_pos=69;
   finish=true;
  }

  if(rabbit_pos>=69)
  {
   rabbit_pos=69;
   finish=true;
  }

  if(rabbit_pos == turtle_pos )
   cout<<"AUCH!!!\t\t"<<turtle_pos<<"\n";

  else cout<<rabbit_pos<<"\t\t"<<turtle_pos<<"\n";

  Sleep(300);
 }

 if(rabbit_pos == turtle_pos)
  cout<<"Nikto ne pobedil!";

 else if(rabbit_pos==69)
  cout<<"Pobedil zayats. Ex.";

 else
  cout<<"Pobedila cherepaxa! Ura!";

 cout<<"\n\nRacing has ended! Press any key, please...";

 getch();
}
//---------------------------------------------------------------------------

void RabbitGenerator(int *rabbit_pos)
{
 switch(random(9))
 {
  case 0: case 1:
   break;

  case 2: case 3:
   *rabbit_pos+=9;
   break;

  case 4:
   *rabbit_pos-=12;
   break;

  case 5: case 6: case 7:
   *rabbit_pos+=1;
   break;

  default:
   *rabbit_pos-=2;
 }
}
//---------------------------------------------------------------------------

void TurtleGenerator(int *turtle_pos)
{
 switch(random(9))
 {
  case 5: case 6:
   *turtle_pos-=6;
   break;

  case 7: case 8: case 9:
   *turtle_pos+=1;
   break;

  default:
   *turtle_pos+=3;
 }
}
//---------------------------------------------------------------------------
   

Это сообщение отредактировал(а) sim7 - 12.6.2006, 09:49


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Oleg_Ci
  Дата 16.6.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Friend
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 28.5.2006
Где: Новосиб.обл.

Репутация: 3
Всего: 30



Вот, тоже решил задачку.
Цитата

Прошу оценить мое решение:
Вообще-то я сам ещё учиться программировать только начал... smile 
Самое первое что на ум пришло мне это то что в место перебора случайных чисел в подпрограммах
Код

void RabbitGenerator(int *pos);    
void TurtleGenerator(int *pos);

можно было использовать обыкновенный массив. Ещё мне непонравилась переменная bool finish=false; - посчитал что мне она ненужна. Ну и текст русский у меня выводится. Вобщем-то и всё.
Код

#include <windows.h>
#include <iostream>
#include <conio>
using namespace std;

char *rus(char *c)
{
  AnsiToOem(c,c);
  return c;
}

int main(int argc, char* argv[])
{
  char *c=rus("Чёрт побери!!!");
  int rabbit_pos=0, 
     turtle_pos=0; 
  int rabbit[]={3,3,3,3,-6,-6,1,1,1};
  int turtle[]={0,0,9,9,-12,1,1,-2,-2};

  cout<<rus("Нажмите любую клавишу для начала гонки.")<<endl<<endl;
  getch();
  cout<<rus("Заяц")<<"\t\t"<<rus("Черепаха")<<endl;
  randomize();

  while(rabbit_pos<69 && turtle_pos<69)
  {
    rabbit_pos+=rabbit[random(9)];
    turtle_pos+=turtle[random(9)];
    if ( rabbit_pos<0 ) rabbit_pos=0;
    if ( turtle_pos<0 ) turtle_pos=0;

    if(rabbit_pos == turtle_pos )
      cout<<c<<"\t"<<turtle_pos<<'\n';
    else cout<<rabbit_pos<<"\t\t"<<turtle_pos<<"\n";
    Sleep(100);
  }

  cout<<endl;
  if(rabbit_pos == turtle_pos)
    cout<<rus("Никто не победил !");
  else if ( rabbit_pos>turtle_pos )
    cout<<rus("Победил заяц ... Ээээээх... да чтоб его...");
  else cout<<rus("Ураааа! Победила черепаха ! Наши в переди планеты всей !!!");
  getch();
  return 0;
}
  

Это сообщение отредактировал(а) Олег4 - 16.6.2006, 19:36
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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