PDA

Показать полную графическую версию : [решено] Случайная выборка строки из файла для Web игры


Чайниг
15-03-2012, 20:34
Суть в том что есть ID вещей,он находится в .txt блокноте,можно ли написать такой рандом который будет сам выбирать этот id и выдавать эту вещь пользователью.
Можно огрызки кода,или пример мне все подойдет.

Delirium
16-03-2012, 01:39
считываешь файл в память, берешь количество строк. СОздаешь RAND число (http://www.cplusplus.com/reference/clibrary/cstdlib/rand/ ) в диапазоне от 1 до количества строк. Считываешь полученную строку и отдаешь пользователю.

Drongo
16-03-2012, 15:40
Чайниг, Вот.
В ID хранится сгенерированое число от 1 до количества строк из файла.
В CountLine хранится общее количество строк из файла. Хотя можно и напрямую, без использования этой переменной
...
int ID = 1 + rand() % lst->Count;
...
примерно так.
...
#include <cstdlib>
...
...
...
TStringList *lst = new TStringList;
lst->LoadFromFile("ПУТЬ_К_ВАШЕМУ_ТХТ_ФАЙЛУ_С_ID");
int CountLine = lst->Count;
srand(time(0));
int ID = 1 + rand() % CountLine;
...

Чайниг
16-03-2012, 22:20
Допустим вот у меня есть код,

#include< iostream >
#include< cstdlib >
#include< ctime >
#define L 10
#define N 3
using namespace std;
int main()
{
int r;
int sum;
float sred;
time_t t;

srand((unsigned) time(&t));

for(int i=1; i <= N; i++)
{
cout << "Sluchainie chisla: ";
sum = 0;
for(int j = 1; j <= L; j++)
{
r = rand() % 10 + 1;
cout << r << " ";
sum += r;
}
sred = (float)sum / L;
cout << "Sred arifm = " << sred << endl;
}
system("pause");
return 0;
}


выводит 3 любых числа из 10 ID,
куда мне впихнуть код



примерно так.
Код:
...
#include <cstdlib>
...
...
...
TStringList *lst = new TStringList;
lst->LoadFromFile("ПУТЬ_К_ВАШЕМУ_ТХТ_ФАЙЛУ_С_ID");
int CountLine = lst->Count;
srand(time(0));
int ID = 1 + rand() % CountLine;
... »

Drongo
17-03-2012, 14:36
Чайниг, Вообще-то у меня к графическому интерфейсу был вариант. У вас консольный вариант.

Чайниг
17-03-2012, 18:57
Drongo,дайте тогда код к вашему варианту,он скорее всего графическим будет.
эта версия для бета теста

Drongo
18-03-2012, 16:25
Компоненты: Button1, Button2, OpenDialog1, Label1

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <cstdlib>

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TStringList *lst;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
// Создаём список------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
lst = new TStringList();
}
// Открываем текстовый файл и грузим в список lst----------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute()){
lst->LoadFromFile(OpenDialog1->FileName);
Button2->Enabled = true;
}
}
// Генерируем номер строки---------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
srand(time(0));
Label1->Caption = String("Случайная строка: ") + 1 + rand() % lst->Count;
}
// Освобождаем память при выходе---------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete lst;
}
//---------------------------------------------------------------------------

Чайниг
18-03-2012, 20:24
Drongo, а в MVS это какое расширение файла?

ferget
18-03-2012, 21:21
это для C++ builder

Drongo
19-03-2012, 14:27
это для C++ builder »Да вроде и для MVS сгодится, обработчики у кнопок одни.

Чайниг, Я не пользуюсь Visual Studio, но думаю создать новый проект и накидать компонентов труда составить не сложно. А дальше обработчики у кнопок OnClick и у формы OnCreate и OnDestroy, вставляете код из этих функций что я привёл в листинге и компилируете проект.

Чайниг
19-03-2012, 21:39
ясно.спасибо




© OSzone.net 2001-2012