Created
February 10, 2012 21:16
-
-
Save felladrin/1792947 to your computer and use it in GitHub Desktop.
Contagem de letras e inversão de palavras de um texto
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
#include <sstream> | |
#include <fstream> | |
#include <vector> | |
#include <algorithm> | |
using namespace std; | |
unsigned int contaLetra(const string &txt, const char &letra) | |
{ | |
unsigned int qtd = 0; | |
string::size_type pos = txt.find(letra); | |
while(pos != string::npos) | |
{ | |
qtd++; | |
pos = txt.find(letra, pos+1); | |
} | |
return qtd; | |
} | |
unsigned int contaSequencia(const string &txt, const string &seq) | |
{ | |
unsigned int qtd = 0; | |
string::size_type pos = txt.find(seq); | |
while(pos != string::npos) | |
{ | |
qtd++; | |
pos = txt.find(seq, pos+1); | |
} | |
return qtd; | |
} | |
int main () | |
{ | |
string linha; | |
string biblia; | |
ifstream txt("biblia.txt"); | |
if (txt.is_open()) | |
{ | |
while (txt.good()) | |
{ | |
getline(txt, linha); | |
biblia.append(linha); | |
biblia.append("\n"); | |
} | |
txt.close(); | |
} | |
else | |
{ | |
cout << "Não foi possível abrir o arquivo biblia.txt. Verifique se ele está na mesma pasta deste programa."; | |
exit(1); | |
} | |
stringstream bibliaCopia(biblia); | |
transform(biblia.begin(), biblia.end(), biblia.begin(), ::tolower); | |
// Quantas ocorrências de cada letra existem no arquivo? | |
cout << "Quantas ocorrências de cada letra existem no arquivo?\n\n"; | |
string letra = "abcdefghijklmnopqrstuvwxyz"; | |
for (unsigned int i = 0; i < letra.size(); i++) | |
cout << letra[i] << " = " << contaLetra(biblia, letra[i]) << endl; | |
// Quantas vezes a sequência "eus" aparece no arquivo? | |
cout << "\nQuantas vezes a sequência \"eus\" aparece no arquivo?\n\n"; | |
cout << contaSequencia(biblia, "eus") << " vezes."; | |
// Quantas palavras terminam com as letras "s"? | |
cout << "\n\nQuantas palavras terminam com a letra \"s\"?\n\n"; | |
unsigned int quantoS = 0; | |
vector<string> s; | |
s.push_back("s "); | |
s.push_back("s,"); | |
s.push_back("s."); | |
s.push_back("s:"); | |
s.push_back("s!"); | |
s.push_back("s?"); | |
for (vector<string>::iterator it = s.begin(); it < s.end(); it++) | |
quantoS += contaSequencia(biblia, *it); | |
cout << quantoS << " palavras.\n\n"; | |
// Escreva toda a biblia.txt em um arquivo ailbib.txt, com todas as palavras invertidas. | |
string palavra; | |
ofstream saida; | |
saida.open("ailbib.txt"); | |
while (bibliaCopia >> palavra) | |
{ | |
reverse(palavra.begin(), palavra.end()); | |
saida << palavra << " "; | |
} | |
saida.close(); | |
cout << "Arquivo ailbib.txt, com todas as palavras invertidas, foi criado com sucesso."; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment