Help with string

0

Make a program that finds the set of 5 consecutive digits in the sequence of only numeric characters that manages the largest product, print this 5-digit set and the result of your product.

Example: 7316717653133062499998225119674426574742355349194934

Can anyone help me by explaining some way to get these values from the string?

    
asked by anonymous 17.10.2016 / 16:27

1 answer

3

Hello, I made the program and it works perfectly, see if it suits you:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    //Declara o vetor de char com todos os seus números
    char s[]="7316717653133062499998225119674426574742355349194934";
    char sequencia[5];//vetor usado para manipular a sequencia de 5 numeros
    //Declara outras variaveis
    int i;
    int j;
    int n1,n2,n3,n4,n5;
    int tamanho_string=sizeof(s);//capitura a quantidade de numero existentes
    int multiplicado=0;
    int multiplicado_max=0;
    //inicia o codigo
    printf("\n\tTodas sequencias testadas:\n\n");
    for(i=0;i<(tamanho_string-5);i++)
    {   
        // convertendo os char para inteiro utilizando a tabela ASCII
        // Basta diminuir o valor do caracter ascii referente ao numero
        // por 48 e o resultado é o próprio numero em formato int. 
        n1=s[i+0]-48;
        n2=s[i+1]-48;
        n3=s[i+2]-48;
        n4=s[i+3]-48;
        n5=s[i+4]-48;
        multiplicado=n1*n2*n3*n4*n5;
        //Da um print de cada sequencia e do resultado de sua multiplicação
        printf("\t%d X %d X %d X %d X %d = %d\n",n1,n2,n3,n4,n5,multiplicado);
        //testa se achou uma sequencia de produto maior
        if(multiplicado>multiplicado_max)
        {
            multiplicado_max=multiplicado;//recebe o novo produto maximo
            for(j=0;j<5;j++)
            {   
                sequencia[j]=s[i+j];//copia a sequencia de 5 numeros de maior produto
            }
            j=0;
        }
    }
    //Exibe o resultado
    printf("\n\tMaior Produto Sao dos Numeros:\n\n\t");
    for(j=0;j<5;j++)
    {
        printf("%c ",sequencia[j]);
    }
    printf(" = %d\n\n\t",multiplicado_max);
    system("PAUSE");
}

I hope that's it, any questions, just get in touch here in this very forum! Thanks!

    
19.10.2016 / 18:50