package br.pit.oda.arquivos.java;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class NioExample {
/**
* @param args
*/
public static void main(String[] args) {
String s = "Bom dia a todos!\n";
byte data[] = s.getBytes(); // converte o String para bytes
ByteBuffer out = ByteBuffer.wrap(data); // cria um buffer de bytes
ByteBuffer copy = ByteBuffer.allocate(12); // cria um novo buffer de bytes
Path path = Paths.get("/temp/teste.txt"); // criar um caminho para um arquivo
FileChannel fc = null;
try {
// abre um canal de arquivo
fc = (FileChannel.open(path, StandardOpenOption.READ, StandardOpenOption.WRITE));
int nread;
do {
nread = fc.read(copy); // lendo 12 bytes do arquivo
} while ((nread != -1) && copy.hasRemaining());
// escrevendo a frase no início do arquivo
fc.position(0);
while (out.hasRemaining()) {
fc.write(out);
}
out.rewind(); // rebobinando o buffer
// movendo para o fim do arquivo
// copiando os 12 primeiros bytes no fim do arquivo
long length = fc.size();
fc.position(length - 1);
copy.flip(); // inverte o buffer de bytes
while (copy.hasRemaining()) {
fc.write(copy);
}
while (out.hasRemaining()) {
fc.write(out);
}
fc.close();
} catch (IOException x) {
System.out.println("I/O Exception: " + x);
}
}
}
package br.pit.oda.arquivos.java;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFile03 {
/**
* @param args
*/
public static void main(String[] args) {
try {
// create a new RandomAccessFile with filename test
RandomAccessFile raf = new RandomAccessFile("test.txt", "rw");
// write something in the file
raf.writeUTF("Hello World");
// set the file pointer at 0 position
raf.seek(0);
// print the line
System.out.println("" + raf.readLine());
// set the file pointer at 0 position
raf.seek(0);
// write something in the file
raf.writeUTF("This is an example \n Hello World");
raf.seek(0);
// print the line
System.out.println("" + raf.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
package pa.arvore.digital01;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author aluno
*/
public class NoArvoreDigital {
char caractere;
List<NoArvoreDigital> nos;
// construtor
public NoArvoreDigital(char a)
{
this.caractere = a;
nos = new ArrayList<NoArvoreDigital>();
}
// inserir palavra
public boolean inserirPalavra(String palavra)
{ // 1) obter a primeira letra
if (palavra.length() == 0)
return true;
char letra = palavra.charAt(0);
if (palavra.length() > 1)
palavra = palavra.substring(1);
else
palavra = "";
// 2) verificar se a letra existe na arvore
NoArvoreDigital no = obterNo(letra);
if (no != null){// 3) Se ela existir
// 3.1) obter o no correspondente
// 3.2) inserir o resto da palavra neste no
return no.inserirPalavra(palavra);
} else { // 4) Se ela nao existir
// 4.1) criar um novo nó com o caractere corrente
no = new NoArvoreDigital(letra);
nos.add(no); // 4.2) Adicionar o no na lista de nos
// 4.3) inserir o resto da palavra neste no
return no.inserirPalavra(palavra);
}
}
public NoArvoreDigital obterNo(char letra)
{
for (NoArvoreDigital no: nos)
{
if (no.caractere == letra)
return no;
}
return null;
}
@Override
public String toString() {
return "[" + caractere +"] -> " +
nos.toString();
}
// metodo que verifica se a palavra existe dentro da
// arvore digital
public boolean existe(String palavra)
{
// 1) obter o primeiro caractere
if (palavra.length() == 0)
return true;
char letra = palavra.charAt(0);
// 2) obter o restante da palavra
if (palavra.length() > 1)
palavra = palavra.substring(1);
else
palavra = "";
// 3) Se o caractere existir no nó
NoArvoreDigital no = obterNo(letra);
if (no != null){
// 3.1) buscar no nó que contem o caractere
return no.existe(palavra);
} else {// 4) Senao
// 4.1) informar que a palavra não existe
return false;
}
}
public void imprimir()
{
for (NoArvoreDigital no:nos)
{
System.out.print ("["+no.caractere+"] -> ");
no.imprimir();
System.out.println();
}
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package pa.arvore.digital01;
/**
*
* @author aluno
*/
public class PaArvoreDigital01 {
/**
* @param args the command line arguments
*/
public static void main(String [] args)
{
NoArvoreDigital no = new NoArvoreDigital('*');
no.inserirPalavra("texto");
no.inserirPalavra("teste");
no.inserirPalavra("casa");
no.inserirPalavra("tomate");
System.out.println(no);
no.imprimir();
String palavra = "teste";
System.out.println(palavra + "-> " + no.existe(palavra));
palavra = "cas";
System.out.println(palavra + "-> " + no.existe(palavra));
palavra = "teto";
System.out.println(palavra + "-> " + no.existe(palavra));
}
}
#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;
void ordenarPorSelecao(unsigned short a[], int tam)
{
int i, j, menor, aux;
for (i = 0; i < tam; i++){
menor = i;
for (j = i + 1; j < tam; j++){
if (a[j] < a[menor])
menor = j;
}
if (menor != i){
aux = a[menor];
a[menor] = a[i];
a[i] = aux;
}
}
cout << "Depois de ordenado: " << endl;
for (int i = 0; i < tam; i++){
cout << a[i] << "\t";
}
}
// funcao que realiza a busca sequencial
// a[]: tabela de dados
// tam: tamanho da tabela de dados
// v : valor a ser buscado na tabela
// retorno int: posicao de v em a[] caso ele exista,
// -1 caso contrario
int buscaSequencial(unsigned short a[], int tam,
unsigned short v)
{
int pos = -1; // assumir que o elemento nao existe
for (int c = 0; c < tam; c++){
if (a[c] == v){
pos = c;
break;
}
}
return pos;
}
int main(int argc, char *argv[])
{
// Problema
// Entrada: Um numero digitado pelo usuário e um
// vetor/tabela com 1M de números aleatórios
// Saída: Informar se o número existe na tabela ou não
// Descrição textual
// 1) Ler do usuario um numero inteiro
int tam = 10;
unsigned short t[tam]; // tabela de dados
unsigned short n; // entrada do usuario
int c; // contador
cout << "Digite um numero inteiro: "<< endl;
cin >> n;
// 2) Gerar os numeros aleatorios e armazena-los
// no vetor
srand(time(NULL)); // inicializa o gerador
for (int i = 0; i < tam; i++){
t[i] = rand() % 65454;
}
// 3) Executar a busca sequencial sobre o vetor
int r = buscaSequencial(t, tam, n);
if (r == -1){
cout << "Resultado não encontrado." << endl;
} else {
cout << "Valor encontrado na posicao " << r << endl;
}
// 4) Exibir o vetor na tela
for (int i = 0; i < tam; i++){
cout << t[i] << "\t";
}
// 5) ordenar o vetor
ordenarPorSelecao(t, tam);
// 6) exibir o vetor ordenado
cout << "Depois de ordenado: " << endl;
for (int i = 0; i < tam; i++){
cout << t[i] << "\t";
}
system("PAUSE");
return EXIT_SUCCESS;
}
#include <iostream>
#include <cstring>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
// problema
// entrada: uma palavra digitada pelo usuario
// saida: informar a palavra invertida
// descricao textual
// 1) ler uma palavra do usuario
// 2) Calcular o tamanho da palavra
// 3) Para cada letra na frase
// a partir do final ( passo -1)
// 3.1) Imprime a letra
// algoritmo estruturado
// Var
char n[50];// N: conjunto[1...20]: caractere
int c, t; // C, T: inteiro
// Inicio
cout << "Digite uma palavra: "<<endl;// Escrever "Digite uma palavra: "
cin.get(n, 51);// Ler N
t = strlen(n); // T <- Tamanho(N)
for (c = t-1; c >=0; c--){// Para C De T Até 1 Passo -1 Faça
cout << n[c];// Escrever N[C]
}// Fim Para
cout << endl;
// Fim
return 0;
}
#include <iostream>
// ProjetoTabelaDadosEx01
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
// Problema
// Entrada: dez notas digitadas pelo usuario
// Saida: informar cada uma das notas digitadas
// e a media
// descricao textual
// 1) Ler as 10 notas
// 2) Para cada uma das notas digitadas
// 2.1) Acumular o valor na soma
// 3) Calcular a média
// 4) Exibir as notas informadas pelo usuario
// 5) Exibir a média
// Algoritmo estruturado
// Var
int n[10]; // N: conjunto [1...10]:inteiro
int c, s; // C, S: inteiro
float m; // M: real
// Inicio
s = 0; // S -> 0
for (c = 0; c<10; c++){ // Para C De 1 Até 10 Passo 1 Faça
cout << (c+1) << " ] - Digite uma nota: " << endl; // Escrever "Digite uma nota: "
cin >> n[c]; // Ler N[C]
s = s + n[c]; // S <- S + N[C]
} // Fim Para
m = s / 10.0; // M <- S / 10
cout << "=========================" << endl;
cout << "Exibindo as notas: " << endl;
for (c = 0; c<10; c++){ // Para C De 1 Até 10 Passo 1 Faça
cout << n[c] << endl; // Escrever N[C]
} // Fim Para
cout << "Media: " << m << endl; // Escrever "Media: " M
// Fim
return 0;
}
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
int main(int argc, char *argv[])
{
// problema
// entrada: um número inteiro digitado pelo usuário (N)
// saída: gerar N números aleatórios e escrever estes
// números em arquivo.
int n;
srand(time(NULL)); // inicializando o gerador de numeros aleatório
cout << "Digite um numero inteiro: " << endl;
// 1) Ler do usuario o numero inteiro (N)
cin >> n;
// abrir o arquivo para escrita
ofstream arquivo;
arquivo.open("dados.txt");
// testar se o arquivo foi aberto com sucesso ou nao
if (!arquivo.is_open()){
cout << "ERRO: nao foi possivel abrir o arquivo!" << endl;
return EXIT_FAILURE;
}
int numero = 0;
// 2) Para cada numero de 1 até N
for (int i = 0; i < n; i++){
// 2.1) gerar o numero aleatório
numero = rand() % 100;
// 2.2) escrever o número em arquivo
cout << i << " - Escrevendo o número " << numero << " no arquivo." << endl;
arquivo << numero << endl;
}
arquivo.close();
// parte 2: abrir o arquivo e calcular o seu tamanho em bytes e
// quantidade de números
ifstream arq;
arq.open("dados.txt");
arq.seekg(0, ifstream::end);
streampos tamanho = arq.tellg(); // obtendo o tamanho do arquivo
cout << "Arquivo gerado: " << tamanho << " Bytes." << endl;
arq.close();
system("PAUSE");
return EXIT_SUCCESS;
}