sexta-feira, 25 de setembro de 2009

Exercíco Extra 2oB PGTI C++ para HTML

Implementar uma estrutura de repetição que busque todos os produtos contidos no vetor de estruturas de produtos, conforme cadastrados, criando como saída um arquivo .HTML contendo uma lista dos produtos no formato de tabela, onde as linhas sejam os produtos e as colunas os campos.

Para fazer a saída de texto para um arquivo no disco, utilize a classe ofstream, a seguir é mostrado um exemplo:

// Exemplo do uso de ponteiros para arquivos texto
// Exportando dados através de arquivos texto HTML
// Uso da classe ofstream - ponteiros para arquivos de saída
// Autor: ALAN MENDES MAROTTA - CEFETMG - LP - Divinópolis MG 25.09.09

#include (iostream)
#include (fstream)
#include (string.h)
using namespace std;

int main( ){
string nome;
ofstream arquivo;
arquivo.open( "teste.html" ) ;
if ( arquivo.is_open( ) ) {
cout << "Entre com seu primeiro nome:" ; cin >> nome;
arquivo << "\\\TESTE C++ para HTML\\\" \<\< type="text" value="'"\>" \<\<\>\" \<\< endl;
} else { cout \<\< "Impossível criar arquivo de saída, verificar privilégios de gravação no caminho especificado"; } return 0;}

sexta-feira, 11 de setembro de 2009

Código C++ (devc) para listar e distinguir arquivos e pastas

Segue o código em c++ (windows) testado em DevC++ que lista o conteúdo de um diretório (pasta), distinguindo se trata-se de um arquivo ou subpasta (subdiretório):

// By Prof. Alan Mendes Marotta

#include ( dir.h ) // classe para manipular diretórios
#include ( dirent.h ) // classe para manipular diretórios
#include ( cstdio )

#include ( cstdlib )
#include ( iostream )
#include ( string.h )
#include ( fstream )
#include ( iostream )
#include ( string.h )
#include ( stdlib.h )
#include ( stdio.h )
#include ( sstream )

using namespace std;

char novapasta[200];

void listadir (const char *path)
{
// ponteiro para entrada do arquivo na pasta
struct dirent *pent = NULL;
// Ponteiros para os diretórios:
// a ser listado e para o teste dos subdiretórios
DIR *pdir = NULL, *pdirteste = NULL;

// Tentando inicializar o ponteiro para o diretório
pdir = opendir (path);

// caso o pdir não seja inicializado corretamente, sai
if (pdir == NULL)
{ // imprimi uma mensagem de erro
printf ("\nERRO! Não foi possível abrir a pasta.");
return; // termina a função listadir
}

while (pent = readdir (pdir))
// enquanto houver um diretorio ou arquivo para listar
{
if (pent == NULL)
// se o pent (ponteiro entrada) não retornar nada
{ // imprimi mensagem de erro e sai da função
printf ("\nERRO na inicialização do arquivo!");
return; // termina a função
}
// Imprimi o arquivo ou subpasta encontrado
printf ("%s\n", pent->d_name);

strcpy(novapasta,path);

strcat(novapasta,"\\");
strcat(novapasta,pent->d_name);
pdirteste = opendir( novodir );
// Testa se o subdiretório foi aberto
if (pdirteste == NULL) // não é um subdiretório
{
printf("Arquivo\n");
} else
{
printf("Pasta \n")
closedir( pdirteste );
// desalocando o ponteiro pois abriu a pasta
}
}
// Encerra o ponteiro para o diretório
closedir (pdir);
}

int main ()
{
listadir ("C:\\testec\\");
system("PAUSE");
return 0;
}

Trabalho Prático de LP - PGTI 2oB -DI CEFETMG 3oBimestre

Tralho Prático L P 2o.B DI

Com base no código exemplo, para manipulação de pastas e arquivos, disponibilizado em:

P:\PGTI\Alan\LP\Diretorios

Desenvolver um sistema capaz de listar os arquivos de um caminho (path) configurável, organizando em ordem alfabética crescente ou decrescente, conforme definido pelo usuário.

Dica:

1. para o nome do caminho, utilize duas barras invertidas no lugar de uma apenas. Isso é devido ao compilador fazer uso de uma barra invertida mais o caracter seguinte para compor códigos de caracters especial, como o \n para saltar linha;

2. crie um vetor de strings para armazenar os arquivos da lista e utilize um algoritmo de ordenação (como o visto para ordenar a lista de palavras por quantidade);