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?