Array
(
)

DESAFIO EM C

Clemente
   - 01 nov 2008

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á !!!