Ir para conteúdo
Fórum Script Brasil
  • 0

O que devo Implementar?


Guest Clebson

Pergunta

Oi Gente!!!

Sou iniciante na Linguagem C e já pediram coisa da pesada (eu acho!!!)

É o seguinte gente o Professor pediu que criássemos um sistema de Gestão Patrimonial que permite relacionar todos os bens de uma organização a fim de garantir a sua integridade... e por ai vai!!!!!!!!!

Temos que desenvolver esse projeto em C seguindo a estrutura do código fonte do Anexo I.

No projeto tem um arquivo "entrada.txt (que eu não sei se é pra gente fazer manualmente ou o Programa do Anexo I faz sozinho). Enfim, além desse arquivo "entrada.txt" tem os arquivos "saida1.txt" e "saida2.txt"

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.

E ESSA É A LINGUAGEM PRONTA FALTANDO APENAS A MINHA IMPLEMENTAÇÃO QUE EU NÃO ENTENDI NADA O QUE DEVO FAZER.

SE ALGUÉM PUDER ME AJUDAR, AGRADEÇO MUITO!!! E SE NÃO FOR MUITO EXPLICAR também O QUE NÃO ENTENDI.

LÁ VAI O CÓDIGO FONTE O PROGRAMA:

#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 escreverSaida1(lista *l,char endereco[],int memoria) 
     {
   
     
      //implemente aqui
     }
      
void escreverSaida2(lista *l,char endereco[],char nome[],char versao[]) 
     { 
             
     //implemente aqui 
     
     } 
     
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"); 
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\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]='';
                      printf("\n\tVersao : "); 
                        fflush(stdin); 
                          fgets(versao,TAM_STRING/2,stdin); 
                            versao[strlen(versao)-1]=''; 
                   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'); 

}

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Gastei pelo menos três dias diretão, até de madrugada. Não é muito fácil não. Até existe rotinas que facilitariam como as do std, mas deve utilizar somente comandos básicos, ou seja, só o que deram na faculdade.

Você terá que fazer o controle de 3 listas:

Primeira:Do computador.

Segunda:Do Hardware Opcional.

Terceira:Do aplicativo.

Não posso passar o código, pois em programação há várias formas de resolver um problema, ou seja, se eu postar o código poderei ser prejudicado. O máximo que posso fazer é responder dúvidas. Mas para isso elas precisam existir. Se você não sabe nem o que é para fazer então não prestou ou não foi na aula. Precisa se dedicar mais aos seus estudos.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá

Eu tb estou com o mesmo problema, eu consigo ler e separar o texto, mas não consegui implementar a lista corretamente.

Quando leio as apostilas compreendo a teoria perfeitamente, mas na hora de aplicar eu realmente não consigo.

finalmente como e quais variáveis das structs devo criar e como relacionál-as? a respeito do codigo, como ler e escrever nos txts, na internet tem tudo.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...