Dev - C++ - Secuencia de numeros

 
Vista:

Secuencia de numeros

Publicado por Juan (1 intervención) el 10/10/2005 19:32:10
Un saludo a todos ,

Haber quien me puede ayudar a crear una aplicación que me genere en un txt.

una base de datos 700000 numeros usando esta secuencia : arrancando de estenumero 04069203000191
se le suman 10 millones y se restan 6, pero cada 10 numeros se le suman los 10 millones y se le suma 41, espero haberme explicado bien . necesito un programa que me genere a partir de ese numero todos los que le siguen hasta llegar mas o menos a setecientos mil . pero tienen que cumplir con esa secuencia que indiqué antes ..

Quien me puede dar una idea ? el programa generaria algo asi , pero necesito 700000 .

04069203000191
04069213000185
04069223000179
04069233000173
04069243000167
04069253000161
04069263000155
04069273000149
04069283000143
04069293000137
04069313000178
04069323000172
04069333000166
04069343000160
04069353000154
04069363000148
04069373000142
04069383000136
04069393000130
04069403000124
04069423000165
04069433000159

Espero haberme explicado
Como podria hacerlo ?

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Secuencia de numeros

Publicado por el_baina (6 intervenciones) el 12/10/2005 21:50:11
jeje este acertijo me gusta.
vamos a ver: los numeros esos con los que estás trabajando son muy grandes como para representarlos en c++, asique yo te recomendaria que partieses el numero en dos, es decir una parte que sea la del 04069420 y la otra la de 3000191. La parte menos significativa ( 3000191) va sufriendo un continuo decremento, exactamente 13 por cada 10 numeros (6*9 -41) con lo que despues de 70000 veces (700000/10) sufrirá un decremento total de 910000 que es menor que 3000191, con lo que la parte menos significativa no se nos hará nunca negativa en cuyo caso habria que truncar el numero. Si quisieras hacer más de 700000 comprueva con estos cálculos que la parte menos significativa no se te haga negativa en cuyo caso tendremos que truncar el otro numero el de la parte mas significativa, esto se hace restando 1 al numero de la parte más significativa que es lo mismo que restar 10 millones al numero total y sumandole diez millones a la parte menos significativa. Con lo cual será como si no se hubiese hecho nada pero nos sirve para truncar el numero y que la parte menos significativa no nos quede negativa.

el código sin el truncamiento es este ( compilado en dev-cpp 4.9.9.2) :
nota: el doble "menor que" no suele salir bien en este foro. suele poner algo como esto << en vez de < <

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{

long msb = 406920;
long lsb = 3000191;
ofstream flujosal;
flujosal.open("fichero.txt");
for (long i = 1; i <= 700000; i++){
flujosal<<"0"<<msb<<lsb<<endl;
if ( i % 10 == 0) { // cada 10 numeros
lsb = lsb + 47; // sumamos 47 porque despues resstamos 6. 17 - 6 = 41
msb++; // sumamos 1*10^6 diez millones
}
msb++; // sumamos 1*10^7 diez millones
lsb = lsb - 6;
}
system("PAUSE");
return EXIT_SUCCESS;
}

el codigo con el truncamiento en caso de querer hacer más numeros es este:

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{

long msb = 406920;
long lsb = 3000191;
ofstream flujosal;
flujosal.open("fichero.txt");
for (long i = 1; i <= 700000; i++){
flujosal<<"0"<<msb<<lsb<<endl;
if ( i % 10 == 0) { // cada 10 numeros
lsb = lsb + 47; // sumamos 47 porque despues resstamos 6 17 - 6 = 41
msb++; // sumamos 1*10^6 diez millones
}
msb++; // sumamos 1*10^7 diez millones
lsb = lsb - 6;
if(lsb < 0) {
lsb = lsb + 10000000; //sumamos diez millones
msb = msb - 1; //restamos diez millones
}

}
system("PAUSE");
return EXIT_SUCCESS;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar