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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2010, 20:30   #1
_Bald_
Новичок
Джуниор
 
Регистрация: 29.05.2010
Сообщений: 2
По умолчанию Рандомный вывод ответа в классе

Нужно разработать класс предсказатель. Обязательные методы :
- Заполнение перечня ответов (да, нет, не знаю и т.д.)
- Ответ (выдает случайным образом) словом.
- Ответ выдает случайным образом буквами.

Представить тестовое приложение демонстрирующее работу с классом. В тестовом приложении должны объекты класса создаваться как статически, так и динамически. Предусмотреть конструктор и конструктор копирования.
Вообщем проблемма такая не могу сделать рандомный вывод ответа. Не знаю какую переменую и где прописать что ответ выдавался рандомно.
Также не понял пока как создать конструктор и деструктор.
Вот что у меня получилось:
Код C++

#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <conio.h>
//#include <stdlib>
#include <string>

using namespace std;

class Pred{
public:
void VvodPol (string);
void VvodOtr (string);
void VvodNet (string);
void Vivod ();
private:
string polozh;
string otritz;
string neznay;
};

void Pred::VvodPol (string s1)
{
polozh=s1;
}
void Pred::VvodOtr (string s2)
{
otritz=s2;
}
void Pred::VvodNet (string s3)
{
neznay=s3;
}
void Pred::Vivod ()
{
cout << "Otvet " << polozh << endl;
}

int MainMenu();


int main ()
{
Pred vanga;
string s1,s2,s3;

bool run = true;
while(run)
switch (MainMenu())
{
case 0: run = false; break;
case 1:
{
// clrscr();
cout << "Vvedite polozhiteln otvet: ";
cin >> s1;
vanga.VvodPol(s1);
cout << "Vvedite otricateln otvet: ";
cin >> s2;
vanga.VvodOtr(s2);
cout << "Vvedite netraln otvet: ";
cin >> s3;
vanga.VvodNet(s3);
}
break;
case 2:
{
string s4;
cout << "Skoncetriruetes i obdumayte vopros" << endl;
cout << "Teper vvedite voros i nazhmite enter" << endl;
cin >> s4;
vanga.Vivod();
}
break;


}
return 0;
}
int MainMenu()
{ // clrscr();
cout << "=====[ Main Menu ]=====" << endl;
cout << " [1] Dobavit otvetu" << endl;
cout << " [2] Zadat vopros" << endl;
cout << " [0] EXIT" << endl;
cout << "=======================" << endl;
int em;
cin >> em;
return em;
}
Кто поможет заранее буду очень благодарен.
_Bald_ вне форума Ответить с цитированием
Старый 29.05.2010, 20:31   #2
_Bald_
Новичок
Джуниор
 
Регистрация: 29.05.2010
Сообщений: 2
По умолчанию

Также же есть еще один код, там вроде и рандом есть, и коструктор и деструктор. Компилируется без ошибок, но в отладке при добавлении ответов, вылетает с ошибкой cx0000000 в общем что то с указателем, а что понять не могу.
Код C++
#include <iostream>
#include <CONIO.H>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define randomize() srand((unsigned)time(NULL));
#define random(p) ((int)(rand()*p/RAND_MAX))
using namespace std;

class CPred {
int len;
char *data[50];
int b;

public:

void default_data(void){
this->len = 3;
/*this->data[0] = "Da";
this->data[1] = "Net";
this->data[2] = "Neznay";*/
}

CPred(){
char c=' ';
this->len = -1;
cout<<"Hotite izmenit otvet? (y|n) ";
cin>>c;
if(c == 'y' || c =='Y'){
cout<<"Skolko otvetov hotite vnesti(<50)?\n";
while(this->len <=0 || this->len >=50){
cin>>this->len;
if(this->len <=0 || this->len >=50)
cout<<"\nNevernoe kolichestvo!!!\nVvedite novoe=> ";
}
this->add();
} else {
this->default_data();
}
cout<<"\nWrote answer by a Latter? (y|n): ";
cin>>c;
if(c == 'y' || c =='Y')
this->b=1;
else
this->b=0;
}

void get(void){
int i = random(this->len);
char c = (char)(97+i);
if(this->b==0)
cout<<this->data[i];
else
cout<<c<<" ("<<this->data[i]<<")";
}
void add(void){
cout<<"\nVvedite otvetu:\n";
int i;
i = 0;
while(i< this->len){
cout<<"Vvedite "<<i+1<<" otvet=> ";
cin>>this->data[i];
i++;
}
}

CPred(const CPred &Ob){
this->len = Ob.len;
for(int i=0; i<this->len; i++)
this->data[i] = Ob.data[i];
this->b = Ob.b;
}
};


void main(void){
char c;
// clrscr();
cout<<"Static:\n";
randomize();
CPred P; //CREATE
// clrscr();
cout<<"Vvedite vopros:\n";
cin>>c;
cout<<"Otvet na vash vopros: ";
P.get();
cout<<"\n";
cin>>c;

// clrscr();
cout<<"Dynamic:\n";
CPred *Q = new CPred();//CREATE
// clrscr();
cout<<"Vvedite vopros:\n";
cin>>c;
cout<<"Otvet na vash vopros: ";
Q->get();
cout<<"\n";
cin>>c;

// clrscr();
cout<<"Copy from the first method:\n";
CPred *O = new CPred(*Q);//CREATE
// clrscr();
cout<<"Vvedite vopros:\n";
cin>>c;
delete Q;
cout<<"Otvet na vash vopros: ";
O->get();
cout<<"\n";
cin>>c;
getch();
}
Как из этих 2 кодов сделать 1 хорошо работающий?
_Bald_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не рандомный рандом ))))) Junk1E Общие вопросы C/C++ 6 09.12.2009 18:51
Интервал ответа Pavelok Работа с сетью в Delphi 3 16.05.2009 22:08
создать в файле рандомный двумерный массив loon Помощь студентам 2 25.06.2008 08:32
Рандомный вывод Forrest Gamp Общие вопросы C/C++ 6 10.02.2008 15:03
вывод ответа на соответвующий вопрос Phoenix53 Общие вопросы Delphi 5 26.04.2007 00:59