Ir ao conteúdo

Posts recomendados

Postado
#include<stdio.h>
#define N 5
//Programa com função recursiva que receba números do usuário e permita somar os elementos de um vetor de inteiros.

int soma(int vet[], int tamanho){
    if(tamanho == 1){
    return vet [0];
  }else{
    return vet[tamanho - 1] + soma(vet, tamanho -1);
  }
}

int main(){
  printf("------SOMA DE VETORES-----\n");
  int resultado = soma(vet, N);
    for(int i = 0; i < 5; i++){
    printf("Informe %d/5 valor:", (i+1));
    scanf("%d", &vet[i]);
    }
  printf("Soma dos números %d \n", resultado);
  printf("-----------------FIM-----------------\n");
  return 0;
}

Meu problema é fazer o link entre a recursividade e o principal main. Gostaria que o programa recebesse do usuário 5 números e somasse em vetor!

Postado

@nigolino , então primeiro vêm as informações, só para depois processar e exibir o resultado.

 

#include<stdio.h>
#define N 5

//Programa com função recursiva que receba números do usuário e permita somar os elementos de um vetor de inteiros.

int soma (int vet [], int vet_tamanho)
{   if(1 == vet_tamanho)
    {       return vet [0];
    }
    else
    {       return vet [vet_tamanho-1]+soma(vet, vet_tamanho-1);
}   }

int main (void)
{   
/* BASE DE DADOS */
	int vet [N]= {0}; 

/* LEITURA DE INFORMAÇOES */
    printf("------SOMA DE VETORES-----\n");

    for(int i = 0; i < N; i++)
    {       printf ("Informe %d/%d valor:",(i+1),N);
            scanf ("%d",&vet [i]);
    }

/* PROCESSAMENTO */
    int resultado= soma (vet,N);
  
/* RELATORIO */
    printf ("Soma dos %d números %d \n",N,resultado);
    printf ("-----------------FIM-----------------\n");
 
    return 0;
}

 

Postado

Outra possível solução poderia ser assim:

#include <stdio.h>
#include <stdlib.h>

#define clear system("clear")

int somar(int vetor[], int atual, int final) {
    if(atual == final) {
        return vetor[atual];
    } else {
        return vetor[atual] + somar(vetor, ++atual, final);
    }
}

int main() {
    int tamanho = 0;

    clear;
    printf("Quantidade de elementos: ");
    scanf(" %i", &tamanho);

    int vetor[tamanho];

    clear;
    printf("--- Entrada de Dados --- \n");
    for (int i = 0; i < tamanho; i++) {
        printf("Valor [%i - %i]: ", (i + 1), tamanho);
        scanf(" %i", &vetor[i]);
    }

    clear;
    printf("--- Vetor --- \n");
    for (int i = 0; i < tamanho; i++) {
        printf("vetor[%i] = %i \n", i, vetor[i]);
    }

    printf("------------- \n");
    printf("Soma: %i \n", somar(vetor, 0, tamanho - 1));
    printf("------------- \n");
    return 0;
}

 

Postado

@AdrianoSiqueira , sim! Nesse caso que nos apresenta, a quantidade de elementos é flexível, as informações anteriores são limpas da janela principal sempre que perde relevância e se escolhe o intervalo [Inicial, Final] da somatória na função somar.

 

* Já li em alguns fóruns que o acesso na memória de pilha é 0.5x mais rápida que a de alocação, para aquela situação em que o número de elementos é definido em tempo de compilação. A VLA para mim é sempre um mistério, porém é muito prático.

 

# Nota

O limite de uma VLA é o limite de um objeto, ou seja, SIZE_MAX de bytes.

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!