Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cstring>
#include <cctype>
#include "StanfordCPPLib/strlib.cpp"
#include "StanfordCPPLib/vector.h"
#include "StanfordCPPLib/stack.h"
#include "StanfordCPPLib/queue.h"
#include "StanfordCPPLib/map.h"
#define ARQUIVO "lista-de-palavras.txt"
using namespace std;
/ Prototipos de Funcoes /
void lerArquivoDeEntradaVetor(istream &arq, Vector<string>&linhas);
void lerArquivoDeEntradaPilha(istream &arq, Stack<string>&linhas);
void lerArquivoDeEntradaFila(istream &arq, Queue<string>&linhas);
void lerArquivoDeEntradaMap(istream &arq, Map<int,string>&linhas);
void pausa();
/ Programa Principal /
int main(){
short opcao;
long pos, tam;
ifstream arqEntrada;
Vector<string>linhasV;
Stack<string>linhasP;
Queue<string>linhasF;
Map<int,string>linhasM;
arqEntrada.open(ARQUIVO);
lerArquivoDeEntradaVetor(arqEntrada, linhasV);
arqEntrada.close();
arqEntrada.open(ARQUIVO);
//promptUserForFile(arqEntrada, "Arquivo de entrada(Pilha): ");
lerArquivoDeEntradaPilha(arqEntrada, linhasP);
arqEntrada.close();
arqEntrada.open(ARQUIVO);
//promptUserForFile(arqEntrada, "Arquivo de entrada(Fila): ");
lerArquivoDeEntradaFila(arqEntrada, linhasF);
arqEntrada.close();
arqEntrada.open(ARQUIVO);
//promptUserForFile(arqEntrada, "Arquivo de entrada(Map): ");
lerArquivoDeEntradaMap(arqEntrada, linhasM);
arqEntrada.close();
do {
cout << "<1 - Vetor >" << endl;
cout << "<2 - Pilha >" << endl;
cout << "<3 - Fila >" << endl;
cout << "<4 - Map >" << endl;
cout << "<9 - Sair >" << endl;
cout << "Qual estrutura deseja manipular: ";
cin >> opcao;
switch(opcao) {
case 1 : // Vetor
tam = linhasV.size();
cout << endl;
cout << "Posicao 110 : " << linhasV[110] << endl;
cout << "Ultimo : " << linhasV[tam-1] << endl;
cout << "Meio : " << linhasV[tam/2] << endl;
for(long i = 0; i < tam; i++){
if (equalsIgnoreCase("FUTEBOL", linhasV.get(i))) {
pos = i;
break;
}
if (startsWith(linhasV.get(i), 'M'))
linhasV.remove(i);
}
if(pos)
cout << "Palavra FUTEBOL encontrada na posicao " << pos << endl << endl;
else
cout << "Palavra FUTEBOL nao encontrada!" << endl << endl;
pausa();
tam = linhasV.size();
for(long i = 0; i < tam; i++)
cout << linhasV[i] << "\t";
cout << endl;
break;
case 2 : // Pilha
tam = linhasP.size();
for(long i = 0; i < tam; i++)
cout << linhasP.pop() << "\t";
cout << endl << endl;
break;
case 3 : // Fila
cout << "Tamanho da fila(antes): " << linhasF.size() << endl;
pausa();
tam = linhasF.size();
for (long i = 0; i < tam; i++)
cout << "Desenfileirando..." << linhasF.dequeue() << "\t";
cout << endl << "Tamanho da fila(depois): " << linhasF.size() << endl << endl;
break;
case 4 : // Map
cout << "Buscar qual chave? ";
cin >> pos;
if (pos < linhasM.size())
cout << endl << "Na posicao " << pos << " encontra-se a palavra '" << linhasM[pos] << "'." << endl << endl;
else
cout << endl << "Na posicao " << pos << " nao ha nenhuma palavra." << endl << endl;
break;
case 9 :
break;
default:
system("clear");
}
} while(opcao!=9);
return 0;
}
void pausa(){
char ch = ' ';
while (ch!='c' && ch!='C') {
cout << "Tecle 'c' para continuar... ";
cin >> ch;
}
}
void lerArquivoDeEntradaMap(istream &arq, Map<int,string> &linhas) {
string linha;
int i = 0;
while (getline(arq, linha)) {
linhas.put(++i,linha);
}
}
void lerArquivoDeEntradaFila(istream &arq, Queue<string> &linhas) {
string linha;
while (getline(arq, linha)) {
linhas.enqueue(linha);
}
}
void lerArquivoDeEntradaPilha(istream &arq, Stack<string> &linhas) {
string linha;
while (getline(arq, linha)) {
linhas.push(linha);
}
}
void lerArquivoDeEntradaVetor(istream &arq, Vector<string> &linhas) {
string linha;
while (getline(arq, linha)) {
linhas.add(linha);
}
}Carregando comentários...