Commit fc25ee87 authored by silviocsg's avatar silviocsg

Unidade 3

parent 808de02b
Pipeline #5808 skipped
File added
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
void imprime(string nome) { cout << nome << " "; }
int main(int argc, char const *argv[])
{
// Instancia um vetor de 10 posições to tipo int
vector<string> nomes(10);
nomes[0] = "Paulo"; nomes[1] = "Joao"; nomes[2] = "Mauricio";
nomes[4] = "Sergio"; nomes[5] = "Ana Carla"; nomes[6] = "Joao";
// Contando a ocorrencias de "Joao" no vetor
int ocorrencias = count(nomes.begin(), nomes.end(), "Joao");
cout << "Foram encontradas " << ocorrencias << " ocorrencias." << endl;
// Encontra a primeira ocorrência de "Joao" no vetor
vector<string>::iterator it;
it = find(nomes.begin(), nomes.end(), "Joao");
if (it == nomes.end())
cout << "Valor nao encontrado." << endl;
else
cout << "Valor encontrado." << endl;
// Chama a funcao imprime() para cada elemento do vetor
for_each(nomes.begin(), nomes.end(), imprime);
return 0;
}
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
void imprime(vector<int> v);
int main(int argc, char const *argv[])
{
// Instancia um vetor de 10 posições to tipo int
vector<int> numeros(10);
numeros[0] = 0; numeros[1] = 1; numeros[2] = 2;
numeros[4] = 0; numeros[5] = 3; numeros[6] = 4;
imprime(numeros);
vector<int>::iterator it;
// Inverte a ordem dos elementos no vetor
reverse(numeros.begin(), numeros.end());
imprime(numeros);
// Reordena aleatoriamente os elementos no vetor
random_shuffle(numeros.begin(), numeros.end());
imprime(numeros);
// Substitui a ocorrencia de um valor por outro
replace(numeros.begin(), numeros.end(), 0, 99);
imprime(numeros);
// Preenche todos os elementos do vetor com o valor "-1"
fill(numeros.begin(), numeros.end(), -1);
imprime(numeros);
return 0;
}
void imprime(vector<int> v)
{
vector<int>::iterator i;
// Imprime os elementos no vetor
for (i = v.begin(); i != v.end(); ++i)
cout << (*i) << " ";
cout << endl;
}
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
void imprime(vector<int> v);
int main(int argc, char const *argv[])
{
// Instancia um vetor de 10 posições to tipo int
vector<int> numeros(10);
numeros[0] = 12; numeros[1] = 5; numeros[2] = 21;
numeros[4] = 23; numeros[5] = 44; numeros[6] = 38;
imprime(numeros);
vector<int>::iterator it;
// Retorna um iterador para o primeiro elemento com o maior valor
it = max_element(numeros.begin(), numeros.end());
cout << "Maior valor: " << (*it) << endl;;
// Ordena os 5 primeiros elementos do vetor
sort(numeros.begin(), numeros.begin()+5);
imprime(numeros);
// Ordena todo o vetor e realiza uma busca binaria pelo valor "38"
sort(numeros.begin(), numeros.end());
bool res = binary_search(numeros.begin(), numeros.end(), 38);
if (res == true)
cout << "Valor encontrado." << endl;
else
cout << "Valor nao encontrado." << endl;
return 0;
}
void imprime(vector<int> v)
{
vector<int>::iterator i;
// Imprime os elementos no vetor
for (i = v.begin(); i != v.end(); ++i)
cout << (*i) << " ";
cout << endl;
}
#include <iostream>
#include <deque>
using namespace std;
int main(int argc, char const *argv[])
{
// Instancia um deque de 5 posições to tipo int
deque<int> numeros;
// Insere no inicio
numeros.push_front(1); // [1]
numeros.push_front(2); // [2 1]
numeros.push_front(3); // [3 2 1]
// Insere no final
numeros.push_back(6); // [3 2 1 6]
numeros.push_back(5); // [3 2 1 6 5]
// Remove no inicio
numeros.pop_front(); // [2 1 6 5]
// Remove no final
numeros.pop_back(); // [2 1 6]
// Acesso ao elemento numa posição específica usando o método at()
cout << numeros.at(1) << endl;
// Imprime o conteudo do deque usando iteradores
deque<int>::iterator it;
for (it = numeros.begin(); it != numeros.end(); ++it)
cout << (*it) << " ";
return 0;
}
#include <iostream>
#include <list>
#include <string>
using namespace std;
bool nomesComA(string nome) { return nome[0] == 'A'; }
int main(int argc, char const *argv[])
{
// Instancia uma lista de string
list<string> nomes;
nomes.push_back("Paulo"); // [Paulo]
nomes.push_back("Joao"); // [Paulo Joao]
nomes.push_back("Aline"); // [Paulo Joao Aline]
nomes.push_back("Mauricio"); // [Paulo Joao Aline Mauricio]
// Ordena a lista (nos caso de string, na ordem alfabética)
nomes.sort(); // [Aline Joao Mauricio Paulo]
// Imprime o conteudo do vetor usando iteradores
list<string>::iterator it;
for (it = nomes.begin(); it != nomes.end(); ++it)
cout << (*it) << " ";
nomes.remove("Joao"); // [Aline Mauricio Paulo]
nomes.remove_if(nomesComA); // [Mauricio Paulo]
// Ordena a lista na ordem inversa
nomes.reverse(); // [Paulo Mauricio]
cout << endl;
for (it = nomes.begin(); it != nomes.end(); ++it)
cout << (*it) << " ";
return 0;
}
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
// Instancia um map de chaves int e valor string
map<int, string> alunos;
// Inserindo os elementos no map usando o metodo insert()
alunos.insert(pair<int, string>(5,"Joao")); // [(5,Joao)]
alunos.insert(pair<int, string>(2,"Ana")); // [(2,Ana) (5,Joao)]
alunos.insert(pair<int, string>(1,"Ziraldo")); // [(1,Ziraldo) (2,Ana) (5,Joao)]
alunos.insert(pair<int, string>(3,"Ana")); // [(1,Ziraldo) (2,Ana) (3,Ana) (5,Joao)]
// Inserindo um elemento usando notacao de vetor
alunos[4] = "Silvio"; // [(1,Ziraldo) (2,Ana) (3,Ana) (4,Silvio) (5,Joao)]
// Removendo o registro com chave "2"
alunos.erase(2); // [(1,Ziraldo) (3,Ana) (4,Silvio) (5,Joao)]
// Tenta inserir um registro com a mesma chave
pair<map<int, string>::iterator,bool> res;
res = alunos.insert(pair<int, string>(5,"Joana"));
if (res.second==false)
cout << "Ja existe registro com esta chave: "
<< res.first->first << ","
<< res.first->second << endl;
// Busca o registro com chave com valor "1"
map<int, string>::iterator busca = alunos.find(1);
cout << "Cod: " << busca->first << " - Nome: " << busca->second << endl; // Cod: 1 - Nome: Ziraldo
// Imprime o conteudo do map usando iteradores
map<int,string>::iterator it;
for (it = alunos.begin(); it != alunos.end(); ++it)
cout << it->second << " "; // Ziraldo Ana Silvio Joao
return 0;
}
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
// Instancia um multimap de chaves int e valor string
multimap<int, string> alunos;
// Inserindo os elementos no multimap
alunos.insert(pair<int, string>(5,"Joao")); // [(5,Joao)]
alunos.insert(pair<int, string>(2,"Ana")); // [(2,Ana) (5,Joao)]
alunos.insert(pair<int, string>(1,"Ziraldo")); // [(1,Ziraldo) (2,Ana) (5,Joao)]
alunos.insert(pair<int, string>(3,"Ana")); // [(1,Ziraldo) (2,Ana) (3,Ana) (5,Joao)]
// Tenta inserir um registro com a mesma chave
alunos.insert(pair<int, string>(5,"Joana")); // [(1,Ziraldo) (2,Ana) (3,Ana) (5,Joao) (5,Joana)]
// Busca o registro com chave com valor "5"
multimap<int, string>::iterator busca = alunos.find(5);
cout << "Cod: " << busca->first << " - Nome: " << busca->second << endl;
// Removendo o registro com chave "5"
int removidos = alunos.erase(5); // [(1,Ziraldo) (2,Ana) (3,Ana)]
cout << "Foram removidos " << removidos << " registros." << endl;
// Imprime o conteudo do multimap usando iteradores
multimap<int,string>::iterator it;
for (it = alunos.begin(); it != alunos.end(); ++it)
cout << "(" << it->first << "," << it->second << ") ";
return 0;
}
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
// Instancia um multiset de string
multiset<string> frutas;
frutas.insert("Banana"); // [Banana]
frutas.insert("Morango"); // [Banana Morango]
frutas.insert("Abacaxi"); // [Abacaxi Banana Morango]
frutas.insert("Uva"); // [Abacaxi Banana Morango Uva]
pair<multiset<string>::iterator,bool> res;
frutas.insert("Uva"); // [Abacaxi Banana Morango Uva Uva]
frutas.insert("Morango"); // [Abacaxi Banana Morango Morango Uva Uva]
frutas.erase("Morango"); // [Abacaxi Banana Uva]
// Imprime o conteudo do multiset usando iteradores
multiset<string>::iterator it;
for (it = frutas.begin(); it != frutas.end(); ++it)
cout << (*it) << " ";
return 0;
}
#include <iostream>
#include <vector>
#include <string>
#include <numeric>
using namespace std;
void imprime(vector<int> v);
int main(int argc, char const *argv[])
{
// Instancia um vetor de 10 posições to tipo int
vector<int> numeros(10);
numeros[0] = 1; numeros[1] = 2; numeros[2] = 3;
numeros[3] = 4; numeros[4] = 5; numeros[5] = 6;
imprime(numeros);
vector<int>::iterator it;
// Calcula o acumulado (soma) dos valores no vetor
int soma = accumulate(numeros.begin(), numeros.end(), 0);
cout << "Soma: " << soma << endl;
return 0;
}
void imprime(vector<int> v)
{
vector<int>::iterator i;
// Imprime os elementos no vetor
for (i = v.begin(); i != v.end(); ++i)
cout << (*i) << " ";
cout << endl;
}
#include <iostream>
#include <deque>
#include <queue>
using namespace std;
int main(int argc, char const *argv[])
{
// Fila implementada em um vector (default)
priority_queue<int> fila;
// Fila implementada em um deque
// Nota: usar espaco entre "> >"
// para diferenciar de ">>" !!
priority_queue<int,deque<int> > fila_lista;
if (fila.empty())
cout << "Fila vazia." << endl;
// Insere os elementos na pilha
fila.push(55); // topo -> [55]
fila.push(5); // topo -> [55 5]
fila.push(16); // topo -> [55 16 5]
fila.push(98); // topo -> [98 55 16 5]
cout << "Total de elementos: " << fila.size() << endl;
// Remove o elemento com maior prioridade (no topo)
fila.pop(); // topo -> [55 16 5]
cout << "Elemento com maior prioridade: " << fila.top() << endl; // 55
return 0;
}
#include <iostream>
#include <list>
#include <queue>
using namespace std;
int main(int argc, char const *argv[])
{
// Fila implementada em um deque (default)
queue<string> fila;
// Fila implementada em uma lista
// Nota: usar espaco entre "> >"
// para diferenciar de ">>" !!
queue<string,list<string> > fila_lista;
if (fila.empty())
cout << "Fila vazia." << endl;
// Insere os elementos na fila
fila.push("Roberto"); // front -> [Roberto] <- back
fila.push("Antonio"); // front -> [Roberto Antonio] <- back
fila.push("Maria"); // front -> [Roberto Antonio Maria] <- back
fila.push("Paulo"); // front -> [Roberto Antonio Maria Paulo] <- back
cout << "Total de elementos: " << fila.size() << endl;
// Remove o elemento no topo da fila
fila.pop(); // front -> [Antonio Maria Paulo] <- back
cout << "Primeiro da fila: " << fila.front() << endl; // Antonio
cout << "Ultimo da fila: " << fila.back() << endl; // Paulo
return 0;
}
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
// Instancia um set de string
set<string> frutas;
frutas.insert("Banana"); // [Banana]
frutas.insert("Morango"); // [Banana Morango]
frutas.insert("Abacaxi"); // [Abacaxi Banana Morango]
frutas.insert("Uva"); // [Abacaxi Banana Morango Uva]
pair<set<string>::iterator,bool> res;
res = frutas.insert("Uva");
if (res.second==false)
cout << (*res.first) << " nao inserido, pois ja existe." << endl;
if (frutas.count("Uva"))
cout << "Uva já cadastrada." << endl;
frutas.erase("Morango"); // [Abacaxi Banana Uva]
set<string>::iterator itBanana = frutas.find("Banana");
cout << (*itBanana) << endl;
// Imprime o conteudo do set usando iteradores
set<string>::iterator it;
for (it = frutas.begin(); it != frutas.end(); ++it)
cout << (*it) << " ";
return 0;
}
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main(int argc, char const *argv[])
{
// Pilha implementada em um deque (default)
stack<int> pilha;
// Pilha implementada em um vetor
// Nota: usar espaco entre "> >"
// para diferenciar de ">>" !!
stack<int,vector<int> > pilha_vetor;
if (pilha.empty())
cout << "Pilha vazia." << endl;
// Insere os elementos na pilha
pilha.push(5); // topo -> [5]
pilha.push(7); // topo -> [7 5]
pilha.push(2); // topo -> [2 7 5]
cout << "Total de elementos: " << pilha.size() << endl;
// Remove o elemento no topo da pilha
pilha.pop(); // topo -> [7 5]
cout << "Elemento no topo da pilha: " << pilha.top() << endl;
return 0;
}
#include <iostream>
#include <string>
using namespace std;
void imprime(const char *f) { cout << f << endl; }
int main(int argc, char const *argv[])
{
// Instancia dois objetos do tipo string
string frase = "Hello";
string palavra;
// Testando o valor de uma string diretamente
if (frase == "Hello")
cout << "Frase corretamente iniciada" << endl;
else
cout << "Frase mal iniciada" << endl;
// Usando o operador de concatenacao
string espaco = " ";
palavra = espaco + "world" + espaco + "!";
// Usando o perador de concatenacao & atribuicao
frase += palavra;
// Imprimindo a frase
cout << "Frase: " << frase << endl;
// Imprimindo a quantidade de caracteres na string
// com o metodo size()
cout << "Tamanho da frase: " << frase.size() << endl;
// Retornando o conteudo da string como um "array of char"
// do C (const char *), usando o metodo c_str()
imprime (frase.c_str());
return 0;
}
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
// Instancia um vetor de 3 posições to tipo string
vector<string> nomes(3);
nomes[0] = "Paulo";
nomes[1] = "Joao";
nomes[2] = "Mauricio";
// Acesso ao elemento numa posição específica usando o método at()
cout << nomes.at(1) << endl;
// Imprime o conteudo do vetor usando iteradores
vector<string>::iterator it;
for (it = nomes.begin(); it != nomes.end(); ++it)
cout << (*it) << " ";
// Instancia e imprime um vetor de 10 posições int iniciadas com valor zero
vector<int> numeros(10,0);
for (vector<int>::iterator num = numeros.begin(); num != numeros.end(); ++num)
cout << (*num) << " ";
return 0;
}
INC_DIR = include
SRC_DIR = src
OBJ_DIR = build
LIB_DIR = lib
CC = g++
CFLAGS = -Wall -pedantic -std=c++11 -ansi -I. -I$(INC_DIR)
ARCHIVE = ar
linux: minhalib.a minhalib.so prog_estatico prog_dinamico
windows: minhalib.lib minhalib.dll prog_estatico.exe prog_dinamico.exe
# LINUX
minhalib.a: $(SRC_DIR)/funcoes1.cpp $(SRC_DIR)/funcoes2.cpp $(INC_DIR)/minhalib.h
$(CC) $(CFLAGS) -c $(SRC_DIR)/funcoes1.cpp -o $(OBJ_DIR)/funcoes1.o
$(CC) $(CFLAGS) -c $(SRC_DIR)/funcoes2.cpp -o $(OBJ_DIR)/funcoes2.o
$(AR) rcs $(LIB_DIR)/$@ $(OBJ_DIR)/funcoes1.o $(OBJ_DIR)/funcoes2.o
@echo "+++ [Biblioteca estatica criada em $(LIB_DIR)/$@] +++"
minhalib.so: $(SRC_DIR)/funcoes1.cpp $(SRC_DIR)/funcoes2.cpp $(INC_DIR)/minhalib.h
$(CC) $(CFLAGS) -fPIC -c $(SRC_DIR)/funcoes1.cpp -o $(OBJ_DIR)/funcoes1.o
$(CC) $(CFLAGS) -fPIC -c $(SRC_DIR)/funcoes2.cpp -o $(OBJ_DIR)/funcoes2.o
$(CC) -shared -fPIC -o $(LIB_DIR)/$@ $(OBJ_DIR)/funcoes1.o $(OBJ_DIR)/funcoes2.o
@echo "+++ [Biblioteca dinamica criada em $(LIB_DIR)/$@] +++"
prog_estatico:
$(CC) $(CFLAGS) $(SRC_DIR)/main.cpp $(LIB_DIR)/minhalib.a -o $(OBJ_DIR)/$@
prog_dinamico:
$(CC) $(CFLAGS) $(SRC_DIR)/main.cpp -L$(LIB_DIR) $(LIB_DIR)/minhalib.so -o $(OBJ_DIR)/$@
# WINDOWS
minhalib.lib: $(SRC_DIR)/funcoes1.cpp $(SRC_DIR)/funcoes2.cpp $(INC_DIR)/minhalib.h
$(CC) $(CFLAGS) -c $(SRC_DIR)/funcoes1.cpp -o $(OBJ_DIR)/funcoes1.o
$(CC) $(CFLAGS) -c $(SRC_DIR)/funcoes2.cpp -o $(OBJ_DIR)/funcoes2.o
$(AR) rcs $(LIB_DIR)/$@ $(OBJ_DIR)/funcoes1.o $(OBJ_DIR)/funcoes2.o
@echo "+++ [Biblioteca estatica criada em $(LIB_DIR)/$@] +++"
minhalib.dll: $(SRC_DIR)/funcoes1.cpp $(SRC_DIR)/funcoes2.cpp $(INC_DIR)/minhalib.h
$(CC) $(CFLAGS) -c $(SRC_DIR)/funcoes1.cpp -o $(OBJ_DIR)/funcoes1.o
$(CC) $(CFLAGS) -c $(SRC_DIR)/funcoes2.cpp -o $(OBJ_DIR)/funcoes2.o
$(CC) -shared -o $(LIB_DIR)/$@ $(OBJ_DIR)/funcoes1.o $(OBJ_DIR)/funcoes2.o
@echo "+++ [Biblioteca dinamica criada em $(LIB_DIR)/$@] +++"
prog_estatico.exe:
$(CC) $(CFLAGS) $(SRC_DIR)/main.cpp $(LIB_DIR)/minhalib.lib -o $(OBJ_DIR)/$@
prog_dinamico.exe:
$(CC) $(CFLAGS) $(SRC_DIR)/main.cpp $(LIB_DIR)/minhalib.dll -o $(OBJ_DIR)/$@
clean:
@echo "Removendo arquivos objeto e executaveis/binarios..."
@rm -rf $(OBJ_DIR)/*
#ifndef _MINHALIB_H_
#define _MINHALIB_H_
namespace exemplo
{
extern "C" void imprime(std::string frase);
extern "C" int soma(int valorA, int valorB);
template <typename T>
T max (T a, T b)
{
return (a > b) ? a : b;
}
}
#endif
#include <iostream>
#include "minhalib.h"
using namespace std;
namespace exemplo
{
void imprime(std::string frase)
{
cout << frase << endl;
}
}
\ No newline at end of file
#include <iostream>
#include "minhalib.h"
using namespace std;
namespace exemplo
{
int soma(int valorA, int valorB)
{
return (valorA+valorB);
}
}
#include <iostream>
#include "minhalib.h"
using namespace std;
using namespace exemplo;
int main(void)
{
string frase = "Olá mundo!";
imprime(frase);
cout << "Resultado da soma 5+6: " << soma(5,6) << endl;
cout << "O maior valor entre 5 e 6: " << exemplo::max(5,6) << endl;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment