Суббота, 21 Декабря 2024, 19:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Что написать?
DeswingДата: Воскресенье, 27 Октября 2013, 16:41 | Сообщение # 21
заслуженный участник
Сейчас нет на сайте
Цитата avolkoff ()
Может динамический массив?
И что-то сразу не посмотрел, не работает логика проги - фигню выдает...

Агась... Мысля такая: создать последовательность (массив) цифр из 0 и 1, где 0 - гласная, а 1 - согласная. Ну а потом другой ф-цией генерировать гласную, если элемент последовательности - 0, и согласную, если 1 соответственно...

Кажется свою ошибку нашел. Не знаю, буду пытаться реализовать

Цитата stalker5889 ()
Рогалик

Можно немного конкретнее?

Добавлено (27.10.2013, 16:33)
---------------------------------------------

Код
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;

char m[]={'a','e','i','o','u','y'};
char m2[]={'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','z','x'};
bool posl[5]={0,1,0,0,0};
int len;

void gen_posl()
{
  len = 3+rand()%3;
  posl[0] = rand()%2;
  if(posl[0]==false)
  {
   posl[1]=true;
  }
  else
  {
   posl[1]=false;
  }
  cout<<posl[0]<<posl[1];
  for(int i = 2; i <= len; i++)
  {
   if((posl[i-1]==true)&&(posl[i-2]==false))
   {
    posl[i]=false;
   }
   if((posl[i-1]==false)&&(posl[i-2]==true))
   {
    posl[i]=true;
   }
   if(rand()%3)
   {
    posl[i]=rand()%2;
   }
  cout<<posl[i];
  }
}
void gen()
{
  for(int i = 0; i <= len; i++)
  {
   if(posl[i])  
   {
    cout<<m[rand()%(sizeof(m)/sizeof(m[0]))];
   }
   else //False
   {
    cout<<m2[rand()%(sizeof(m2)/sizeof(m2[0]))];
   }
  }
}
int main(void)
{
  srand(time(false));
  for(int i = 0; i <= 99; i++)
  {
   gen_posl();
   cout<<'\t';
   gen();
   cout<<endl;
  }
  cout<<endl;
  system("PAUSE");
  return 0;
}


Добавлено (27.10.2013, 16:34)
---------------------------------------------
тьфу, 0 и 1 перепутал. Ну да ладно хд

Добавлено (27.10.2013, 16:41)
---------------------------------------------
у меня плохой тон программирования?

avolkoffДата: Воскресенье, 27 Октября 2013, 17:12 | Сообщение # 22
частый гость
Сейчас нет на сайте
Цитата Deswing ()
у меня плохой тон программирования?

По-моему именование не очень, ща скину свою версию, посмотришь...

Добавлено (27.10.2013, 17:12)
---------------------------------------------
Код

#include <iostream>
#include <string>
#include <vector>

//
// 5 vowel letters
//

char cV[] = {    'a', 'e', 'i', 'o', 'u' };

//
// 21 consonant letters
//

char cC[] =    {    'b', 'c', 'd', 'f', 'g', 'h', 'j',
      'k', 'l', 'm', 'n', 'p', 'q', 'r',
      's', 't', 'v', 'w', 'x', 'y', 'z' };

//
// description:    function for generating names
//
// params:  int  - length
//    bool    - type of first letter:
//       true is vowel
//       false is consonant
//
// returns:  string    - generated name
//

std::string genName(int nL, bool bFirstLetterType)
{
   std::string ret = std::string(nL, false);
   bool bLastVowel = bFirstLetterType;

   for(int i = 0; i < nL; i++)
   {
    if(bLastVowel)
    {
     ret[i] = cV[(rand() % 5)];
     bLastVowel = false;
    }
    else
    {
     ret[i] = cC[(rand() % 21)];
     bLastVowel = true;
    }
   }

   return ret;
}

//
// entry-point
//

int main(int argc, char *argv[])
{
   for(int i = 0; i < 10; i++)
    std::cout << genName(3, false) << std::endl;

   return 0;
}

Вот по-моему простейшая реализация по шаблону "СГ || ГС", и еще форум калечит табы...
И кстати, косяк у меня, генерирует одни и те же имена, когда запускаешь программу несколько раз, эт как понять?


Сообщение отредактировал avolkoff - Воскресенье, 27 Октября 2013, 17:21
DeswingДата: Воскресенье, 27 Октября 2013, 17:45 | Сообщение # 23
заслуженный участник
Сейчас нет на сайте
Цитата avolkoff ()
int argc, char *argv[]

?
avolkoffДата: Воскресенье, 27 Октября 2013, 17:59 | Сообщение # 24
частый гость
Сейчас нет на сайте
Параметры smile Первый количество аргументов, второй указатель на строки с аргументами, например:
Код

#include <iostream>

int main(int argc, char *argv[])
{
   for(int i = 0; i < argc; i++)
    std::cout << argv[i] << std::endl;

   return 0;
}

Странная фигня, но функция rand() генерирует одно и тоже при запуске выше написанного кода...


Сообщение отредактировал avolkoff - Воскресенье, 27 Октября 2013, 18:02
DeswingДата: Воскресенье, 27 Октября 2013, 18:34 | Сообщение # 25
заслуженный участник
Сейчас нет на сайте
Цитата avolkoff ()
Странная фигня, но функция rand() генерирует одно и тоже при запуске выше написанного кода...

Нужно заложить семя:
srand(time(0));
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг