Académique Documents
Professionnel Documents
Culture Documents
Vetores
Namespaces
Biblioteca fstream
VETORES
Usando Vectors
A classe vector define um tipo de container provido pela STL.
Ele atende a descrio geral de um array dinmico - uma array
que pode crescer e diminuir de tamanho conforme
necessrio.
Alm disso, vetores definem funes membro para manipular
seus elementos.
Essa matriz pode precisar ser realocada para aumentar de
tamanho quando novos elementos so inseridos, o que implica
alocar uma nova matriz e mover todos os elementos para ela.
Esta uma tarefa relativamente dispendiosa em termos de tempo
de processamento e, portanto, os vetores no realocam todas as
vezes que um elemento adicionado ao continer.
#include <iostream>
#include <vector>
#include <string>
Usando vetores
using namespace std;
return 0;
}
Output do programa
Note que o vetor inventario1 foi inicializado com 10 espaos vxios,
o vetor inventrio2 foi inicializado com 10 strings nada e o
vetor inventrio3 foi inicializado como uma cpia do vetor
minhasCoisas.
Vetores x Listas
int main ()
{
/*
Como nao adicionamos:
using namespace std
Devemos escrever std::cout e std::endl
*/
std::cout<< valor_produto <<std::endl;
return 0;
}
Conflito de nomes
int main ()
{
{
using namespace first;
std::cout<<second::um_numero<<std::endl; //deve imprimir o valor 10
std::cout << um_numero << std::endl; // deve imprimir o valor 5
} O using pode introduzir
{ somente uma funo ou
using first::um_numero;
std::cout<<um_numero<<std::endl; //deve imprimir o valor 5 varivel do namespace.
}
return 0;
}
Cdigo do slide anterior
A varivel um_numero no teve problemas de conflito de nomes.
O namespace std
ofstream meuArqui;
meuArqui.open(arquivo.bin", ios::out | ios::app | ios::binary);
int main () {
ofstream meuArquivo ("examplo.txt");
if (meuArquivo.is_open())
{
meuArquivo << "Isso uma linha.\n";
meuArquivo << "Essa outra linha.\n";
meuArquivo.close();
}
else cout << "No foi possvel abrir o arquivo";
return 0;
}
Operao de leitura em arquivos
As operaes de leitura em arquivos de texto::
// Leitura de um arquivo de texto
#include <iostream> //cout, cin, etc...
#include <fstream> //fstream, ifstream, ofstream
#include <string> //strings
using namespace std;
int main () {
string linha;
ifstream meuArquivo ("examplo.txt");
if (meuArquivo.is_open())
{
while ( getline (meuArquivo,linha) )
{
cout << linha << '\n';
}
meuArquivo.close();
}
else cout << "No foi possvel abrir o arquivo";
return 0;
}
Exerccio 1
Crie dois namespaces que contenham uma constante do tipo double chamada VEL_LUZ. Essa constante
deve estar em m/s no primeiro namespaco e em mph no segundo namespace. Em seguida faa um
programa que imprima essa constante tanto em m/s quanto em mph utilizando o dois namespaces
diferentes (c = 2.99792 x 108 km/h = 6.70617 x 108).
Exerccio 2
Crie um programa que solicite menes de alunos (SR, II, MI, MM, MS e SS) de uma turma de CPE at
que o usurio pressione ENTER sem inserir nenhum texto. O programa deve tambm checar a validade
das menes inseridas, e solicitar reinsero caso seja fornecido texto que no corresponde a uma
meno. As menes devem ser salvas em um vetor.
Exerccio 3
Modifique o programa do exerccio 2 para que ele imprima todas as menes, uma por linha, em um
arquivo chamado notas.txt. O seu programa deve, tambm, imprimir o ndice de reprovao da
turma (qualquer meno abaixo de MM representa uma reprovao).
Exerccio 4
Faa um programa que leia quantos nmeros houver em um arquivo de texto e mostre a mdia e o
desvio padro dos nmeros na tela. O desvio padro dado por:
#include <iostream>
namespace kmh {
const double VEL_LUZ(2.99792e8);
}
namespace mph {
const double VEL_LUZ(6.70617e8);
}
int main(){
std::cout<< "A velocidade da luz e: " << kmh::VEL_LUZ << "km/h" << std::endl;
std::cout<< "A velocidade da luz e: " << mph::VEL_LUZ << "mp
h" << std::endl;
return 0;
}
Gabarito Exerccio 2
Crie um programa que solicite menes de alunos (SR, II, MI, MM, MS e SS) de uma turma de CPE at
que o usurio pressione ENTER sem inserir nenhum texto. O programa deve tambm checar a validade
das menes inseridas, e solicitar reinsero caso seja fornecido texto que no corresponde a uma
meno. As menes devem ser salvas em um vetor.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
int main(){
// Inicializando vetor com array
string mencao_atual = "";
string init_array[7] = {"SR", "II", "MI", "MM", "MS", "SS", ""};
vector<string> mencoes_validas(init_array, init_array + sizeof(init_array) / sizeof(init_array[0]));
vector<string> mencoes;
do{
cout << "Insira uma mencao: ";
getline(cin,mencao_atual);
while(find(mencoes_validas.begin(),mencoes_validas.end(),mencao_atual) == mencoes_validas.end()){
cout << "Mencao invalida. Insira novamente: ";
getline(cin,mencao_atual);
}
mencoes.push_back(mencao_atual);
}while(mencao_atual != "");
return 0;
}
Gabarito Exerccio 3
Modifique o programa do exerccio 2 para que ele imprima todas as menes, uma por linha, em um
arquivo chamado resultado.txt. O seu programa deve, tambm, imprimir o ndice de reprovao da
turma (qualquer meno abaixo de MM representa uma reprovao).
#include <string>
#include <vector>
#include <algorithm> // Funcao find()
#include <iostream>
#include <fstream>
int main(){
string mencao_atual = "";
// Inicializando vetor com array
string init_array_1[7] = {"SR", "II", "MI", "MM", "MS", "SS", ""};
vector<string> mencoes_validas(init_array_1, init_array_1 + sizeof(init_array_1) / sizeof(init_array_1[0]));
// Inicializando vetor com array
string init_array_2[7] = {"SR", "II", "MI"};
vector<string> reprovacao(init_array_2, init_array_2 + sizeof(init_array_2) / sizeof(init_array_2[0]));
unsigned int reprovados(0);
vector<string> mencoes;
Gabarito Exerccio 3
Modifique o programa do exerccio 2 para que ele imprima todas as menes, uma por linha, em um
arquivo chamado resultado.txt. O seu programa deve, tambm, imprimir o ndice de reprovao da
turma (qualquer meno abaixo de MM representa uma reprovao).
do{
cout << "Insira uma mencao: ";
getline(cin,mencao_atual);
// Testar se mencao e invalida
while(find(mencoes_validas.begin(),mencoes_validas.end(),mencao_atual) == mencoes_validas.end()){
cout << "Mencao invalida. Insira novamente: ";
getline(cin,mencao_atual);
}
// Caso nao seja uma string vazia:
if(mencao_atual != "") {
mencoes.push_back(mencao_atual); // Armazenar valor
// Testar reprovacao
if(find(reprovacao.begin(),reprovacao.end(),mencao_atual) != reprovacao.end()){
reprovados++;
}
}
}while(mencao_atual != "");
Gabarito Exerccio 3
Modifique o programa do exerccio 2 para que ele imprima todas as menes, uma por linha, em um
arquivo chamado resultado.txt. O seu programa deve, tambm, imprimir o ndice de reprovao da
turma (qualquer meno abaixo de MM representa uma reprovao).
// Escrever em arquivo
ofstream escrita;
escrita.open("resultado.txt");
return 0;
}
Gabarito Exerccio 4
Faa um programa que leia quantos nmeros houver em um arquivo de texto e mostre a mdia e o
desvio padro dos nmeros na tela. O desvio padro dado por:
int main(){
ifstream leitura;
vector<double> numeros;
double media(0),std_dev(0);
leitura.open("numeros_interessantes.txt");
Gabarito Exerccio 4
Faa um programa que leia quantos nmeros houver em um arquivo de texto e mostre a mdia e o
desvio padro dos nmeros na tela. O desvio padro dado por:
// Calcular a media
for(int k = 0; k < numeros.size(); k++){
media += numeros[k];
}
media /= numeros.size();
cout << "A media dos numeros e: " << media << endl;
Gabarito Exerccio 4
Faa um programa que leia quantos nmeros houver em um arquivo de texto e mostre a mdia e o
desvio padro dos nmeros na tela. O desvio padro dado por:
cout << "O desvio padrao e: " << std_dev << endl;
return 0;
}