String help

Asked

Viewed 312 times

0

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

Example: 73167176531330624999982251196744265742355349194934

Could someone help me explain some way to get these values from the string?

  • 1

    you can start by studying the functions to treat strings in C language, have you tried this? gives a look at the function strstr.

  • I have this article here http://www.br-c.org/doku.php?id=strstr, only which type will I get 5 values so strstr accepts the 5 separated by comma ? why it has to be pointer the result that we seek ?

1 answer

3


Hello, I did the program and it’s working perfectly, see if it fits 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 on this very forum! Thanks!

  • Vlw man, I’ll read a few times understand and maybe ha ha

Browser other questions tagged

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