1/07/2007

Números en ruso

Bueno, esto no es de ahora, pero... por si a alguien le sirve de algo lo posteo. Este año pasado hice primero de ruso en la escuela oficial de idiomas, y llevaba idea de hacer un programilla en builder para cojugar verbos. Al final, como no he seguido, lo he dejado de lado, pero aun conservo el que hice para saber como se esribian los números del 1 al 100. Escribiendo eso, el número, el programa devolvia en una label, y en un textbox, el número escrito correctamente.Realmente es muy sencillo, ya que la raiz es la misma para cada decena - salvo excepciones - y las terminaciones tambien. De modo que basicamente si era un número del 1 al 20 los tenia tal cual, pues eran "singulares", y si era posterior descomponia el numero en decenas y unidades, convertia cada cosa por su lado, y finalmente mostraba el resultado.

Podeis descargar el instalador de http://personales.upv.es/jetomad/setup.exe

La fuente necesaria para ver todos los caracteres en cirilico (Si no os saldrian cosas raras) es la "Bulgarian Courier". Si no recuerdo mal, iba incluida en el instalador.

Del mismo modo, creo que algun numero concreto fallaba al mostrarlo. En fin, como se puede comprobar era para "uso personal" xD.

El código fuente, por si a alguien le interesa...

//---------------------------------------------------------------------------

#include
#pragma hdrstop
#define A 192
#include "numeros.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Label2->Font->Name = "Bulgarian Courier";
Label2->Font->Size = 36;
Label2->Font->Color = clRed;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int numero, espacio=-1;
char letras[40];

numero = Edit1->Text.ToInt();

// Zona decenas...

if (numero == 100) {
letras[0]=209;
letras[1]=210+32;
letras[2]=206+32;
}
if ((numero/10)==9) {
letras[0]=196;
letras[1]=197+32;
letras[2]=194+32;
letras[3]=223+32;
letras[4]=205+32;
letras[5]=206+32;
letras[6]=209+32;
letras[7]=210+32;
letras[8]=206+32;
espacio=9;
}
if ((numero/10)==8) {
letras[0]=194;
letras[1]=206+32;
letras[2]=209+32;
letras[3]=197+32;
letras[4]=204+32;
letras[5]=220+32;
letras[6]=196+32;
letras[7]=197+32;
letras[8]=209+32;
letras[9]=223+32;
letras[10]=210+32;
espacio=11;
}

if ((numero/10)==7) {
letras[0]=209;
letras[1]=197+32;
letras[2]=204+32;
letras[3]=220+32;
letras[4]=196+32;
letras[5]=197+32;
letras[6]=209+32;
letras[7]=223+32;
letras[8]=210+32;
espacio=9;
}

if ((numero/10)==6) {
letras[0]=216;
letras[1]=197+32;
letras[2]=209+32;
letras[3]=220+32;
letras[4]=196+32;
letras[5]=197+32;
letras[6]=209+32;
letras[7]=223+32;
letras[8]=210+32;
espacio=9;
}

if ((numero/10)==5) {
letras[0]=207;
letras[1]=223+32;
letras[2]=210+32;
letras[3]=220+32;
letras[4]=196+32;
letras[5]=197+32;
letras[6]=209+32;
letras[7]=223+32;
letras[8]=210+32;
espacio=9;
}

if ((numero/10)==4) {
letras[0]=209;
letras[1]=206+32;
letras[2]=208+32;
letras[3]=206+32;
letras[4]=202+32;
espacio=5;
}

if ((numero/10)==3) {
letras[0]=210;
letras[1]=208+32;
letras[2]=200+32;
letras[3]=196+32;
letras[4]=214+32;
letras[5]=192+32;
letras[6]=210+32;
letras[7]=220+32;
espacio=8;
}

if (numero/10==2) {
letras[0]=196;
letras[1]=194+32;
letras[2]=192+32;
letras[3]=196+32;
letras[4]=214+32;
letras[5]=192+32;
letras[6]=210+32;
letras[7]=220+32;
espacio=8;
}

//zona del 1 al 19. Si hay espacio, pongo simbolo...
if (espacio!=-1) letras[espacio]=32;
//seguimos del 1 al 19...

if ((numero==1) || (numero%10==1)){
letras[espacio+1]=206;
letras[espacio+2]=196+32;
letras[espacio+3]=200+32;
letras[espacio+4]=205+32;
if (numero>10) espacio=espacio+4;
else espacio=3;
}

if ((numero==2) || (numero%10==2)){
letras[espacio+1]=196;
letras[espacio+2]=194+32;
letras[espacio+3]=192+32;
if (numero>10) espacio=espacio+3;
else espacio=2;
}

if ((numero==3) || (numero%10==3)){
letras[espacio+1]=210;
letras[espacio+2]=208+32;
letras[espacio+3]=200+32;
if (numero>10) espacio=espacio+3;
else espacio=2;
}

if ((numero==4) || (numero%10==4)){
letras[espacio+1]=215;
letras[espacio+2]=197+32;
letras[espacio+3]=210+32;
letras[espacio+4]=219+32;
letras[espacio+5]=208+32;
letras[espacio+6]=197+32;
if (numero>10) espacio=espacio+6;
else espacio=5;
}

if ((numero==5) || (numero%10==5)){
letras[espacio+1]=207;
letras[espacio+2]=223+32;
letras[espacio+3]=210+32;
letras[espacio+4]=220+32;
if (numero>10) espacio=espacio+4;
else espacio=3;
if (numero==15) espacio--;
}

if ((numero==6) || (numero%10==6)){
letras[espacio+1]=216;
letras[espacio+2]=197+32;
letras[espacio+3]=209+32;
letras[espacio+4]=220+32;
letras[espacio+5]=220+32;
if (numero>10) espacio=espacio+5;
else espacio=4;
}

if ((numero==7) || (numero%10==7)){
letras[espacio+1]=209;
letras[espacio+2]=197+32;
letras[espacio+3]=204+32;
letras[espacio+4]=220+32;
if (numero>10) espacio=espacio+4;
else espacio=3;
}

if ((numero==8) || (numero%10==8)){
letras[espacio+1]=194;
letras[espacio+2]=206+32;
letras[espacio+3]=209+32;
letras[espacio+4]=197+32;
letras[espacio+5]=204+32;
letras[espacio+6]=220+32;
if (numero>10) espacio=espacio+6;
else espacio=5;
}

if ((numero==9) || (numero%10==9)){
letras[espacio+1]=196;
letras[espacio+2]=197+32;
letras[espacio+3]=194+32;
letras[espacio+4]=223+32;
letras[espacio+5]=210+32;
letras[espacio+6]=220+32;
if (numero>10) espacio=espacio+6;
else espacio=5;
}

if (numero==10){
letras[espacio+1]=196;
letras[espacio+2]=197+32;
letras[espacio+3]=209+32;
letras[espacio+4]=223+32;
letras[espacio+5]=210+32;
letras[espacio+6]=220+32;
letras[espacio+7]=0;
}

if ((numero<20) && (numero>10)){
letras[espacio+1]=205+32;
letras[espacio+2]=192+32;
letras[espacio+3]=196+32;
letras[espacio+4]=214+32;
letras[espacio+5]=192+32;
letras[espacio+6]=210+32;
letras[espacio+7]=220+32;
espacio=espacio+7;
}
letras[espacio+1]=0;
if ((numero<1) || (numero>100)) {Label4->Caption = "Numero no valido";
Label2->Caption = "";}
else {Label2->Caption = letras;
Label4->Caption = "";}


}
//---------------------------------------------------------------------------

2 comentarios:

Kazhi dijo...

Hola thoron!!

Tan solo decirte... (imaginate con la voz con que le cantas una nana a un crio)

Deeeejate las droooogaaas, sal a la calleeeee y buscate una viiiiidaaaa. Si no puedes veeete de puuuutas, es más entreteniiiiidaaaaaaaaaaaaaa.

Un saludo, kazhi xDDDDDDDDDDDDDDDD

Thorontir dijo...

Eso no me lo dices a la cara :D

Eh, ahora que lo pienso, si, si me lo dices...