Fórum WebTuga

Tecnologia => Programação => Topic started by: Teotónio Ricardo on December 02, 2005, 01:05:47 PM

Title: [Pascal] Dizer o numero por extenso
Post by: Teotónio Ricardo on December 02, 2005, 01:05:47 PM
[Pascal] Dizer o numero por extenso

Aqui esta um programa em pascal que escreve os numeros até 9999 em extenso, uma pequena brincadeira que demorou algum tempo a fazer nas aulas de BP:

program extenso;

uses crt;



var  texto:string;

tamanho: integer;



begin

clrscr;

writeln (\\'..::]Programa produzido pelo cenourinha[::..\\');

writeln (\\' ..::]www.webtuga.com[::..   \\');

readkey;

clrscr;

writeln(\\' Introduza um numero para passar a extenso \\');

read(texto);

tamanho:=length(texto);



writeln(\\'Milhares: \\',texto[1]);

writeln(\\'Centenas: \\',texto[2]);

writeln(\\'Dezenas: \\',texto[3]);



writeln(\\'Unidades: \\',texto[4]);



readkey;



case texto[1] of

\\'1\\':write(\\'Mil\\');

\\'2\\':write(\\'Dois Mil\\');

\\'3\\':write(\\'Tres Mil\\');

\\'4\\':write(\\'Quatro Mil\\');

\\'5\\':write(\\'Cinco Mil\\');

\\'6\\':write(\\'Seis Mil\\');

\\'7\\':write(\\'Sete Mil\\');

\\'8\\':write(\\'Oito Mil\\');

\\'9\\':write(\\'Nove Mil\\');

end;



if (texto[3]=\\'0\\') and  (texto[4]=\\'0\\') then

write(\\' e Cem \\')

else



case texto[2] of



\\'1\\':write(\\' Cento e\\');

\\'2\\':write(\\' Duzentos e\\');

\\'3\\':write(\\' Trezentos e\\');

\\'4\\':write(\\' Quatrocentos e\\');

\\'5\\':write(\\' Quinhentos e\\');

\\'6\\':write(\\' Seiscentos e\\');

\\'7\\':write(\\' Setecentos e\\');

\\'8\\':write(\\' Oitocentos e\\');

\\'9\\':write(\\' Novecentos e\\');

end;

if texto[3]=\\'1\\' then

if texto[3]+texto[4]=\\'11\\' then

write(\\'onze\\');

if texto[3]+texto[4]=\\'12\\' then

write(\\'doze\\');

if texto[3]+texto[4]=\\'13\\' then

write(\\'treze\\');

if texto[3]+texto[4]=\\'14\\' then

write(\\'Catorze\\');

if texto[3]+texto[4]=\\'15\\' then

write(\\'Quinze\\');

if texto[3]+texto[4]=\\'16\\' then

write(\\'Dezasseis\\');

if texto[3]+texto[4]=\\'17\\' then

write(\\'dezasete\\');

if texto[3]+texto[4]=\\'18\\' then

write(\\'Dezoito\\');

if texto[3]+texto[4]=\\'19\\' then

write(\\'dezanove\\');





case texto[3] of

\\'1\\':write(\\' \\');

\\'2\\':write(\\' Vinte e\\');

\\'3\\':write(\\' Trinta e\\');

\\'4\\':write(\\' Quarenta e\\');

\\'5\\':write(\\' Cinquenta e\\');

\\'6\\':write(\\' Secenta e\\');

\\'7\\':write(\\' Setenta e\\');

\\'8\\':write(\\' Oitenta e\\');

\\'9\\':write(\\' Noventa e\\');

end;



if texto[3]<>\\'1\\' then

case texto[4] of

\\'1\\':write(\\' um \\');

\\'2\\':write(\\' dois \\');

\\'3\\':write(\\' tres \\');

\\'4\\':write(\\' quatro \\');

\\'5\\':write(\\' cinco \\');

\\'6\\':write(\\' seis \\');

\\'7\\':write(\\' sete \\');

\\'9\\':write(\\' Oito \\');

end;

readkey;

end.


Espero que gostem desta brincadeira, alguma duvida é só dizer
fiquem bem
Title: [Pascal] Dizer o numero por extenso
Post by: Dungee on December 14, 2005, 04:28:28 PM
Hohoho gostei disso  deve te cansado nao ??

eu progamo vB hehe dps eu ponho uma calculadora ake pro seis ve ;DD

fuiz

[]\\'s

faz tempo q num venho ake oO
Title: [Pascal] Dizer o numero por extenso
Post by: KTachyon on January 02, 2006, 06:10:31 PM
Aki está uma tradução para C++:

// Author: KhAoTiK TaChYoN



#include



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



int i, a;



std::cout << "Number to print: ";

std::cin >> i;



if (i == 0) {

std::cout << "Zero";

return 0;

}



a = i/1000;

i %= 1000;



switch (a) {

case 1: std::cout << "Mil ";

break;

case 2: std::cout << "Dois Mil ";

break;

case 3: std::cout << "Três Mil ";

break;

case 4: std::cout << "Quatro Mil ";

break;

case 5: std::cout << "Cinco Mil ";

break;

case 6: std::cout << "Seis Mil ";

break;

case 7: std::cout << "Sete Mil ";

break;

case 8: std::cout << "Oito Mil ";

break;

case 9: std::cout << "Nove Mil ";

break;

}



if (a != 0 && i % 100 == 0) {

a = i/100;

i %= 100;



switch (a) {

case 1: std::cout << "e Cem";

break;

case 2: std::cout << "e Duzentos";

break;

case 3: std::cout << "e Trezentos";

break;

case 4: std::cout << "e Quatrocentos";

break;

case 5: std::cout << "e Quinhentos";

break;

case 6: std::cout << "e Seiscentos";

break;

case 7: std::cout << "e Setecentos";

break;

case 8: std::cout << "e Oitocentos";

break;

case 9: std::cout << "e Novecentos";

break;

}

}



a = i/100;

i %= 100;



switch (a) {

case 1: std::cout << "Cento e ";

break;

case 2: std::cout << "Duzentos e ";

break;

case 3: std::cout << "Trezentos e ";

break;

case 4: std::cout << "Quatrocentos e ";

break;

case 5: std::cout << "Quinhentos e ";

break;

case 6: std::cout << "Seiscentos e ";

break;

case 7: std::cout << "Setecentos e ";

break;

case 8: std::cout << "Oitocentos e ";

break;

case 9: std::cout << "Novecentos e ";

break;

}



switch (i) {

case 11: std::cout << "Onze";

return 0;

case 12: std::cout << "Doze";

return 0;

case 13: std::cout << "Treze";

return 0;

case 14: std::cout << "Catorze";

return 0;

case 15: std::cout << "Quize";

return 0;

case 16: std::cout << "Desasseis";

return 0;

case 17: std::cout << "Desassete";

return 0;

case 18: std::cout << "Desoito";

return 0;

case 19: std::cout << "Desanove";

return 0;

}



a = i/10;

i %= 10;



if (i == 0) {

a = i/100;

i %= 100;



switch (a) {

case 1: std::cout << "Dez";

break;

case 2: std::cout << "Vinte";

break;

case 3: std::cout << "Trinta";

break;

case 4: std::cout << "Quarenta";

break;

case 5: std::cout << "Cinquenta ";

break;

case 6: std::cout << "Sessenta ";

break;

case 7: std::cout << "Setenta";

break;

case 8: std::cout << "Oitenta";

break;

case 9: std::cout << "Noventa";

break;

}

}



switch (a) {

case 2: std::cout << "Vinte e ";

break;

case 3: std::cout << "Trinta e ";

break;

case 4: std::cout << "Quarenta e ";

break;

case 5: std::cout << "Cinquenta e ";

break;

case 6: std::cout << "Sessenta e ";

break;

case 7: std::cout << "Setenta e ";

break;

case 8: std::cout << "Oitenta e ";

break;

case 9: std::cout << "Noventa e ";

break;

}



switch (i) {

case 1: std::cout << "Um";

break;

case 2: std::cout << "Dois";

break;

case 3: std::cout << "Três";

break;

case 4: std::cout << "Quatro";

break;

case 5: std::cout << "Cinco";

break;

case 6: std::cout << "Seis";

break;

case 7: std::cout << "Sete";

break;

case 8: std::cout << "Oito";

break;

case 9: std::cout << "Nove";

break;

}



return 0;

}
Title: [Pascal] Dizer o numero por extenso
Post by: Teotónio Ricardo on January 02, 2006, 06:23:43 PM
Porreiro, ainda não sei C++ mas tenho intensão de saber, se tiveres ai mais codigos e algoritmos, não exites, posta!

Ah e já agora bem vindo ao Forum!
Title: [Pascal] Dizer o numero por extenso
Post by: KTachyon on January 02, 2006, 06:38:56 PM
Tks. Eu vou colocando alguns algoritmos k axe interessantes.