Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Olivi

Arquivo em Vetor, Pilha, Fila e Map

Recommended Posts


#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);
}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é dúvida, partilhamento de código ou "encheção de linguiça"??

 

Se for partilhamento de código, portou no lugar errado.

 

OBS.: Utilize a tag CODE para postar códigos fontes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.