• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

astrix

ajuda por favor

9 mensagens neste tópico

amigos preisava da vossa ajuda para terminar um programa q tenho q entregar segunda -feira mas cheguei a um ponto q nao consigo acabar nem por a funcar o q ja fiz por isso precisava da vossa sabedoria por favor.vou deixar em anexo o q era para fazer e o q ja fiz  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui ninguem te poderá ajudar o programa é em C e estás na parte do Visual Basic.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

amigos preisava da vossa ajuda para terminar um programa q tenho q entregar segunda -feira mas cheguei a um ponto q nao consigo acabar nem por a funcar o q ja fiz por isso precisava da vossa sabedoria por favor.vou deixar em anexo o q era para fazer e o q ja fiz  :thumbsup:

O enunciado do trabalho diz que tem de ser realizado na linguagem C, alguma razão em especial por estares a utilizar C++?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podem usar expressões regulares para fazer o parsing?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pequeno exemplo de como fazer o parsing da URL:

Foi a primeira maneira que me veio à cabeça de fazer isto sem usar expressões regulares, não tem muito error handling mais deu para treinar string handling em C. ;)

/*
* 
* Resources:
* 
* http://en.wikipedia.org/wiki/URL
* 
* http://en.wikipedia.org/wiki/URI_scheme
* 
*/

#include <stdio.h>
#include <string.h>

#define MAX_PROTOCOL 12
#define MAX_DOMAIN 255
#define MAX_PATH 255
#define MAX_URL 1024
#define MAX_QUERY 255

char PROTOCOLS[][MAX_PROTOCOL] = {"http", "ftp", "rtps", "https"};

struct URL
{
char url[MAX_URL];
char protocol[MAX_PROTOCOL];
char domain[MAX_DOMAIN];
char path[MAX_PATH];
char query[MAX_QUERY];
};

// TODO: case insentive comparison
int validateProtocol(char PROTOCOLS[][MAX_PROTOCOL], int SIZE, char protocol[MAX_PROTOCOL])
{
int i;
for(i = 0; i < SIZE; i++)
{
	printf("%s %s\n", PROTOCOLS[i], protocol);

	if(strcmp(protocol, PROTOCOLS[i]) == 0)
	{
		return 1;	
	}
}

return 0;
}

int main(int argc, char** argv)
{	
char urlstr[MAX_URL];
strcpy(urlstr, "http://www.example.com/index.php?foo=bar#anchor");

struct URL url;
strcpy(url.url, urlstr);
printf("URL: %s\n", url.url);

//http://triton.com.pt

char *ptr = strtok(urlstr, "://");
strcpy(url.protocol, ptr);
printf("protocol: %s\n", url.protocol);

if(strchr(url.url, '/') != NULL)
{
	ptr = strtok(NULL, "/");
	strcpy(url.domain, ptr);
	printf("domain: %s\n", url.domain);
}
else
{
	strcpy(url.domain, ptr);
}

if(strchr(url.url, '?') != NULL)
{	
	ptr = strtok(NULL, "?");
	strcpy(url.path, ptr);
	printf("path: %s\n", url.path);
}

if(strchr(url.url, '#') != NULL)
{	
	ptr = strtok(NULL, "#");
	strcpy(url.query, ptr);
	printf("query: %s\n", url.query);
}
  	
  	//printf("valid: %d\n", validateProtocol(PROTOCOLS, sizeof(PROTOCOLS)/sizeof(PROTOCOLS[0]), url.protocol));
  	
return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

amigo triton muito obrigado mesmo pela tua ajuda...mesmo muito obrigado...diz-me so uma coisa no q me fizeste esta tudo o q eu ja tinha feito mais o q me faltava fazer certo,so que de outra maneira e isso.agora se fore assim peçote so um pequeno ou grande favor nao sei,uma pequena explicaçao dele se nao fore pedir muito nem abusar da tua boa bontade claro, ou o q eu estava a fazer mal,isto porque eu tenho q o ir apresentar e para ter umas noçoes , para me preparar para o q ele me possa perguntar.mais uma vez e penso q nunca e demais pois e dificil encontrar pessoas como tu disposto a ajudar sem nada em troca um ganda abraço e o meu sincero agradecimento.espero um dia poder retribuir-te da mesma maneira ;)

Eu não cheguei a analizar o teu código porque está uma autêntica confusão... tens de começar a identar o código para que se possa ler. :)

Quanto ao código que eu postei, não faz a parte 2 do trabalho, ou seja, a análise de logs. Agora o que eu te aconselhava a fazer era separar o meu código em funções para depois se tornar mais simples se quiseres adicionar a tal funcionalidade para analisar os logs a das URLs. O método do meu código é dividir a string em partes cada vez mais pequenas. Primeiro procura por "://" e divide a URL em duas partes, e assim sucessivamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok amigo triton mas continuo na mesma situaçao q e faltame a 2 parte e como tenho q entregar na segunda feira estou tramado porque nao me estou a ver com capacidade para o acabar,por isso te podia essa ajuda para o acabar e eu vou tentar perceber o q esta feito no codigo pois ele vai fazer perguntas sobre ele e provabel q me pessa depois para acrescentar algo,senao fore pedir muito mais uma vez ajuda.me la.... :-[

astrix, já te dei um exemplo de como fazer. Como deves perceber não te vou fazer o trabalho todo. Faz o que eu te disse no outro post e começar a adicionar a funcionalidade da parte 2. Se tiveres dúvidas, estaremos cá para te ajudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

amigo triton nao querendo estar a abusar da tua boa bontade,e assim eu nao estou nada a bontade com programaçao em c porque nas aulas faziamos em visualbasic6.0c++,e em casa ia dando um toques em c++ e agora como disseste e bem ele pede em c.entao nem sequer consigo por a correr o q me fizeste da-me um erro a compilar e nao o deixa correr,entao muito menos estou a consegui fazer a parte 2,por isso se me puderes ajudar em mais alguma coisa ficaria grato.o programa q saquei foi o dev c++ estando a utilizar a opçao em c e nao estou a conseguir fazer nenhum estive aqui toda a tarde e nada...o q estarei a fazer de errado... :wallbash:

Acabei de testar no Dev-C++ e não me deu erro a compilar. Quanto ao problema da consola que desaparece, podes usar um system("pause"); ou um getch();, ou então corres o programa pela consola. ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Facilita imenso, se colocares logo o código. Em forma de anexo até passa despercebido à maioria do pessoal :thumbsup:

Bons posts :P

abraços, HecKel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora