[14] Concurs - Numere scrise in cuvinte

Re: [14] Concurs - Numere scrise in cuvinte

Postby cata45 » 09 Sep 2011, 11:13

^ Si mie imi da eceeasi eroare la executabilul lui noobakaflo
0,0p / 0 votes
The EARTH without ART is just EH.
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Status: 9

Re: [14] Concurs - Numere scrise in cuvinte

Postby noobakaflo » 10 Sep 2011, 12:10

L-am refacut in Mingw,sa-mi spuneti va rog daca problema persista..Initial,folosisem Visual Studio.. :D
1p / 1 votes
Attachments
bc14_noobakaflo.rar
(6.52 KiB) Downloaded 11 times
User avatar
noobakaflo
Bit
 
Joined: 10 Dec 2010
Location: Ploiesti
Status: 1

Re: [14] Concurs - Numere scrise in cuvinte

Postby new_luca » 15 Sep 2011, 10:45

noobakaflo wrote:L-am refacut in Mingw,sa-mi spuneti va rog daca problema persista..Initial,folosisem Visual Studio.. :D


"Perfect" functional acum ;))
0,0p / 0 votes
Image
User avatar
new_luca
Byte
 
Joined: 03 Jul 2011
Location: Gaesti
Status: 12

Re: [14] Concurs - Numere scrise in cuvinte

Postby DarkByte » 15 Sep 2011, 16:26

Noroc cu eni4ever ... uitasem de concurs.

Am scris si eu un program la repezeala (acum vreo 10 zile :))), am avut o idee de a-l rescrie - dar n-am gasit timpul necesar. So, asa cum e, il gasiti in atasament :)

Bafta
1p / 1 votes
Attachments
bitcell14_db.zip
(47.41 KiB) Downloaded 16 times
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 140

Re: [14] Concurs - Numere scrise in cuvinte

Postby new_luca » 15 Sep 2011, 17:38

Noroc cu tine DarkByte :D, mi-am adus aminte de concurs acum ca ai postat si am spus sa mai incerc niste valori la intamplare pentru sursa mea, moment de inspiratie :)) , am gasit un bug.

Asa ca va prezint ultima versiune a programului meu, in atasament >:D<
2p / 1 votes
Attachments
bc14_New_LucA.zip
(7.09 KiB) Downloaded 10 times
Image
User avatar
new_luca
Byte
 
Joined: 03 Jul 2011
Location: Gaesti
Status: 12

Re: [14] Concurs - Numere scrise in cuvinte

Postby DarkByte » 15 Sep 2011, 18:02

Btw, un mic anunt: sursele trebuie sa mi le trimiteti pe PM.

So far, doar new_luca si cata45 le-au trimis. Daca mai e cineva (in afara de cei doi) care a trimis surse, we have a problem - nu am gasit nimic :).

Bafta
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 140

Re: [14] Concurs - Numere scrise in cuvinte

Postby cata45 » 16 Sep 2011, 16:30

Linkul de download de la executabilul meu a expirat. Noua versiune o gasiti in atas.
3p / 1 votes
Attachments
bc14_cata45.rar
(115.14 KiB) Downloaded 13 times
The EARTH without ART is just EH.
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Status: 9

Re: [14] Concurs - Numere scrise in cuvinte

Postby cata45 » 18 Sep 2011, 16:51

Concursul s-a incheiat ... asteptam castigatorul :)
BTW ce s-a intamplat azi? Nu am putut sa accesez bitcell pana acum (e de la mine sau a fost down for maintenance?)
0,0p / 0 votes
The EARTH without ART is just EH.
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Status: 9

Re: [14] Concurs - Numere scrise in cuvinte

Postby smith » 18 Sep 2011, 16:57

DarkByte se ocupă de concurs, dar el e momentan (cred) în drum spre Oradea. O să vă "rezolve" când ajunge acolo.

Cât despre site, avem ceva probleme cu serverul de host. Probabil o să ne mutăm pentru că ne deranjează și pe noi căderile astea lungi și fără anunț.
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: [14] Concurs - Numere scrise in cuvinte

Postby DarkByte » 18 Sep 2011, 19:24

Salut, baieti :)

Avand in vedere ca si eu am participat (chiar si cu un program scris in graba), am sa las pe altcineva sa determine castigatorul. eni4ever, ai cuvantul :).

Succes, baieti ! (si castigatorul sa nu uite sa se prezinte cu un nou concurs - ASAP :D).

Bafta !
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 140

Re: [14] Concurs - Numere scrise in cuvinte

Postby eni4ever » 18 Sep 2011, 19:59

Seară' bună colocatari,
Dacă tot am primit onoarea, să trecem direct la subiect și să prezentăm situația generală :
S-au primit 7 soluții (dacă am uitat vreo una vă rog trageți-mă insistent de mânecă), iar rezultatul evaluării este după cum urmează :
  1. Nume              Dimensiune(b)     TMediu            Nota          
  2. cata45            563751            44.727            10            
  3. ciresel           910586            46.356            8.27          
  4. DarkByte          89600             63.815            5.56          
  5. depraved          908287            43.961            7.21          
  6. eni4ever          43180             45.269            9.54          
  7. new_luca          23093             44.889            9.06          
  8. noobakaflo        24133             44.468            5.98      

Aceste rezultate au fost obținute prin supunerea fiecărei soluții la 1000 de teste și înregistrarea rezultatelor (Timp mediu de rulare - TMediu, dimensiune soluție, Nota evaluării) pentru fiecare participant. Testele precum și rezultatele parțiale/totale le găsiți în ataș. Dacă veți găsi neconcordanțe în legătură cu variațiuni ale limbii române în principal, vă rog să mi le semnalați. Nu voi putea modifica rezultatele finale, dar le vom putea indexa/discuta.

Mulțumim pentru participare tuturor!
cata45, felicitări! și te așteptăm cu următoarea problemă. Make it snappy!

Spor,
eni
0,0p / 0 votes
Attachments
bc14_evaluare.rar
(635.36 KiB) Downloaded 19 times
Image

"Rațiunea vine în umbre scurte numite suferințe." Victor Adăscăliței
"Bender: Anything less than immortality is a complete waste of time.
Zoidberg: Then suicide it is! Step into my office ..." Futurama S06E06
User avatar
eni4ever
DWord
 
Joined: 03 Jan 2010
Location: Timișoara
Status: 57.83

Re: [14] Concurs - Numere scrise in cuvinte

Postby DarkByte » 18 Sep 2011, 20:30

Am dat punctele tuturor participantilor (cate 1 punct) si 3 puncte lui cata45.

Daca este cineva care nu a primit punct pentru participarea la concurs, sa ma anunte ;)

Bafta !
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 140

Re: [14] Concurs - Numere scrise in cuvinte

Postby new_luca » 18 Sep 2011, 20:56

Numarul 51423 se scrie foarte corect :
cincizeci si unu de mii patru sute douazeci si trei
M-am uitat la testele mele si din cate am observat doar pe teste de genul este notat cu 0, eronat.

A fost o mica eroare in programarea evaluatorului :D , chestia cu feminin/masculin(unu / una) nu avea ce cauta aici fiind o chestie subiectiva din cate stiu eu.

Bravo cata45 si cu toate ca (zic eu) ai fost subiectiv (cred eu) multumim eni4ever pentru evaluator.

Haida cu noul concurs , de-abia astept ^:)^
0,0p / 0 votes
Last edited by new_luca on 18 Sep 2011, 21:17, edited 2 times in total.
Image
User avatar
new_luca
Byte
 
Joined: 03 Jul 2011
Location: Gaesti
Status: 12

Re: [14] Concurs - Numere scrise in cuvinte

Postby eni4ever » 18 Sep 2011, 21:15

^ Așa este luca, și DarkByte a avut aceeași problemă. Este un aspect care nu a fost integrat în evaluator.

unu/una nu este o interpretare subiectivă, ambele variante fiind acceptate în dex. Acest lucru nu mă scutește, ce-i drept, să le consider pe ambele corecte.

Te rog să-mi accepți scuzele pentru această atribuire greșită!

new_luca wrote:[...] ai fost subiectiv (cred eu) multumim eni4ever pentru evaluator.

Ca o ironie a sorții, ceea ce am încercat eu să fac a fost chiar asta : să combat factorul subiectiv din evaluări. Problema este că sunt la început, iar dificultățile sunt multiple, dar învățăm!
0,0p / 0 votes
Image

"Rațiunea vine în umbre scurte numite suferințe." Victor Adăscăliței
"Bender: Anything less than immortality is a complete waste of time.
Zoidberg: Then suicide it is! Step into my office ..." Futurama S06E06
User avatar
eni4ever
DWord
 
Joined: 03 Jan 2010
Location: Timișoara
Status: 57.83

Re: [14] Concurs - Numere scrise in cuvinte

Postby DarkByte » 18 Sep 2011, 22:36

Inca nu am primit sursele tuturor, asa ca rog "absentii" sa se prezinte cu temele :P

In continuare, in no particular order, sursele care le am:

eni4ever:

  1. #include <stdio.h>
  2. #include <string.h>                         /* pentru "strlen", "strcat" */
  3. #include <stdlib.h>                         /* pentru "atoi" */
  4.  
  5. #define FDATE_IN "bitcell14.in"             /* resursa de intrare */
  6. #define FDATE_OUT "bitcell14.out"           /* resursa de iesire */
  7.  
  8. const char* unitati[] = {"zero", "unu", "doi", "trei", "patru", "cinci", "sase", "sapte", "opt", "noua"};
  9. const char* unitatiSi[] = {"", "una", "doua", "trei", "patru", "cinci", "sase", "sapte", "opt", "noua"};
  10. const char* nrUnitati[] = {"", "o ", "doua ", "trei ", "patru ", "cinci ", "sase ", "sapte ", "opt ", "noua "};
  11. const char* nrZeci[] = {"", "", "doua", "trei", "patru", "cinci", "sai", "sapte", "opt", "noua"};
  12. const char* primZeci[] = {"zece",
  13.                         "unsprezece",
  14.                         "doisprezece",
  15.                         "treisprezece",
  16.                         "paisprezece",
  17.                         "cincisprezece",
  18.                         "saiseprezece",
  19.                         "saptesprezce",
  20.                         "optsprezece",
  21.                         "nouasprezece"};
  22.  
  23. int main()
  24. {  
  25.     FILE *fin = fopen(FDATE_IN, "r");
  26.     FILE *fout = fopen(FDATE_OUT, "w");
  27.     char numar[6] = "";
  28.     char numarPronuntat[100] = "";
  29.     int dimNr = 0;
  30.     int valCifraCurenta = 0;
  31.     unsigned char zeciPrezente = 0;
  32.     unsigned char iteratiiProc = 0;
  33.    
  34.     if(NULL == fin)
  35.     {
  36.         perror("*** Fisierul de intrare nu a putut fi deschis");
  37.     }
  38.     else
  39.     {
  40.         while(fscanf(fin, "%s", numar) != EOF)
  41.         {
  42.             zeciPrezente = 0;
  43.             iteratiiProc = 0;
  44.             strcpy(numarPronuntat, "");
  45.             dimNr = strlen(numar);
  46.            
  47.             if(dimNr > 6 || atoi(numar) > 500000 || atoi(numar) < 0)
  48.             {
  49.                 fprintf(fout, "Numar Invalid!\n");
  50.             }
  51.             else
  52.             {
  53.                 /* dimensiunea si valoarea pare, deocamdata, valida */
  54.                 while(dimNr != 0)
  55.                 {
  56.                     valCifraCurenta = numar[0] - '0';
  57.                     switch(dimNr)
  58.                     {
  59.                         case 3: /* sute */
  60.                         case 6: /* sute de mii */
  61.                             sprintf(numarPronuntat, "%s%s%s%s", numarPronuntat,
  62.                                                                 nrUnitati[valCifraCurenta],
  63.                                                                 (valCifraCurenta == 1 ? "suta" : (valCifraCurenta != 0 ? "sute" : "")),
  64.                                                                 (dimNr == 6 && numar[1] == '0' && numar[2] == '0' ? " de mii" : ""));
  65.                             break;
  66.                         case 2: /* zeci */
  67.                         case 5: /* zeci de mii */
  68.                             if(numar[0] != '0' && numar[0] != '1')
  69.                             {
  70.                                 sprintf(numarPronuntat, "%s%s%s", numarPronuntat,
  71.                                                                        nrZeci[valCifraCurenta],
  72.                                                                        (dimNr == 5 && numar[1] == '0' ? "zeci de mii" : "zeci"));
  73.                                 zeciPrezente = 1;
  74.                             }
  75.                             else if(numar[0] == '1')
  76.                             {
  77.                                 sprintf(numarPronuntat, "%s%s%s", numarPronuntat,
  78.                                                                   primZeci[numar[1] - '0'],
  79.                                                                   (dimNr == 5 ? " mii" : ""));
  80.                                 strcpy(numar, numar + 1);
  81.                                 dimNr--;
  82.                             }
  83.                             break;
  84.                         case 1: /* unitati */
  85.                         case 4: /* mii */
  86.                             if(1 == zeciPrezente)
  87.                             {
  88.                                 sprintf(numarPronuntat, "%s%s%s%s", numarPronuntat,
  89.                                                                     (valCifraCurenta != 0 ? "si " : ""),
  90.                                                                     (dimNr == 4 ? (iteratiiProc == 0 ? nrUnitati[valCifraCurenta] : unitatiSi[valCifraCurenta]) :
  91.                                                                                   (valCifraCurenta == 0 ? "" : unitati[valCifraCurenta])),
  92.                                                                     (dimNr == 4 ? (iteratiiProc == 0 ? (valCifraCurenta == 1 ? "mie" : "mii") : " de mii") :
  93.                                                                                   ""));
  94.                                 zeciPrezente = 0;
  95.                             }
  96.                             else
  97.                             {
  98.                                 sprintf(numarPronuntat, "%s%s%s", numarPronuntat,
  99.                                                                   (dimNr == 4 ? (iteratiiProc == 0 ? nrUnitati[valCifraCurenta] : unitatiSi[valCifraCurenta]) :
  100.                                                                                 unitati[valCifraCurenta]),
  101.                                                                   (dimNr == 4 ? (iteratiiProc == 0 ? (valCifraCurenta == 1 ? "mie" : "mii") : " mii") :
  102.                                                                                 ""));
  103.                             }
  104.                             break;
  105.                     }
  106.                    
  107.                     do{
  108.                         strcpy(numar, numar + 1);
  109.                         dimNr--;
  110.                     }while(numar[0] == '0');
  111.                    
  112.                     if(dimNr != 0)  strcat(numarPronuntat, " ");
  113.                    
  114.                     iteratiiProc++;
  115.                 }
  116.                 fprintf(fout, "%s\n", numarPronuntat);
  117.             }
  118.         }
  119.        
  120.         fclose(fin);
  121.         fclose(fout);
  122.     }
  123.    
  124.     return 0;
  125. }


depraved

  1. #include<fstream>
  2. #include<string.h>
  3. using namespace std;
  4. ifstream f("bitcell14.in");
  5. ofstream g("bitcell14.out");
  6. char numar[10][10]={"","unu","doua","trei","patru","cinci","sase","sapte","opt","noua"};
  7. char str[15][15]={"","","zeci si","sute","de mii","zeci si","sute","de milioane","zeci si","sute"};
  8. char spzece[]="sprezece",
  9. spsase[]="sai",sppatru[]="pai";
  10. int i,n, s[15];
  11. long nr;
  12. void creeaza()
  13. {
  14.     f>>nr;
  15.     while(nr)
  16.     {
  17.         n++;s[n]=nr%10;nr/=10;
  18.     }
  19.   i=n;
  20. }
  21. void ver()
  22. {
  23.     if(s[1]==0)
  24.     strcpy(str[2],"zeci");
  25.     if(s[4]==0)
  26.     strcpy(str[5],"zeci");
  27.     if(s[5]==1 || s[5]==0)
  28.     strcpy(str[4],"mii");
  29.     if(n==4)
  30.     strcpy(str[4],"mii");
  31.     if(s[7]==0)
  32.     strcpy(str[8],"zeci");
  33.     if(n==7)
  34.     strcpy(str[7],"milioane");
  35.     if(s[8]==1 || s[8]==0)
  36.     strcpy(str[7],"milioane");
  37. }
  38. void prelucreaza()
  39. {
  40.     if(i==9)
  41.      if(s[9]==1)
  42.      {g<<"o suta"<<' ';i--;}
  43.      else
  44.      {g<<numar[s[9]]<<' '<<str[9]<<' ';i--;
  45.  
  46.      }
  47.  
  48.     if(i==8)
  49.     if(s[8]!=0)
  50.     {
  51.         if(s[8]==6)
  52.         {g<<spsase<<str[i]<<' ';i--;}
  53.          else
  54.           if(s[8]==1)
  55.           {if(s[7]==6){g<<spsase<<spzece<<' '<<str[7]<<' ';i=6;}
  56.               else
  57.                if(s[7]==4){g<<sppatru<<spzece<<' '<<str[7]<<' ';i=6;}
  58.                 else
  59.                  {g<<numar[s[7]]<<spzece<<' ';i=6;}}
  60.           else
  61.           {g<<numar[s[8]]<<str[8]<<' ';i--;}}
  62.           else
  63.           i--;
  64.     if(i==7)
  65.       if(s[i]==1)
  66.        {g<<"un milion"<<' ';i--;}
  67.        else
  68.        {g<<numar[s[i]]<<' '<<str[i]<<' ';i--;}
  69.     if(i==6)
  70.      if(s[6]==1)
  71.      {g<<"o suta ";i--;}
  72.      else
  73.      {g<<numar[s[i]]<<' '<<str[i]<<' ';i--;}
  74.     if(i==5)
  75.       if(s[5]!=0)
  76.      {if(s[5]==6)
  77.      {g<<spsase<<str[i]<<' ';i--;}
  78.      else
  79.      {if(s[5]==1)
  80.         {if(s[4]==6){g<<spsase<<spzece<<' '<<str[4]<<' ';i=3;}
  81.           else
  82.             if(s[4]==4){g<<sppatru<<spzece<<' '<<str[4]<<' ';i=3;}
  83.             else
  84.                {g<<numar[s[4]]<<spzece<<' '<<str[4]<<' ';i=3;}}
  85.         else
  86.         {g<<numar[s[5]]<<str[5]<<' ';i--;}}}
  87.         else
  88.         i--;
  89.  
  90.  
  91.    if(i==4)
  92.      if(s[i]==1 && n==4)
  93.        {g<<"o mie"<<' ';i--;}
  94.       else
  95.          if(s[4]==0)
  96.           {strcpy(str[4],"de mii ");g<<numar[s[4]]<<' '<<str[4]<<' ';i--;}
  97.           else
  98.       {g<<numar[s[4]]<<' '<<str[4]<<' ';i--;}
  99.     if(i==3 && s[3]!=0)
  100.       {if(s[i]==1)
  101.       {g<<"o suta"<<' ';i--;}
  102.       else
  103.       {g<<numar[s[i]]<<' '<<str[i]<<' ';i--;}}
  104.     if(i==2 && s[2]!=0)
  105.      {if(s[2]==6)
  106.         {g<<spsase<<str[2]<<' ';i--;}
  107.           else
  108.             if(s[2]==1)
  109.               {if(s[1]==6)
  110.             {g<<spsase<<spzece;i=0;}
  111.             else
  112.             if(s[1]==4)
  113.             {g<<sppatru<<spzece;i=0;}
  114.               else
  115.             {g<<numar[s[1]]<<spzece;i=0;}}
  116.         else
  117.         {g<<numar[s[2]]<<str[2]<<' ';i--;}}
  118.         else
  119.         i--;
  120.    if(i==1)
  121.      if(s[1]==2)
  122.      g<<"doi";
  123.      else
  124.      g<<numar[s[1]];
  125. }
  126. int main()
  127. {
  128.     creeaza();
  129.     ver();
  130.     prelucreaza();
  131. }


new_luca

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define out(mesaj) strcat(string,#mesaj" ")
  4.  
  5. void functie(int x,char string[],int y)
  6. {    
  7.     int sute, zeci, unitati;
  8.     sute = x / 100;
  9.    
  10.     if(sute)
  11.     {
  12.         switch (sute)
  13.         {
  14.             case 1 : out(o suta);break;
  15.             case 2 : out(doua sute);break;
  16.             case 3 : out(trei sute);break;
  17.             case 4 : out(patru sute);break;
  18.             case 5 : out(cinci sute);break;
  19.             case 6 : out(sase sute);break;
  20.             case 7 : out(sapte sute);break;
  21.             case 8 : out(opt sute);break;
  22.             case 9 : out(noua sute);break;
  23.         }
  24.     }
  25.     zeci = (x % 100) / 10;
  26.     unitati = x % 10;
  27.  
  28.     if(zeci)
  29.     {
  30.         switch (zeci)
  31.         {
  32.             case 1 :
  33.                 switch (unitati)
  34.                 {
  35.                     case 0 : out(zece);break;
  36.                     case 1 : out(unsprezece);break;
  37.                     case 2 : out(doisprezece);break;
  38.                     case 3 : out(treisprezece);break;
  39.                     case 4 : out(paisprezece);break;
  40.                     case 5 : out(cincisprezece);break;
  41.                     case 6 : out(saisprezece);break;
  42.                     case 7 : out(saptesprezece);break;
  43.                     case 8 : out(optsprezece);break;
  44.                     case 9 : out(nouasprezece);break;
  45.                 }break;
  46.             case 2 : out(douazeci);break;
  47.             case 3 : out(treizeci);break;
  48.             case 4 : out(patruzeci);break;
  49.             case 5 : out(cincizeci);break;
  50.             case 6 : out(saizeci);break;
  51.             case 7 : out(saptezeci);break;
  52.             case 8 : out(optzeci);break;
  53.             case 9 : out(nouazeci);break;
  54.         }
  55.     }
  56.    
  57.     if(unitati && zeci != 1)
  58.     {
  59.         if(zeci)out(si);
  60.         switch (unitati)
  61.         {
  62.             case 1 : out(unu);break;
  63.             case 2 :
  64.                 if(y < 1000)out(doi);
  65.                 else out(doua );break;
  66.             case 3 : out(trei);break;
  67.             case 4 : out(patru);break;
  68.             case 5 : out(cinci);break;
  69.             case 6 : out(sase);break;
  70.             case 7 : out(sapte);break;
  71.             case 8 : out(opt);break;
  72.             case 9 : out(noua);break;
  73.         }
  74.     }
  75. }
  76.  
  77. int main(void)
  78. {
  79.     long nr, rest;
  80.     char string[70] = {0};
  81.    
  82.     freopen("bitcell14.in", "r", stdin);
  83.     freopen("bitcell14.out", "w", stdout);
  84.    
  85.     if(scanf("%d", &nr) != EOF)
  86.     {
  87.         if(nr >= 500000 || nr <= 0)
  88.         {
  89.             if(nr == 0)puts("zero");
  90.             else if(nr == 500000)puts("cinci sute de mii");
  91.             else puts("Numarul nu apartine intervalului inchis [0,500000]!");
  92.             return 0;
  93.         }
  94.        
  95.         if(nr >= 1000)
  96.         {
  97.             rest = nr / 1000;
  98.             if(rest == 1)out(o mie);
  99.             else
  100.             {
  101.                 functie(rest, string, nr);
  102.                 if(rest % 100 < 20 && rest % 100 > 0)out(mii);
  103.                 else out(de mii);
  104.             }
  105.         }
  106.         nr = nr % 1000;
  107.        
  108.         if(nr >= 1)functie(nr,string,nr);
  109.            
  110.         puts(string);
  111.     }
  112.  
  113.     return 0;
  114. }


DarkByte

  1. {$APPTYPE CONSOLE}
  2.  
  3. uses
  4.   Classes, SysUtils;
  5.  
  6. const
  7.   rank: array [1 .. 3] of String =
  8.     ('zeci', 'sute', 'mii');
  9.  
  10.   cifre : array [0 .. 19] of String =
  11.     ('', 'unu', 'doi', 'trei', 'patru', 'cinci', 'sase', 'sapte', 'opt',
  12.      'noua', 'zece', 'unsprezece', 'doisprezece', 'treisprezece',
  13.      'paisprezece', 'cincisprezece', 'saisprezece', 'saptesprezece',
  14.      'optsprezece', 'nouasprezece');
  15.   cifre2: array [1 .. 9] of String =
  16.     ('o', 'doua', 'trei', 'patru', 'cinci', 'sai', 'sapte', 'opt', 'noua');
  17.  
  18. function NumberToString(aNumber: Integer): String;
  19. var
  20.   sNumber: String;
  21.   c: Char;
  22.   lIndex, len: Integer;
  23. begin
  24.   if (aNumber < 0) or (aNumber > 500000) then
  25.     begin
  26.       Result := 'Oops, you did it (again ?)';
  27.       Exit;
  28.     end;
  29.  
  30.   if (aNumber = 0) then
  31.     begin
  32.       Result := 'zero';
  33.       Exit;
  34.     end;
  35.  
  36.   Result := '';
  37.   sNumber := IntToStr(aNumber);
  38.   len := Length(sNumber);
  39.   for lIndex := 1 to len div 2 do
  40.     begin
  41.       c := sNumber[lIndex];
  42.       sNumber[lIndex] := sNumber[len - lIndex + 1];
  43.       sNumber[len - lIndex + 1] := c;
  44.     end;
  45.  
  46.   lIndex := len;
  47.   while (lIndex > 0) do
  48.     begin
  49.       case lIndex of
  50.         3, 6:
  51.           begin
  52.             if (sNumber[lIndex] <> '0')
  53.               then
  54.                 if (sNumber[lIndex] <> '6')
  55.                   then Result := Result + cifre2[StrToInt(sNumber[lIndex])] + ' ' + rank[2] + ' '
  56.                   else Result := Result + cifre[StrToInt(sNumber[lIndex])] + ' ' + rank[2] + ' ';
  57.           end;
  58.         2, 5:
  59.           begin
  60.             case sNumber[lIndex] of
  61.               '0', '1':
  62.                 begin
  63.                   if ((sNumber[lIndex] + sNumber[lIndex - 1]) <> '00') then
  64.                     begin
  65.                       Result := Result + cifre[StrToInt(sNumber[lIndex] + sNumber[lIndex - 1])] + ' ';
  66.                       if (lIndex = 5) then
  67.                         Result := Result + 'mii ';
  68.                       Dec(lIndex);
  69.                     end;
  70.                 end;
  71.               else Result := Result + cifre2[StrToInt(sNumber[lIndex])] + rank[1] + ' ';
  72.             end;
  73.           end;
  74.         1, 4:
  75.           begin
  76.             if (sNumber[lIndex + 1] > '1') and (sNumber[lIndex] <> '0')
  77.               then Result := Result + 'si ' + cifre[StrToInt(sNumber[lIndex])] + ' '
  78.               else Result := Result + cifre[StrToInt(sNumber[lIndex])] + ' ';
  79.  
  80.             if (len >= 4) and (lIndex = 4) then
  81.               begin
  82.                 if (((len > 4) and (StrToInt(sNumber[5]) <= 1)) and (sNumber[5] + sNumber[4] <> '00')) or (len = 4)
  83.                   then Result := Result + 'mii '
  84.                   else Result := Result + 'de mii ';
  85.               end;
  86.           end;
  87.       end;
  88.  
  89.       Dec(lIndex);
  90.     end;
  91.   Result := StringReplace(Result, '  ', ' ', [rfReplaceAll]);
  92. end;
  93.  
  94. var
  95.   inputFile, outputFile: TStringList;
  96.   i, someNumber: Integer;
  97.  
  98. begin
  99.   inputFile := TStringList.Create;
  100.   inputFile.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'bitcell14.in');
  101.  
  102.   outputFile := TStringList.Create;
  103.   for i := 0 to inputFile.Count - 1 do
  104.     begin
  105.       someNumber := StrToIntDef(inputFile[i], -1);
  106.       outputFile.Add(NumberToString(someNumber));
  107.     end;
  108.  
  109.   outputFile.SaveToFile(ExtractFilePath(ParamStr(0)) + 'bitcell14.out');
  110. end.


cata45

  1.  
  2. #include<fstream>
  3. #include<cmath>
  4. using namespace std;
  5. #define IN "bitcell14.in"
  6. #define OUT "bitcell14.out"
  7. fstream f(IN, ios::in), g(OUT, ios::out);
  8. unsigned long long i, j, k, n, level, total_levels;
  9. char x[35];
  10. void Compute(long long u, long long z, long long s, long long level)
  11. {
  12.     if(s>0 && z>0)
  13.     {
  14.         if(s==1) g<<"o suta ";
  15.         if(s==2) g<<"doua sute ";
  16.         if(s==3) g<<"trei sute ";
  17.         if(s==4) g<<"patru sute ";
  18.         if(s==5) g<<"cinci sute ";
  19.         if(s==6) g<<"sase sute ";
  20.         if(s==7) g<<"sapte sute ";
  21.         if(s==8) g<<"opt sute ";
  22.         if(s==9) g<<"noua sute ";
  23.         if(z==1)
  24.         {
  25.             if(u==0) g<<"zece ";
  26.             if(u==1) g<<"unsprezece ";
  27.             if(u==2 && (level==2 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"douasprezece ";
  28.             if(u==2 && level==1) g<<"doisprezece ";
  29.             if(u==3) g<<"treisprezece ";
  30.             if(u==4) g<<"paisprezece ";
  31.             if(u==5) g<<"cincisprezece ";
  32.             if(u==6) g<<"saisprezece ";
  33.             if(u==7) g<<"saptesprezece ";
  34.             if(u==8) g<<"optsprezece ";
  35.             if(u==9) g<<"nouasprezece ";
  36.             if(level==2) g<<"mii ";
  37.             if(level==3) g<<"milioane ";
  38.             if(level==4) g<<"miliarde ";
  39.             if(level==5) g<<"bilioane ";
  40.             if(level==6) g<<"biliarde ";
  41.             if(level==7) g<<"trilioane ";
  42.             if(level==8) g<<"triliarde ";
  43.             if(level==9) g<<"cvadralioane  ";
  44.             if(level==10) g<<"cvadraliarde ";
  45.         }
  46.         else
  47.         {
  48.             if(z==2) g<<"douazeci ";
  49.             if(z==3) g<<"treizeci ";
  50.             if(z==4) g<<"patruzeci ";
  51.             if(z==5) g<<"cincizeci ";
  52.             if(z==6) g<<"saizeci ";
  53.             if(z==7) g<<"saptezeci ";
  54.             if(z==8) g<<"optzeci ";
  55.             if(z==9) g<<"nouazeci ";
  56.             if(u!=0)
  57.             {
  58.                 g<<"si ";
  59.                 if(u==1 && level==2) g<<"una ";
  60.                 if(u==1 && (level==1 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"unu ";
  61.                 if(u==2 && (level==2 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"doua ";
  62.                 if(u==2 && level==1) g<<"doi ";
  63.                 if(u==3) g<<"trei ";
  64.                 if(u==4) g<<"patru ";
  65.                 if(u==5) g<<"cinci ";
  66.                 if(u==6) g<<"sase ";
  67.                 if(u==7) g<<"sapte ";
  68.                 if(u==8) g<<"opt ";
  69.                 if(u==9) g<<"noua ";
  70.                 if(level==10) g<<"de cvadraliarde ";
  71.                 if(level==9) g<<"de cvadralioane  ";
  72.                 if(level==8) g<<"de triliarde ";
  73.                 if(level==7) g<<"de trilioane ";
  74.                 if(level==6) g<<"de biliarde ";
  75.                 if(level==5) g<<"de bilioane ";
  76.                 if(level==4) g<<"de miliarde ";
  77.                 if(level==3) g<<"de milioane ";
  78.                 if(level==2) g<<"de mii ";
  79.             }
  80.             else
  81.             {
  82.                 if(level==2) g<<"de mii ";
  83.                 if(level==3) g<<"de milioane ";
  84.                 if(level==4) g<<"de miliarde ";
  85.                 if(level==5) g<<"de bilioane ";
  86.                 if(level==6) g<<"de biliarde ";
  87.                 if(level==7) g<<"de trilioane ";
  88.                 if(level==8) g<<"de triliarde ";
  89.                 if(level==9) g<<"de cvadralioane  ";
  90.                 if(level==10) g<<"de cvadraliarde ";
  91.             }
  92.         }
  93.     }
  94.     else if(s>0)
  95.     {
  96.         if(s==1) g<<"o suta ";
  97.         if(s==2) g<<"doua sute ";
  98.         if(s==3) g<<"trei sute ";
  99.         if(s==4) g<<"patru sute ";
  100.         if(s==5) g<<"cinci sute ";
  101.         if(s==6) g<<"sase sute ";
  102.         if(s==7) g<<"sapte sute ";
  103.         if(s==8) g<<"opt sute ";
  104.         if(s==9) g<<"noua sute ";
  105.         if(u>0)
  106.         {
  107.             if(u==1 && level==2) g<<"una ";
  108.             if(u==1 && (level==1 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"unu ";
  109.             if(u==2 && (level==2 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"doua ";
  110.             if(u==2 && level==1) g<<"doi ";
  111.             if(u==3) g<<"trei ";
  112.             if(u==4) g<<"patru ";
  113.             if(u==5) g<<"cinci ";
  114.             if(u==6) g<<"sase ";
  115.             if(u==7) g<<"sapte ";
  116.             if(u==8) g<<"opt ";
  117.             if(u==9) g<<"noua ";
  118.             if(level==2) g<<"mii ";
  119.             if(level==3) g<<"milioane ";
  120.             if(level==4) g<<"miliarde ";
  121.             if(level==5) g<<"bilioane ";
  122.             if(level==6) g<<"biliarde ";
  123.             if(level==7) g<<"trilioane ";
  124.             if(level==8) g<<"triliarde ";
  125.             if(level==9) g<<"cvadralioane  ";
  126.             if(level==10) g<<"cvadraliarde ";
  127.         }
  128.         else
  129.         {
  130.             if(u==0)
  131.             {
  132.                 if(level==2) g<<"de mii ";
  133.                 if(level==3) g<<"de milioane ";
  134.                 if(level==4) g<<"de miliarde ";
  135.                 if(level==5) g<<"de bilioane ";
  136.                 if(level==6) g<<"de biliarde ";
  137.                 if(level==7) g<<"de trilioane ";
  138.                 if(level==8) g<<"de triliarde ";
  139.                 if(level==9) g<<"de cvadralioane  ";
  140.                 if(level==10) g<<"de cvadraliarde ";
  141.             }
  142.         }
  143.     }
  144.     else if(z>0)
  145.     {
  146.         if(z==1 && u>0)
  147.         {
  148.             if(u==0) g<<"zece ";
  149.             if(u==1) g<<"unsprezece ";
  150.             if(u==2 && (level==2 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"douasprezece ";
  151.             if(u==2 && level==1) g<<"doisprezece ";
  152.             if(u==3) g<<"treisprezece ";
  153.             if(u==4) g<<"paisprezece ";
  154.             if(u==5) g<<"cincisprezece ";
  155.             if(u==6) g<<"saisprezece ";
  156.             if(u==7) g<<"saptesprezece ";
  157.             if(u==8) g<<"optsprezece ";
  158.             if(u==9) g<<"nouasprezece ";
  159.             if(level==2) g<<"mii ";
  160.             if(level==3) g<<"milioane ";
  161.             if(level==4) g<<"miliarde ";
  162.             if(level==5) g<<"bilioane ";
  163.             if(level==6) g<<"biliarde ";
  164.             if(level==7) g<<"trilioane ";
  165.             if(level==8) g<<"triliarde ";
  166.             if(level==9) g<<"cvadralioane  ";
  167.             if(level==10) g<<"cvadraliarde ";
  168.         }
  169.         else if(z==1 && u==0)
  170.         {
  171.             g<<"zece ";
  172.             if(level==2) g<<"mii ";
  173.             if(level==3) g<<"milioane ";
  174.             if(level==4) g<<"miliarde ";
  175.             if(level==5) g<<"bilioane ";
  176.             if(level==6) g<<"biliarde ";
  177.             if(level==7) g<<"trilioane ";
  178.             if(level==8) g<<"triliarde ";
  179.             if(level==9) g<<"cvadralioane  ";
  180.             if(level==10) g<<"cvadraliarde ";
  181.         }
  182.         else if(z>1)
  183.         {
  184.             if(z==2) g<<"douazeci ";
  185.             if(z==3) g<<"treizeci ";
  186.             if(z==4) g<<"patruzeci ";
  187.             if(z==5) g<<"cincizeci ";
  188.             if(z==6) g<<"saizeci ";
  189.             if(z==7) g<<"saptezeci ";
  190.             if(z==8) g<<"optzeci ";
  191.             if(z==9) g<<"nouazeci ";
  192.             if(u==0)
  193.             {
  194.                 if(level==2) g<<"de mii ";
  195.                 if(level==3) g<<"de milioane ";
  196.                 if(level==4) g<<"de miliarde ";
  197.                 if(level==5) g<<"de bilioane ";
  198.                 if(level==6) g<<"de biliarde ";
  199.                 if(level==7) g<<"de trilioane ";
  200.                 if(level==8) g<<"de triliarde ";
  201.                 if(level==9) g<<"de cvadralioane  ";
  202.                 if(level==10) g<<"de cvadraliarde ";
  203.             }
  204.             else if(u>0)
  205.             {
  206.                 g<<"si ";
  207.                 if(u==1 && level==2) g<<"una ";
  208.                 if(u==1 && (level==1 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"unu ";
  209.                 if(u==2 && (level==2 || level==3 || level==4 || level==5 || level==6 || level==7 || level==8 || level==9 || level==10)) g<<"doua ";
  210.                 if(u==2 && level==1) g<<"doi ";
  211.                 if(u==3) g<<"trei ";
  212.                 if(u==4) g<<"patru ";
  213.                 if(u==5) g<<"cinci ";
  214.                 if(u==6) g<<"sase ";
  215.                 if(u==7) g<<"sapte ";
  216.                 if(u==8) g<<"opt ";
  217.                 if(u==9) g<<"noua ";
  218.                 if(level==2) g<<"de mii ";
  219.                 if(level==3) g<<"de milioane ";
  220.                 if(level==4) g<<"de miliarde ";
  221.                 if(level==5) g<<"de bilioane ";
  222.                 if(level==6) g<<"de biliarde ";
  223.                 if(level==7) g<<"de trilioane ";
  224.                 if(level==8) g<<"de triliarde ";
  225.                 if(level==9) g<<"de cvadralioane  ";
  226.                 if(level==10) g<<"de cvadraliarde ";
  227.             }
  228.         }
  229.     }
  230.     else if(u>0)
  231.     {
  232.         if(level>4)
  233.         {
  234.             if(u==1)
  235.             {
  236.                 g<<"un ";
  237.                 if(level==5) g<<"bilion ";
  238.                 if(level==6) g<<"biliard ";
  239.                 if(level==7) g<<"trilion ";
  240.                 if(level==8) g<<"triliard ";
  241.                 if(level==9) g<<"cvadralion ";
  242.                 if(level==10) g<<"cvadraliard ";
  243.             }
  244.             if(u==2) g<<"doua ";
  245.             if(u==3) g<<"trei ";
  246.             if(u==4) g<<"patru ";
  247.             if(u==5) g<<"cinci ";
  248.             if(u==6) g<<"sase ";
  249.             if(u==7) g<<"sapte ";
  250.             if(u==8) g<<"opt ";
  251.             if(u==9) g<<"noua ";
  252.            
  253.             if(level==5) g<<"bilioane ";
  254.             if(level==6) g<<"biliarde ";
  255.             if(level==7) g<<"trilioane ";
  256.             if(level==8) g<<"triliarde ";
  257.             if(level==9) g<<"cvadralioane ";
  258.             if(level==10) g<<"cvadraliarde ";
  259.         }
  260.         else if(level==4)
  261.         {
  262.             if(u==1) g<<"un miliard ";
  263.             if(u==2) g<<"doua miliarde ";
  264.             if(u==3) g<<"trei miliarde ";
  265.             if(u==4) g<<"patru miliarde ";
  266.             if(u==5) g<<"cinci miliarde ";
  267.             if(u==6) g<<"sase miliarde ";
  268.             if(u==7) g<<"sapte miliarde ";
  269.             if(u==8) g<<"opt miliarde ";
  270.             if(u==9) g<<"noua miliarde ";
  271.         }
  272.         else if(level==3)
  273.         {
  274.             if(u==1) g<<"un milion ";
  275.             if(u==2) g<<"doua milioane ";
  276.             if(u==3) g<<"trei milioane ";
  277.             if(u==4) g<<"patru milioane ";
  278.             if(u==5) g<<"cinci milioane ";
  279.             if(u==6) g<<"sase milioane ";
  280.             if(u==7) g<<"sapte milioane ";
  281.             if(u==8) g<<"opt milioane ";
  282.             if(u==9) g<<"noua milioane ";
  283.         }
  284.         else if(level==2)
  285.         {
  286.             if(u==1) g<<"o mie ";
  287.             if(u==2) g<<"doua mii ";
  288.             if(u==3) g<<"trei mii ";
  289.             if(u==4) g<<"patru mii ";
  290.             if(u==5) g<<"cinci mii ";
  291.             if(u==6) g<<"sase mii ";
  292.             if(u==7) g<<"sapte mii ";
  293.             if(u==8) g<<"opt mii ";
  294.             if(u==9) g<<"noua mii ";
  295.         }
  296.         else if(level==1)
  297.         {
  298.             if(u==1) g<<"unu ";
  299.             if(u==2) g<<"doi ";
  300.             if(u==3) g<<"trei ";
  301.             if(u==4) g<<"patru ";
  302.             if(u==5) g<<"cinci ";
  303.             if(u==6) g<<"sase ";
  304.             if(u==7) g<<"sapte ";
  305.             if(u==8) g<<"opt ";
  306.             if(u==9) g<<"noua ";
  307.         }
  308.     }
  309. }
  310. int main()
  311. {
  312.  
  313.  
  314.     while(f.getline(x,35))
  315.     {
  316.         n=strlen(x);
  317.         if(n==1 && x[0]=='0')
  318.             g<<"zero ";
  319.         else
  320.         {
  321.             if(n%3==1 && n>3)
  322.             {
  323.                 for(i=n+1; i>=2; i--)
  324.                     x[i]=x[i-2];
  325.                 x[0]=0;
  326.                 x[1]=0;
  327.                 n=n+2;
  328.             }
  329.             else if(n%3==2 && n>3)
  330.             {
  331.                 for(i=n; i>=1; i--)
  332.                     x[i]=x[i-1];
  333.                 x[0]=0;
  334.                 n++;
  335.             }
  336.             else if(n<3 && 3%n==1)
  337.             {
  338.                 for(i=n; i>=1; i--)
  339.                     x[i]=x[i-1];
  340.                 x[0]=0;
  341.                 n++;
  342.             }
  343.             else if(n<3 && 3%n==0)
  344.             {
  345.                 for(i=n+1; i>=2; i--)
  346.                     x[i]=x[i-2];
  347.                 x[0]=0;
  348.                 x[1]=0;
  349.                 n=n+2;
  350.             }
  351.            
  352.             total_levels=n/3;
  353.             level=total_levels+1;
  354.             i=0; j=1; k=2;
  355.             while(1)
  356.             {
  357.                 level--;
  358.                 if(level==0)
  359.                     break;
  360.                 Compute(x[k]-48, x[j]-48, x[i]-48, level);
  361.                 i+=3; j+=3; k+=3;
  362.             }
  363.         }
  364.         g<<endl;
  365.     }
  366.     g.close();
  367.     return 0;
  368. }
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 140

Previous

Return to Concursuri de programare desktop

Who is online

Users browsing this forum: No registered users and 0 guests

cron