Você está na página 1de 7

Universidade Estadual do Norte Fluminense

Laboratório de Engenharia e Exploração de Petróleo

Programação Orientada a Objeto em C++

David Henrique Lima Dias

Exercícios do capítulo 22

A seguir estarão os códigos e saídas referentes as questões 17, 18, 19, 25.

Questão 17
#include <iostream>
#include <iomanip>
#include <fstream> //acessa arquivos de arquivo_disco
//#include <vector>

using namespace std;

int main () {

ofstream fout (" tabela1 ");//criou, abriou e fout acessa ele. fout
envia pro disco. Ele n pede o nome como na steing de cima
fout << " Os dados abaixo estão no arquivo tabela1 \n";
for ( int z = 10 ; z < 110; z = z + 10)
fout << setw(7) << right << z
<< setw(7) << right << (z/2)
<< '\n';
cout << "criou o arquivo tabela1 " << "\n";
fout.flush();
fout.close();
return 0;
}

Saída questão 17

criou o arquivo tabela1

Dados no arquivo

Isto vai para o arquivo tabela1


10 5
20 10
30 15
40 20
50 25
60 30
70 35
80 40
90 45
100 50
Isto vai para o arquivo data2.dat
Gráfico gerado em excel (questão 17)

Crescimento linear
60

50

40

30

20

10

0
0 20 40 60 80 100 120

Questão 18

#include <iostream>
#include <iomanip>
#include <fstream> //acessa arquivos de arquivo_disco
#include <string>

using namespace std;

int main () {

cout << "Verificando o que acontece ao ler o arquivo de disco";

ifstream fin ("Pasta2.csv");


double x;
string linhas;
getline(fin, linhas);

while ( !fin.eof() ) { //enquanto tiver linhas a serem lidas


fin >> x;

cout << linhas;


cout << '\n' << x << '\n';
}
return 0;
}

Conteúdo da pasta2.csv
x
1.234
5.678.98

Saída questão 18

Verificando o que acontece ao ler o arquivo de discox


1.234
x
5.678
x
0.98
x
0.98

Questão 19
#include <iostream>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <limits>
#include <vector>
#include <math.h>
#include <iomanip>

using namespace std;

class CEstatistica {
public:

float FMedia (float x, int n){


float media = x/n;
return media;
};

float FPadrao (vector <float> k, float media){


float va;
for (int i = 0; i < k.size(); i++) {
va = va + ((k[i]- media) * (k[i] - media));
}
auto j = va/(k.size ());
auto dpa = sqrt(j);
return dpa;
};
};
int main () {

CEstatistica P;
vector<float> k;
int entrada = 0;
float sum = 0;
int i = 0;

do {
cout << "\n Qual o valor de entrada (" << k. size () << "):
";
cin >> entrada ;
cin.get();
if ( std :: cin . good ()) // Se for válido o dado de entrada
k.push_back (entrada); // aloca para o final do vetor

sum = sum + k[i];


i++;
}
while (std::cin.good());
i = i - 1;

cout << " A soma e = " << sum<< "\n";


float media = P.FMedia(sum, i);
cout << setw(10) << " Media = "<< media << "\n";
cout << "Desvio Padrao = " << P.FPadrao(k,media);
return 0;
}

Saída questão 19 (forma a)

Qual o valor de entrada (0): 10

Qual o valor de entrada (1): 5

Qual o valor de entrada (2): 15

Qual o valor de entrada (3): k


A soma e = 30
Media = 10
Desvio Padrao = 4.08248

Questão 19 (forma b)

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

class CEstatistica {
public:
float Fmedia(vector<float> v){
float soma = 0.0;
for(int j = 0; j < v.size() ; j++){
soma = soma + v[j];
}
float media = soma/v.size();
return media;
}

float Fdesviopadrao(vector<float> v){


float y = 0.0;
float media = Fmedia(v);
for( int i = 0 ; i < v.size(); i++ ){
y = y + ((v[i] - media)*(v[i] - media));
}
y = y / v.size();
float dp = sqrt(y);
return(dp);
}
};

int main(){
int n;//sendo n=qtd de dados
cout<<"Digite a quantidade de dados:\n";
cin >> n; cin.get();
vector<float> v(n); // Cria vetor
for(int j = 0 ; j < v.size() ; j++ ) // mostra vetor
cout << v[j] << '\t';

for(int j = 0; j < v.size() ; j++){ // entra com dados


cout << "\nEntre com o valor " << j << ": ";
cin >> v[j]; cin.get();
}

for(int j = 0 ; j < v.size() ; j++ ) // mostra vetor


cout << v[j] << '\t';

CEstatistica E;
float media = E.Fmedia(v);
cout << "\nMedia = "<< media << "\n";
float dp = E.Fdesviopadrao(v);
cout << "Desvio Padrao = " << dp << endl;

return 0;
}

Saída questão 19 (forma b)

Digite a quantidade de dados:


3
0 0 0
Entre com o valor 0: 10

Entre com o valor 1: 5

Entre com o valor 2: 15


10 5 15
Media = 10
Desvio Padrao = 4.08248

Questão 25

// Para compilar : g++ -std =c ++20 filesystem -01 - InformacoesPath . cpp -o


InformacoesPath -lstdc ++ fs
# include <iostream >
# include <iomanip >
# include <fstream >
using namespace std ;

# include <filesystem >


namespace fs = std :: filesystem ; //traz todas as classes
associadas.

void InformacoesPath ( fs :: path & p ) { //cria um obj do tipo path da


biblioteca fs e verificar várias informações . Nessa linda temos uma função
que n tem retorno e recebe uma path, enviando pra tela algumas info sobre
essa path
cout << "\n Path completa :" << p //na linha de cima posso acessar
todas as funções de path
<< "\n Note que o Caminho corrente pode ser decomposto nas seguintes
partes :"
<< "\n root_name ()=" << p. root_name ()
<< "\nroot_directory ()=" << p . root_directory ()
<< "\nroot_path ()=" << p. root_path ()
<< "\nroot_path (). string ()=" << p. root_path () . string ()
<< "\nparent_path ()=" << p. parent_path ()//meu pai, vem antes
<< "\nfilename ()=" << p . filename () //meu nome
<< "\nextension ()=" << p. extension () ;
cout << "\nis_block_file( device )=" << is_block_file ( p )//se é arquivo de
bloco
<< "\nis_character_file ( device )=" << is_character_file (p )
<< "\nis_directory= " << is_directory (p ) // é um diretório
<< "\nis_fifo =" << is_fifo ( p)
<< "\nis_other = " << is_other (p )
<< "\nis_regular_file = " << is_regular_file (p )
<< "\nis_socket = " << is_socket ( p)
<< "\nis_symlink = " << is_symlink ( p)
<< "\nis_empty =" << fs :: is_empty (p ) //se ta fazio
<< "\nexists =" << fs :: exists (p ) << endl ;//se existe
}

int main () {

std :: cout << "\n ================ Informacoes da PATH ======== ";


auto p = fs :: current_path () ; // Path corrente. criei uma path p, chamo
currente é pra dizer o caminho que me encontro, david/doc/c++
InformacoesPath (p); // e suas informações .

system ("erase -r c:/tmp/teste/");


system ("mkdir c:/tmp/teste/");//cria zerado

fs::path arquivo {"/temp/teste/arquivo.txt"};//formato + smart, criando a


path
ofstream fout ("arquivo"); //cria no diretório corrente (indicado pela
path)
//system ("ls -lah /tmp/teste/"); //sem necessidade
fout << "\n Oi tudo bem! \n"; //escreve
fout.close(); //fecha

//system("ls -lah /tmp/teste/"); sem necessidade

fs::path link_simbolico {"/temp/teste/link_arquivo.txt"};


create_symlink(arquivo, link_simbolico);
//system ("ls -lah /tmp/teste/"); sem necessidade

InformacoesPath(arquivo);
InformacoesPath(link_simbolico);
return 0;
}

Saída da questão 25

No arquivo de disco .txt → Oi tudo bem!

================ Informacoes da PATH ========


Path completa :"C:\\Users\\david\\OneDrive\\Documentos\\8º Período
Lenep\\C++\\Cap.22Redirecionamento\\tmp\\aula"
Note que o Caminho corrente pode ser decomposto nas seguintes partes
:
root_name ()="C:"
root_directory ()="\\"
root_path ()="C:\\"
root_path (). string ()=C:\
parent_path ()="C:\\Users\\david\\OneDrive\\Documentos\\8º Período
Lenep\\C++\\Cap.22Redirecionamento\\tmp"
filename ()="aula"
extension ()=""
is_block_file( device )=0
is_character_file ( device )=0
is_directory= 1
is_fifo =0
is_other = 0
is_regular_file = 0
is_socket = 0
is_symlink = 0
is_empty =0
exists =1
Opção inválida - "tmp".
A sintaxe do comando está incorreta.
terminate called after throwing an instance of
'std::filesystem::__cxx11::filesystem_error'
what(): filesystem error: cannot create symlink: Unknown error
[/temp/teste/arquivo.txt] [/temp/teste/link_arquivo.txt]

Você também pode gostar