First commit 07/01/2002
This commit is contained in:
151
GNum.cpp
Normal file
151
GNum.cpp
Normal file
@ -0,0 +1,151 @@
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#include <vcl.h>
|
||||
#pragma hdrstop
|
||||
|
||||
#include <stdio.h>
|
||||
#include "GNum.h"
|
||||
//---------------------------------------------------------------------------
|
||||
#pragma package(smart_init)
|
||||
#pragma resource "*.dfm"
|
||||
TForm1 *Form1;
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TForm1::TForm1(TComponent* Owner)
|
||||
: TForm(Owner)
|
||||
{
|
||||
ComboBox1->ItemIndex = 0;
|
||||
ComboBox2->ItemIndex = 1;
|
||||
ComboBox3->ItemIndex = 2;
|
||||
ComboBox4->ItemIndex = 3;
|
||||
ComboBox5->ItemIndex = 4;
|
||||
ComboBox6->ItemIndex = 5;
|
||||
mismaDecena->ItemIndex = 1;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
void __fastcall TForm1::Button1Click(TObject *Sender)
|
||||
{
|
||||
// Comprueba que no se repiten
|
||||
/*
|
||||
if ( (ComboBox1->ItemIndex != ComboBox2->ItemIndex && ComboBox1->ItemIndex != ComboBox3->ItemIndex && ComboBox1->ItemIndex != ComboBox4->ItemIndex && ComboBox1->ItemIndex != ComboBox5->ItemIndex && ComboBox1->ItemIndex != ComboBox6->ItemIndex ) &&
|
||||
(ComboBox2->ItemIndex != ComboBox3->ItemIndex && ComboBox2->ItemIndex != ComboBox4->ItemIndex && ComboBox2->ItemIndex != ComboBox5->ItemIndex && ComboBox2->ItemIndex != ComboBox6->ItemIndex ) &&
|
||||
(ComboBox3->ItemIndex != ComboBox4->ItemIndex && ComboBox3->ItemIndex != ComboBox5->ItemIndex && ComboBox3->ItemIndex != ComboBox6->ItemIndex ) &&
|
||||
(ComboBox4->ItemIndex != ComboBox5->ItemIndex && ComboBox4->ItemIndex != ComboBox6->ItemIndex ) &&
|
||||
(ComboBox5->ItemIndex != ComboBox6->ItemIndex )
|
||||
)
|
||||
*/
|
||||
if ( (ComboBox1->ItemIndex < ComboBox2->ItemIndex && ComboBox2->ItemIndex < ComboBox3->ItemIndex && ComboBox1->ItemIndex < ComboBox4->ItemIndex && ComboBox1->ItemIndex < ComboBox5->ItemIndex && ComboBox1->ItemIndex < ComboBox6->ItemIndex ) )
|
||||
|
||||
{
|
||||
// Comenzamos a generar
|
||||
ShowMessage( "Ahora empezare a generar n<>meros, aunque parezca que estoy COLGADO, no es asi, sigo trabajando en tu petici<63>n" );
|
||||
|
||||
FILE *stream;
|
||||
char buf1[20], buf2[20], buf3[20], buf4[20];
|
||||
char buffer[80];
|
||||
if ((stream = fopen("gnum.txt", "w+"))== NULL)
|
||||
{
|
||||
ShowMessage( "No puedo abrir el fichero. PUEDE que ya este en USO" );
|
||||
} else {
|
||||
int V1 = ComboBox1->ItemIndex + 1;
|
||||
int V2 = ComboBox2->ItemIndex + 1;
|
||||
int V3 = ComboBox3->ItemIndex + 1;
|
||||
int V4 = ComboBox4->ItemIndex + 1;
|
||||
int V5 = ComboBox5->ItemIndex + 1;
|
||||
int V6 = ComboBox6->ItemIndex + 1;
|
||||
int ColumnaActual = 0;
|
||||
long int Cuantos = 0, CuantosGenero = 0;
|
||||
while(1) {
|
||||
Cuantos++;
|
||||
// Incrementamos (si nos lo permiten) la 1<> cifra
|
||||
V6 ++; if ( V6 > 49 )
|
||||
{
|
||||
if ( !CheckBox5->Checked ) break;
|
||||
V5++; V6 = V5+1;
|
||||
if ( V5 > 48 )
|
||||
{
|
||||
if ( !CheckBox4->Checked ) break;
|
||||
V4++; V5 = V4+1; V6 = V5+1;
|
||||
if ( V4 > 47 )
|
||||
{
|
||||
if ( !CheckBox3->Checked ) break;
|
||||
V3++; V4 = V3+1; V5 = V4+1; V6 = V5+1;
|
||||
if ( V3 > 46 )
|
||||
{
|
||||
if ( !CheckBox2->Checked ) break;
|
||||
V2++; V3 = V2+1; V4=V3+1; V5 = V4+1; V6 = V5+1;
|
||||
if ( V2 > 45 )
|
||||
{
|
||||
if ( !CheckBox1->Checked ) break;
|
||||
V1++; V2=V1+1; V3=V2+1; V4=V3+1; V5 = V4+1; V6 = V5+1;
|
||||
if ( V1 > 44 )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( cumpleRestoCondiciones(V1, V2, V3, V4, V5, V6) )
|
||||
{
|
||||
CuantosGenero++;
|
||||
switch ( ColumnaActual )
|
||||
{
|
||||
case 3:
|
||||
sprintf( buf4, "%02d-%02d-%02d-%02d-%02d-%02d", V1, V2, V3, V4, V5, V6);
|
||||
sprintf( buffer, "%s %s %s %s\r", buf1, buf2, buf3, buf4 );
|
||||
/* write some data to the file */
|
||||
fwrite(buffer, 79, 1, stream);
|
||||
ColumnaActual = 0;
|
||||
break;
|
||||
case 2:
|
||||
sprintf( buf3, "%02d-%02d-%02d-%02d-%02d-%02d", V1, V2, V3, V4, V5, V6);
|
||||
ColumnaActual++;
|
||||
break;
|
||||
case 1:
|
||||
sprintf( buf2, "%02d-%02d-%02d-%02d-%02d-%02d", V1, V2, V3, V4, V5, V6);
|
||||
ColumnaActual++;
|
||||
break;
|
||||
case 0:
|
||||
sprintf( buf1, "%02d-%02d-%02d-%02d-%02d-%02d", V1, V2, V3, V4, V5, V6);
|
||||
ColumnaActual++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
fclose(stream);
|
||||
sprintf( buffer, "Ya he acabado. He generado %ld combinaciones y me he quedado con %ld.", Cuantos, CuantosGenero );
|
||||
ShowMessage( buffer );
|
||||
}
|
||||
} else {
|
||||
ShowMessage( "El n<>mero de comienzo no puede repetirse, y debe estar ordenado de MENOR a MAYOR" );
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
bool __fastcall TForm1::cumpleRestoCondiciones(int V1, int V2, int V3, int V4, int V5, int V6)
|
||||
{
|
||||
bool dev=true;
|
||||
int numDistintaDecena = mismaDecena->ItemIndex + 3;
|
||||
|
||||
// Verificamos que no haya mas de X n<>meros de la misma decena
|
||||
int nDecenas[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
nDecenas[V1/10]++;
|
||||
nDecenas[V2/10]++;
|
||||
nDecenas[V3/10]++;
|
||||
nDecenas[V4/10]++;
|
||||
nDecenas[V5/10]++;
|
||||
nDecenas[V6/10]++;
|
||||
|
||||
|
||||
for ( int i=0;i<10;i++ )
|
||||
{
|
||||
if ( nDecenas[i]>=numDistintaDecena ) { dev = false; break; }
|
||||
}
|
||||
|
||||
return dev;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
Reference in New Issue
Block a user