Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Clenilson Almeida

Somar os elementos de cada vetor(3) e retornar a soma do maior vetor.

Recommended Posts

/*Meus caros sou novato e estou com dúvida nessa assunto, funções recursivas. Eu consegui fazer a soma de cada um dos 3 vetores A, B, C mas não consegui de jeito nenhum criar uma outra função recursiva que retorna o vetor com maior somatório. Até onde consegui fazer está certo, tranquilo, agora preciso de uns toques ou que alguém me ajude a fazer uma outra função que use essas funções que fiz A, B, C e compare e retorne o maior vetor, mas é só o resultado, não é para imprimir os elementos do maior vetor. Beleza... =) */




#include <stdio.h>

#include <stdlib.h>

#include <conio.h>


int somatorioA(int A[], int i){

if (i >= 2){

return 0;

}else{

return A + somatorioA(A, i+1);

}

}

int somatorioB(int B[], int i){

if (i >= 2){

return 0;

}else{

return B + somatorioB(B, i+1);

}

}

int somatorioC(int C[], int i){

if (i >= 2){

return 0;

}else{

return C + somatorioC(C, i+1);

}

}


int main(void)

{

int i, A[2], B[2], C[2], somaA=0, somaB=0, somaC=0;


for (i = 0; i < 2; i++){

printf ("\nA[%d]: ", i+1);

scanf ("%d", &A);

}


printf("\n");


for (i = 0; i < 2; i++){

printf ("\nB[%d]: ", i+1);

scanf ("%d", &B);

}


printf("\n");


for (i = 0; i < 2; i++){

printf ("\nC[%d]: ", i+1);

scanf ("%d", &C);

}


somaA = somatorioA(A, 0);

somaB = somatorioB(B, 0);

somaC = somatorioC(C, 0);


printf ("\n\nSOMATORIO DE A: %d", somaA);

printf ("\n\nSOMATORIO DE B: %d", somaB);

printf ("\n\nSOMATORIO DE C: %d\n\n\n", somaC);


getch();

return (0);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra fazer isso, teria de armazenar os resultados da soma em vetor.

 

 
int retornaMaiorValor(int somas[], int i)
{
    int maior = 0;
 
    if( i < 3 )
        maior = retornaMaiorValor(somas, i+1);
 
    if( maior > somas[i] ) // Se o retorno for maior que o valor da posição atual "i", retorna o maior
        return maior;
 
    return somas[i];
}
 
int main(void)
{
    int i, A[2], B[2], C[2], somas[3], maior;
 
    [...]
 
    somas[0] = somatorioA(A, 0);
    somas[1] = somatorioB(B, 0);
    somas[2] = somatorioC(C, 0);
 
    printf ("\n\nSOMATORIO DE A: %d", somas[0]);
    printf ("\n\nSOMATORIO DE B: %d", somas[1]);
    printf ("\n\nSOMATORIO DE C: %d\n\n\n", somas[2]);
 
    maior = retornaMaiorValor( somas, 0 );
    printf("Maior soma: %d\n", maior);
 
    getch();
    return (0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí "ScreenBlack" tenho prova na próxima terça-feira e essa questão que você me ajudou a fazer é a segunda de 15 questões. A minha professora disse que quem fizesse essa lista tinha 100% de chances de tirar 10 pontos na prova! Pois garanto que você me ajudou muito, mas muito mesmo. Muito obrigado(a). Com essa questão garanto que talvez termine a minha lista hoje mesmo, vou passar a noite aqui fazendo o restante. Mais uma vez obrigado e continue assim, sucesso pra tu... :yes:

 

Mas só mais uma pergunta, como você deixou o seu código com a cores, "fonte", do Code::Blocks?("Já li as regras do site mas não entendi") Porque ficou mais legível, pois sou novato aqui. Ainda estou por fora dessas paradas aí. Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa entender o que realmente acontece na rotina recursiva, pra poder tratá-la corretamente.

 

Sobre a formatação e cores do código, use as tags [.code] e [./code] (sem os pontos). Entre elas, você cola o código. O que estiver aí dentro, terá tratamento de cor para as linguagens.

 

Mais informações, no tópico que comenta sobre isso: http://forum.imasters.com.br/topic/294106-aviso-leia-antes-de-postar/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.