Você está aqui: C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Arquivos e Diretórios

Como abrir um arquivo e contar quantas vezes uma palavra é encontrada em seu conteúdo usando C++ - Exercícios Resolvidos de C++

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

Dado um arquivo texto.txt com o seguinte conteúdo:

Gosto de programar em Java e também em C++.
Às vezes eu programo em Delphi e Python.
Mas Java, eita, Java é bom demais.
Escreva um programa C++ que pede para o usuário informar o local e nome deste arquivo e, em seguida, peça também uma palavra. Seu código deverá verificar quantas vezes a palavra é encontrada no conteúdo do arquivo, ou seja, a quantidade de ocorrências da palavra no arquivo informado.

Sua saída deverá ser parecida com:

Nome do arquivo: c:\estudos_c++\texto.txt
Palavra a ser pesquisada: Java
Foram encontradas 3 ocorrencias. 
Resposta/Solução:

Veja a resolução comentada deste exercício usando C++:

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

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

// função principal do programa
int main(int argc, char *argv[]){
  // variáveis usadas na resolução do problema
  ifstream arquivo;
  string nome_arquivo;
  int contador = 0;
  string linha, palavra;
  
  // vamos pedir para o usuário informar o nome do arquivo
  cout << "Informe o caminho e nome do arquivo: ";
  getline(cin, nome_arquivo);
  
  // agora abrimos o arquivo
  arquivo.open(nome_arquivo, ios::in);
  
  // vamos pedir a palavra a ser pesquisada no arquivo
  cout << "Informe a palavra a ser pesquisada: ";
  getline(cin, palavra);
  
  // percorremos as linhas do arquivo
  while(arquivo){
    // obtemos a linha atual
    arquivo >> linha;
	
    // tentamos encontrar a primeira e as próximas ocorrências
    // nessa linha   
    int indice = linha.find(palavra, 0); 
    while (indice != string::npos){
      // aumentamos a quantidade de ocorrências
      contador++;
      // e pesquisamos novamente de onde paramos
      indice = linha.find(palavra, indice + palavra.size());
    }
  }
    
  // mostramos o resultado
  cout << "Foram encontradas " << contador << " ocorrencias." << endl;  
    
  cout << "\n" << endl;
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}


Link para compartilhar na Internet ou com seus amigos:

C++ ::: Fundamentos da Linguagem ::: Tipos de Dados

Apostila C++ para iniciantes - Como usar o tipo de dados short ou short int da linguagem C++

Quantidade de visualizações: 13601 vezes
O tipo de dados short (também chamado de short int) da linguagem C++ é uma variação do tipo int e geralmente possui a metade da capacidade de armazenamento deste. Nós o usamos quando queremos representar números inteiros, ou seja, sem partes fracionárias, que não sejam grandes o suficiente para exigir variáveis do tipo int. Veja um trecho de código demonstrando seu uso (note que estes estudos foram feitos no Windows XP - 32 bits - usando Dev-C++):

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

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  // declara uma variável do tipo short
  short idade = 45;

  cout << "A idade é: " << idade << "\n\n";

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Veja que a maioria dos compiladores C++ não faz distinção entre os tipos short e short int. A capacidade de armazenamento do tipo short depende da arquitetura na qual o programa está sendo executado. Uma forma muito comum de descobrir esta capacidade é usar os símbolos SHRT_MIN e SHRT_MAX, definidos no header climits (limits.h). Veja:

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

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  cout << "Valor mínimo: " << SHRT_MIN << "\n";
  cout << "Valor máximo: " << SHRT_MAX << "\n\n";

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executar este programa você terá um resultado parecido com:

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

Valor mínimo: -32768
Valor máximo: 32767

Veja que o tipo short aceita valores positivos e negativos. Tudo que você tem a fazer é tomar todo o cuidado para que os valores atribuidos a variáveis deste tipo não ultrapassem a faixa permitida. Veja um trecho de código que provoca o que chamamos de transbordamento (overflow):

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

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  short soma = SHRT_MAX + 2;

  cout << "Resultado: " << soma << "\n";

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}	

Este programa exibirá o seguinte resultado:

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

Resultado: -32767

Note que este não é o resultado esperado, visto que SHRT_MAX + 2 deveria retornar:

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

32767 + 2 = 32769

Porém, como o valor máximo que pode ser armazenado em um short é 32767, o procedimento adotado pelo compilador foi tornar o número negativo e subtrair 1. É claro que, se você testar este código em arquiteturas diferentes o resultado poderá ser diferente do exemplificado aqui.

Em termos de bytes, é comum o tipo short ser armazenado em 2 bytes, o que resulta em 16 bits (um byte é formado por 8 bits, lembra?). Veja um trecho de código que mostra como usar o operador sizeof() para determinar a quantidade de bytes necessários para armazenar um variável do tipo short:

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

#include <iostream>

using namespace std;

int main(int argc, char *argv[]){
  cout << "Tamanho de um short: " << sizeof(short)
    << " bytes\n\n";

  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

O resultado da execução deste código será algo como:

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

Tamanho de um short: 2 bytes



C++ ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como retornar o tamanho de um array em C++ - Curso de C++ - Vetores e matrizes em C++

Quantidade de visualizações: 10933 vezes
Muitas vezes precisamos saber a quantidade de elementos em vetor (array). Em C++, isso pode ser feito com o uso da função sizeof(). O que fazemos é obter a quantidade de bytes contidos em todo o vetor e depois dividimos pela quantidade de bytes no primeiro elemento. Veja o código:

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

#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  // declara e inicializa um array de 5 inteiros
  int valores[5] = {43, 12, 8, 4, 102};
 
  // obtém a quantidade de elementos na matriz
  int quant = sizeof(valores) / sizeof(valores[0]);
 
  // exibe o resultado
  cout << "Quant. elementos : " << quant << endl;
 
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

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

Quant. elementos : 5


C++ ::: Dicas & Truques ::: Input e Output (Entrada e Saída)

Como ler entrada do usuário em C++ usando a função global getline() da classe string

Quantidade de visualizações: 12610 vezes
Nesta dica mostrarei como é possível usar a função global getline() da classe string da linguagem C++ para ler a entrada do usuário.

Veja a assinatura que usaremos:

istream& getline(istream& is, string& str);


Esta função extrai os caracteres do fluxo de entrada (is) e os armazena na string fornecida como argumento (str). Veja o código completo:

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

#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
  string nome;
  cout << "Por favor, informe o seu nome: ";
  getline(cin, nome);
  cout << "Seu nome é: " << nome << "\n\n"; 
      
  system("PAUSE"); // pausa o programa
  return 0;
}

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

Por favor, informe o seu nome: Osmar J. Silva
Seu nome é: Osmar J. Silva

Pressione qualquer tecla para continuar...


Desafios, 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á 25 usuários muito felizes estudando em nosso site.