Trabalho em C , HELP!!!

1. Trabalho em C , HELP!!!

Wisnael de souza
wisnael

(usa Outra)

Enviado em 30/10/2008 - 23:02h

Por gentileza alguém poderia me dar uma luz nessa questão?
Não estou conseguindo fazer esse trabalho pra o 2° período em Analise , e preciso entregar semana que vem dia 6 .
TAREFA Desenvolver em linguagem C, seguindo estrutura do código fonte do anexo I, um sistema para gerenciar o patrimônio de computadores de uma organização.
ENTRADA Consiste em um arquivo texto com o nome entrada.txt contendo uma linguagem de marcação textual descrita no anexo II. No anexo III há um exemplo de arquivo de entrada. SAÍDA A saída consiste na emissão de relatórios, descritos a seguir:
Relatório 1: arquivo texto com o nome saida1.txt contendo somente o número de patrimônio dos computadores (um por linha) que satisfaçam à condição de memória RAM inferior a um valor informado pelo usuário.
Relatório 2: arquivo texto com o nome saida2.txt contendo somente o número de patrimônio dos computadores (um por linha) que satisfaçam à condição de possuírem um aplicativo com uma determinada versão, dados informados pelo usuário.


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define TAM_STRING 30
FILE *entrada; typedef struct
{ int dia;
int mes;
int ano;
}
data;
typedef struct opcionais_hardware }
char nome[TAM_STRING];
char descricao[TAM_STRING*2];
struct opcionais_hardware *proximo;
} opcionais_hardware;
typedef struct aplicativos
{ char nome[TAM_STRING];
char versao[TAM_STRING/2];
data data_instalacao;
struct aplicativos *proximo;
} aplicativos;
typedef struct
{ char fabricante[TAM_STRING/2];
char modelo[TAM_STRING/2];
float clock;
} processador;
typedef struct
{ processador cpu; int memoria;
int hd; opcionais_hardware *op_hw;
}
hardware;

typedef struct
{ char nome[TAM_STRING];
char versao[TAM_STRING/2];
data data_instalacao;
char senha[TAM_STRING]; } sistema_operacional;
typedef struct
{ sistema_operacional so;
aplicativos *app; }
software; typedef struct
{ char setor[TAM_STRING];
char responsavel[TAM_STRING];
int patrimonio; } logistica;
typedef struct computador { hardware hw;
software sw;
logistica logt;
} computador;
typedef struct no_computador
{ computador *pc;
struct no_computador *proximo;
} no_computador;
typedef struct lista { no_computador *inicio; no_computador *fim;
} lista;
lista *lerArquivo(char endereco[])
{ lista *l=NULL;

//implemente aqui return l;

}
void imprimir(lista *l)
{ no_computador *aux=l->inicio;
while (aux!=NULL)
{ printf("fabricante: %s\n",aux->pc-
>hw.cpu.fabricante);
printf("modelo: %s\n",aux->pc->hw.cpu.modelo);
printf("clock: %f\n",aux->pc->hw.cpu.clock);
printf("memoria: %d\n",aux->pc->hw.memoria);
printf("hd: %d\n",aux->pc->hw.hd);
opcionais_hardware *aux1=aux->pc->hw.op_hw;
while (aux1!=NULL)
{
printf("opcional: %s %s\n",aux1->nome,aux1->descricao);
aux1=aux1->proximo;
} printf("s.o.: %s\n",aux->pc->sw.so.nome);
printf("versao: %s\n",aux->pc->sw.so.versao);
printf("instalacao: %d/%d/%d\n",aux-
>pc->sw.so.data_instalacao.dia,aux->pc->sw.so.data_instalacao.mes,aux-
>pc->sw.so.data_instalacao.ano);
printf("senha: %s\n",aux->pc->sw.so.senha);
aplicativos *aux2=aux->pc->sw.app;
while (aux2!=NULL)
{
printf("aplicativos: %s %s %d/%d/%d\n",aux2->nome,aux2->versao,aux2-
>data_instalacao.dia,aux2-
>data_instalacao.mes,aux2->data_instalacao.ano);
aux2=aux2->proximo;
}
printf("setor: %s\n",aux->pc->logt.setor);
printf("responsavel: %s\n",aux->pc->logt.responsavel);
printf("patrimonio: %d\n\n",aux->pc->logt.patrimonio);
aux=aux->proximo; }
}
void menu() { system("cls");
printf("\n |------------------------------------------------|\n");
printf(" | |\n"); printf(" | UNIVERSIDADE DO TOCANTINS |\n");
printf(" | |\n"); printf(" |------------------------------------------------|\n");
printf(" | |\n");
printf(" | <1> Abrir \"entrada.txt\" |\n");
printf(" | <2> Imprimir |\n");
printf(" | <3> Relatorio 1 (\"saida1.txt\") |\n");
printf(" | <4> Relatorio 2 (\"saida2.txt\") |\n");
printf(" | <5> Sair |\n"); printf(" | |\n"); printf(" |------------------------------------------------|\n\n");
printf("\t\tOpcao: ");
} int main() { lista *l=NULL;
char opcao; do { menu();
fflush(stdin)
; opcao=getchar();
switch(opcao) { case '1': l=lerArquivo("entrada.txt");
system("cls");
printf("\n\tArquivo aberto com sucesso!\n\n\n");
system("pause"); break; case '2': system("cls");
if (l!=NULL) imprimir(l);
else printf("\n\tLista vazia!\n\n\n");
system("pause");
break;
case '3': system("cls");
if (l!=NULL)
{ int memoria;
printf("\n\n\tMemoria menor que : ");
scanf("%d",&memoria);
escreverSaida1(l,"saida1.txt",memoria);
printf("\n\tRelatorio 1 emitido com sucesso!\n\n\n");
}
else printf("\n\tNao foi possivel emitir relatorio 1!\n\n\n");
system("pause");
break; case '4': system("cls"); if (l!=NULL) { char nome[TAM_STRING]; char versao[TAM_STRING/2];
printf("\n\n\tNome : ");
fflush(stdin);
fgets(nome,TAM_STRING,stdin);
nome[strlen(nome)-1]='{TTEXTO}';
printf("\n\tVersao : ");
fflush(stdin);
fgets(versao,TAM_STRING/2,stdin);
versao[strlen(versao)-1]='{TTEXTO}';
escreverSaida2(l,"saida2.txt",nome,versao);
printf("\n\tRelatorio 2 emitido com sucesso!\n\n\n");
} else printf("\n\tNao foi possivel emitir relatorio 2!\n\n\n");
system("pause");
break;
default: if (opcao!='5')
continue; }
} while
(opcao!='5');
}

OBRIgado desde já !!!



  


2. Re: Trabalho em C , HELP!!!

Julian Castaman
maninhx

(usa Slackware)

Enviado em 30/10/2008 - 23:49h

hahaha. cara acabei de postar a mesma duvida. espero que alguem nos ajude.



3. Re: Trabalho em C , HELP!!!

Elzo dos Santos
Elzo Santos

(usa Debian)

Enviado em 31/10/2008 - 00:49h

Jovem, se vc nao falar qual sua duvida exatamente nao poderemos te ajudar.
A galera vai pensar que vc quer que façamos o exercicio pra ti.
Especifique ai...blz


4. Uma luz

Arthur Moisés da Costa Borges
arthurmoises

(usa Slackware)

Enviado em 31/10/2008 - 10:43h

tenho um amigo que tem o mesmo trabalho pra fazer.

Olha o que precisamos:

Devemos implementar as partes que dizem: "implemente aqui"

Então, devemos criar uma função/método que leia um arquivo de texto e outras duas que imprimam(já em um documento de texto .txt) a saída do problema.

Minha grande dúvida é:

Como faço para ler o arquivo de texto(que está previamente formatado em "<alguma coisa />")
e dirijo as partes certas para um array?


Devo usar a função fscan? ou fgets? de qualquer forma, minha principal dúvida é como ler o texto formatado em um bloco de notas e pegar as partes que eu quero.


Agradeço desde já



5. Re: Trabalho em C , HELP!!!

Julian Castaman
maninhx

(usa Slackware)

Enviado em 31/10/2008 - 20:47h

nos ajudem a fazer a entrada dos dados.

Assim
ENTRADA
Consiste em um arquivo texto com o nome entrada.txt contendo uma linguagem de
marcação textual.

Ex:
<computador>
<hardware>
<processador>
<fabricante>Intel</fabricante>
<modelo>Core 2 Duo</modelo>
<clock>2.5</clock>
</processador>
<memoria>2048</memoria>
<hd>250</hd>
<opcionais>
<nome>Placa de video</nome>
<descricao>NVIDIA 9600 GT</descricao>
</opcionais>
<opcionais>
<nome>Placa de captura</nome>
<descricao>Pinacle</descricao>
</opcionais>
<opcionais>
<nome>Webcam</nome>
<descricao>Microsoft 1.3 MP</descricao>
</opcionais>
</hardware>
<software>
<sistema_operacional>
<nome>Microsoft Windows</nome>
<versao>Vista</versao>
<data_instalacao>
<dia>16</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
<senha>123mudar</senha>
</sistema_operacional>
<aplicativos>
<nome>Br.office</nome>
<versao>3.0</versao>
<data_instalacao>
<dia>16</dia>
<mes>10</mes>
<ano>2008</ano>

nos ajudem.


6. Re: Trabalho em C , HELP!!!

Julian Castaman
maninhx

(usa Slackware)

Enviado em 01/11/2008 - 10:03h

No primeiro //implemente aqui fiz como está abaixo.


FILE *entrada;
entrada = fopen ("entrada.txt","r");
if (entrada == NULL)
{
printf("\nOcorreu um erro. O arquivo não foi aberto.");
}

está certo?


7. Re: Trabalho em C , HELP!!!

Ewerton Ferreira
EwertonPB

(usa Nenhuma)

Enviado em 01/11/2008 - 16:31h


O grande Q da questão é: fazer a leitura dos dados entre as tags ( <exemplo> e </exemplo> ), armazenando-as nas variáveis respectivas da estrutura criada, alimentando-as com os dados do arquivo entrada.txt.


8. Re: Trabalho em C , HELP!!!

Julian Castaman
maninhx

(usa Slackware)

Enviado em 01/11/2008 - 20:10h

o primeiro //implemente aqui está pronto.
ja testei, abriu o arquivo.
agora preciso o segundo //implemente aqui.
nele eu preciso buscar somente alguns dados dentro do arquivo entrada.txt e gerar um arquivo saida1.txt com os dados buscados.

como fazer?


9. Re: Trabalho em C , HELP!!!

Julian Castaman
maninhx

(usa Slackware)

Enviado em 01/11/2008 - 21:16h

conforme vou envoluindo (lentamente) vou postando aqui para ver se alguem ajuda.

Agora Preciso buscar determinado dado em um arquivo .txt externo.
Ex:
o arquivo contem varias linhas mas elas está dentro de TAGs.
Conteudo do arquivo qual preciso buscar tal dado:
<computador>
<hardware>
<processador>
<fabricante>Intel</fabricante>
<modelo>Core 2 Duo</modelo>
<clock>2.5</clock>
</processador>
<memoria>2048</memoria>
<hd>250</hd>
<opcionais>
Entao eu preciso que ele busque o conteudo dentro das tag <hd> </hd>, mas nao to conseguindo.
Como faco.


10. Re: Trabalho em C , HELP!!!

Julian Castaman
maninhx

(usa Slackware)

Enviado em 02/11/2008 - 18:57h

consegui um ex.
<produto>exemplo</produto>

arquivo = abrir text.txt
caractere = pega caractere arquivo

se caractere = '<'
caractere = pega caractere arquivo

enquanto caractere != '>'
tag = tag + caractere
caractere = pega caractere arquivo
final

caractere = pega caractere arquivo

enquanto caractere != '<'
conteudo = conteudo + caractere
caractere = pega caractere arquivo
final
final
ai to interpretand0o as formas de fazer passando para os codigos em C mas parrei na linha da tag = tag.
vejo como está o meu código.
entrada = fopen ("entrada.txt","r");
int patrimonio;

if (entrada==NULL) perror ("Error opening file");
else
{
do {
patrimonio = fgetc (entrada);

patrimonio != '>'
tag = tag + patrimonio
patrimonio = fgetc(entrada.txt);
final

caractere = pega caractere arquivo

enquanto caractere != '<'
conteudo = conteudo + caractere
caractere = pega caractere arquivo
final
final




11. Com o mesmo problema

lincoln
lincolnfunec

(usa Suse)

Enviado em 04/11/2008 - 16:39h

Estamos com o mesmo problema aqui em BH, ainda nao conseguimos avançar neste programa, voce conseguiu algo?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts