Write number typed in full in JS

Asked

Viewed 1,822 times

0

I have a college job to do where you ask the user to enter a number between 0 and 999 and the algorithm must print the entered value in full. I was asking the teacher for help today and he told me to do it using string, where each number typed gets in position and then the program compares these values. The problem is I’m not getting it.

I made this code below only it is not printing the values correctly and is unfinished

var n = (prompt("Digite um número: "));
		
		var pos_c = parseInt(n[0]); //Centena
		var pos_d = parseInt(n[0]); // Dezenas
		var pos_u = parseInt(n[0]); //Unidade
		var pos_e = parseInt(n[1]); //Especiais

		var unidades=["Zero", "Um", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove"];
		var especiais=["Onze", "Doze", "Treze", "Catorze", "Quinze", "Dezeseis", "Dezsete", "Dezoito", "Deznove"]; 
		var dezenas=["Dez"," Vinte", "Trinta", "Quarenta", "Cinquenta", "Sessenta", "Setenta", "Oitenta", "Noventa"];
		var centenas=["Cem", "Duzentos", "Trezentos", "Quatrocentos", "Quinhetos", "Seiscentos","Setescentos","Oitocentos", "Novecentos"];

		/*Irá verificar o tamanho vetor e em seguida fará testes para descobrir a centena,dezena e unidade do número*/

		//Imprimir unidadades
		if(n.length === 1) {
			if (n[0]== '0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9') {
				document.write(unidades[pos_u]);
				}
			}

		else if(n.length === 2) {
			//Números entre 20 e 99
			if(n[0]=='2'||'3'||'4'||'5'||'6'||'7'||'8'||'9' && n[1]=='1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9') {
				document.write(dezenas[pos_d-1]+" e "+unidades[pos_u+1]);
			}

			//Dezenas
			else if ((n[0]=='1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9') && n[1]==="0") {
				document.write(dezenas[pos_d-1]);
			}
			
			//Imprimir Especiais
			else if (n[0]=='1' && n[1]=='0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9') {
				document.write(especiais[pos_e-1]);
			}


		}

Is there any other way to do this algorithm?

1 answer

2

var n = (prompt("Digite um número: "));

		var unidades=["Zero", "Um", "Dois", "Três", "Quatro", "Cinco", "Seis", "Sete", "Oito", "Nove"];
		var especiais=["Dez","Onze", "Doze", "Treze", "Catorze", "Quinze", "Dezeseis", "Dezsete", "Dezoito", "Deznove"]; 
		var dezenas=["Vinte", "Trinta", "Quarenta", "Cinquenta", "Sessenta", "Setenta", "Oitenta", "Noventa"];
		var centenas=["Cem", "Duzentos", "Trezentos", "Quatrocentos", "Quinhetos", "Seiscentos","Setescentos","Oitocentos", "Novecentos"];
		
		//Valores com 1 algarismo
		if(n.length === 1) {
			//Imprimir unidadades
			document.write(unidades[parseInt(n[0])]);
		}	

		//Valores com 2 algarismos
		else if(n.length === 2) {
			//Especiais
			if((n[0]=='1') && (n[1]=='0'||n[1]=='1'||n[1]=='2'||n[1]=='3'||n[1]=='4'||n[1]=='5'||n[1]=='6'||n[1]=='7'||n[1]=='8'||n[1]=='9')) {
				document.write(especiais[parseInt(n[1])]);
			}
			
			//Dezenas
			else if((n[0]=='2'||n[0]=='3'||n[0]=='4'||n[0]=='5'||n[0]=='6'||n[0]=='7'||n[0]=='8'||n[0]=='9') && n[1]=='0') {
				document.write(dezenas[parseInt(n[0]-2)]);
			}

			//Dezenas compostas
			else {
				document.write(dezenas[parseInt(n[0]-2)]+" e "+unidades[parseInt(n[1])]);
			}
		}

		//Valores com 3 algarimos
		else if (n.length === 3) {
			//Centenas inteiras
			if ((n[0]=='1'||n[0]=='2'||n[0]=='3'||n[0]=='4'||n[0]=='5'||n[0]=='6'||n[0]=='7'||n[0]=='8'||n[0]=='9') && (n[1]=='0' && n[2]=='0')) {
				document.write(centenas[parseInt(n[0]-1)])
			}

			//Centenas + números especiais
			else if ((n[0]=='2'||n[0]=='3'||n[0]=='4'||n[0]=='5'||n[0]=='6'||n[0]=='7'||n[0]=='8'||n[0]=='9') && (n[1]=='1') && ((n[2]=='1'||n[2]=='2'||n[2]=='3'||n[2]=='4'||n[2]=='5'||n[2]=='6'||n[2]=='7'||n[2]=='8'||n[2]=='9'))) {
				document.write(centenas[parseInt(n[0]-1)]+" e "+especiais[parseInt(n[2])])
			}

			//Centenas + Nº Compostos
			else if ((n[0]=='2'||n[0]=='3'||n[0]=='4'||n[0]=='5'||n[0]=='6'||n[0]=='7'||n[0]=='8'||n[0]=='9') && (n[1]!='1')) {
				document.write(centenas[parseInt(n[0]-1)]+" e "+dezenas[parseInt(n[1]-2)]+" e "+unidades[parseInt(n[2])]);
			}

			//Cento + Nº Especiais
			else if ((n[0]=='1') && (n[1]=='1') && (n[2]=='1'||n[2]=='2'||n[2]=='3'||n[2]=='4'||n[2]=='5'||n[2]=='6'||n[2]=='7'||n[2]=='8'||n[2]=='9')) {
				document.write("Cento e "+especiais[parseInt(n[2])])
			}

			//Cento + Nº Compostos
			else if ((n[0]=='1') && (n[1]!='1') && (n[2]!='0')) {
				document.write("Cento e "+dezenas[parseInt(n[1]-2)]+" e "+unidades[parseInt(n[2])]);
			}
		}

Problem solved, follow the code:

Browser other questions tagged

You are not signed in. Login or sign up in order to post.