Informática, perguntado por nelsonvieirasantos, 7 meses atrás

Se os números de 1 a 5 fossem escritos em palavras: um, dois, três, quatro, cinco, então teríamos utilizado 2 + 4 + 4 + 6 + 5 = 21 letras no total. Se todos os números de 1 até 1000 fossem escritos em palavras, quantas letras nós teríamos utilizado?

Soluções para a tarefa

Respondido por thiagopadua
0

Resposta:

19682

Explicação:

Para fazer o algoritmo, você precisa estabelecer padrões para números que têm nomenclatura própria e fazer com que haja um loop que teste e armazene dentro de um contador o número de letras. Eu enviaria aqui, mas o código ficou grande demais.


douglas39510: pode me passar o codigo?
Respondido por k3np4ch1z4r4k1b4nk41
0

Resposta: 19672

Explicação:

#include <stdio.h>

int main(void) {

   int soma = 0;

   // Padrões

   /* Um vetor extra contento os caracteres dos números de 11 a 19 é criado, pois tais caracteres

      não apresentam um padrão. */

   /* onze = 4, doze = 4, treze = 5, quatorze = 8, quinze = 6, dezesseis = 9, dezessete = 9

      dezoito = 7, dezenove = 8 */

   int onze_dezenove[] = {4, 4, 5, 8, 6, 9, 9, 7, 8}; // Número de caracteres dos números de 11-19

   // um = 2, dois = 4, tres = 4, quatro = 6, cinco = 5, seis = 4, sete = 4, oito = 4, nove = 4

   int unidades[] = {2, 4, 4, 6, 5, 4, 4, 4, 4}; // Número de caracteres dos números de 1-9

   int e = 1; // Conectivo e

   

   /* dez = 3, vinte = 5, trinta = 6, quarenta = 8, cinquenta = 9, sessenta = 8

      setenta = 7 , oitenta = 7, noventa = 7 */

   int dezenas[] = {3, 5, 6, 8, 9, 8, 7, 7, 7}; // Número de caracteres dos números 10-90

   /* cento = 5, duzentos = 8, trezentos = 9, quatrocentos = 12, quinhentos = 10, seiscentos = 10

      setecentos = 10, oitocentos = 10, novecentos = 10 */

   int centenas[] = {5, 8, 9, 12, 10, 10, 10, 10, 10}; // Número de caracteres dos números 100(Cento)-900

   int cem = 3, mil = 3; // Cem e mil

   for (int c = 1, i = 0; c <= 100; c++, i++) { // i -> Índice | c -> Contador

       if (i == 10) // Zera índice

           i = 0;

       

       if (c <= 10)

           soma+=(c==10?dezenas[0]:unidades[i]);

       else if (c <= 20)

           soma+=(c==20?dezenas[1]:onze_dezenove[i]);

       else if (c <= 30)

           soma+=(c==30?dezenas[2]:dezenas[1]+e+unidades[i]);

       else if (c <= 40)

           soma+=(c==40?dezenas[3]:dezenas[2]+e+unidades[i]);

       else if (c <= 50)

           soma+=(c==50?dezenas[4]:dezenas[3]+e+unidades[i]);

       else if (c <= 60)

           soma+=(c==60?dezenas[5]:dezenas[4]+e+unidades[i]);

       else if (c <= 70)

           soma+=(c==70?dezenas[6]:dezenas[5]+e+unidades[i]);

       else if (c <= 80)

           soma+=(c==80?dezenas[7]:dezenas[6]+e+unidades[i]);

       else if (c <= 90)

           soma+=(c==90?dezenas[8]:dezenas[7]+e+unidades[i]);

       else if (c <= 100)

           soma+=(c==100?cem:dezenas[8]+e+unidades[i]); // 1041 caracteres

   }

   soma*=10; // Multiplica por 10

   soma-=cem*9; // Remove os 3 caracteres de 100 nove vezes, já que será usada apenas uma vez

   for (int i = 0; i <= 8; i++) {

       soma+=(centenas[i]+e)*99; // Adiciona as centenas com conectivo 'e' 99 vezes

       if (i > 0) // Adiciona as centenas sozinhas de 200 a 900

           soma+=centenas[i];

   }

   soma+=mil; // Soma mil

   printf("Soma dos caracteres dos números de 1 a 1000: | %d |", soma); // 19672

   return 0;

}

Perguntas interessantes