Você está aqui: C ::: Dicas & Truques ::: Recursão (Recursividade)

Como somar os elementos de um vetor em C usando uma função recursiva - Linguagem C para iniciantes

Quantidade de visualizações: 5311 vezes
Em algumas ocasiões ficamos imaginando o que pode ser feito com os métodos e funções recursivas. A resposta é: praticamente tudo.

Veja abaixo um programa C completo no qual eu mostro como escrever uma função recursiva que recebe um array e mostra a soma de seus elementos (lembre-se de que um array é o mesmo que vetor, ou seja, uma matriz de uma linha e várias colunas):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

// função recursiva para somar todos os elementos de um array
int somar(int indice, int tamanho, int vetor[]){
  // o caso base...hora de encerrar a recursividade
  if(indice == (tamanho - 1)){
    return vetor[indice];
  }
  else{
    // ainda não é o caso base? vamos fazer uma nova chamada à função somar()
    return vetor[indice] + somar(indice + 1, 10, vetor);
  }
}

// função principal do programa
int main(int argc, char *argv[]){
  // vamos declarar um array de 10 elementos
  int valores[10];
  int i, soma;

  // vamos pedir ao usuário para informar os valores para o vetor
  for(i = 0; i < 10; i++){
    printf("Informe o valor do elemento %d: ", i);
    scanf("%d", &valores[i]); 
  }

  // vamos efetuar uma chamada à função recursiva somar();
  // nota que estamos passando o índice inicial, o tamanho do
  // array e o array em si
  soma = somar(0, 10, valores);
  printf("\nA soma dos elementos è: %d", soma);
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executarmos este código C nós teremos o seguinte resultado:

Informe o valor do elemento 0: 7
Informe o valor do elemento 1: 3
Informe o valor do elemento 2: 1
Informe o valor do elemento 3: 3
Informe o valor do elemento 4: 8
Informe o valor do elemento 5: 9
Informe o valor do elemento 6: 4
Informe o valor do elemento 7: 3
Informe o valor do elemento 8: 2
Informe o valor do elemento 9: 6

A soma dos elementos é: 46

Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Arquivos e Diretórios

Como testar se um arquivo existe usando a linguagem C

Quantidade de visualizações: 14199 vezes
Muitas vezes precisamos saber se um determinado arquivo existe antes de efetuarmos alguma operação. O trecho de código abaixo mostra como você pode implementar uma função file_exists() em C que pode ser usada em seus programas. O segredo aqui é tentar abrir o arquivo passado como argumento para a função. Se o arquivo for aberto com sucesso, sabemos que ele existe e a função retorna o valor 1 (true), do contrário retorna 0 (false):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

/*
  Implementação de uma função file_exists() em C. Se
  o arquivo existir o valor 1 (true) será retornado. Caso
  contrário a função retornará 0 (false).
*/
int file_exists(const char *filename)
{
  FILE *arquivo;

  if(arquivo = fopen(filename, "r"))
  {
    fclose(arquivo);
    return 1;
  }
  return 0;
}

int main(int argc, char *argv[])
{
  // testa se o arquivo existe
  if(file_exists("c:\\testes.txt")){
    printf("O arquivo existe no local especificado.\n");
  }
  else
    printf("O arquivo NAO existe no local especificado.\n");

  printf("\n\n");
  system("PAUSE");
  return 0;
}



C ::: Dicas & Truques ::: Rotinas de Conversão

Como converter uma string em um valor inteiro usando a função atoi() da linguagem C

Quantidade de visualizações: 46629 vezes
Em algumas situações, pode ser necessário converter uma string em um valor numérico inteiro. Para isso podemos usar a função atoi().

Esta função recebe uma matriz de caracteres e tenta transformá-la em um valor inteiro. Se a conversão não for possível, o valor 0 é retornado. Os sinais "+" e "-" são válidos na string a ser convertida. Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

int main(int argc, char *argv[])
{
  // valor inteiro em forma de string
  char valor_str[] = "10";

  // A linha abaixo causa um comportamento estranho
  //int res = 40 + valor_str;

  // temos que converter a string em um valor inteiro válido
  int res = 40 + atoi(valor_str);

  printf("O resultado e: %d", res);

  puts("\n");
  system("pause");
  return 0;
}



C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercício Resolvido de C - Usando um laço for para percorrer os elementos de uma matriz e exibí-los na ordem original e invertida

Quantidade de visualizações: 10266 vezes
Pergunta/Tarefa:

Considere a seguinte matriz de inteiros:

// uma matriz de inteiros contendo sete elementos
int valores[] = {6, 9, 12, 34, 83, 20, 17};
Escreva um programa C que usa um laço for para percorrer todos os elementos desta matriz duas vezes e exibí-los na ordem original e invertidos (somente na exibição, ou seja, não é necessário alterar a ordem dos elementos na matriz).

Seu programa deverá exibir a seguinte saída:

Ordem original:

6 9 12 34 83 20 17 

Ordem inversa:

17 20 83 34 12 9 6
Resposta/Solução:

Veja abaixo a resolução completa para esta tarefa:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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

int main(int argc, char *argv[])
{
  // uma matriz de inteiros contendo sete elementos
  int valores[] = {6, 9, 12, 34, 83, 20, 17};
  int tam_matriz = 7;
  int i;
    
  // primeiro vamos exibir os valores da matriz na ordem original
  printf("Ordem original:\n");

  for(i = 0; i < tam_matriz; i++){
    printf("%d  ", valores[i]);
  }

  // agora vamos exibir na ordem inversa
  printf("\n\nOrdem inversa:\n");

  for(i = tam_matriz - 1; i >= 0; i--){
    printf("%d  ", valores[i]);
  }
  
  printf("\n\n");
  system("PAUSE");	
  return 0;
}



Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 82 usuários muito felizes estudando em nosso site.