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

Ajuda para trabalho da faculdade


FABIO_PE

Pergunta

Boa Noite,

Sou novato em C, estou aprendendo agora (na marra !), e gostaria de uma ajuta para tentar resolver esta bronca !

segue codigo fonte e capos que tenho que completar.

mediante um arquivo de entrada.txt em formato de tag:

Os campos que preciso implementar referem-se a;

imprimir o arquivo em tela, imprimir em arquivo saida1.txt os campos referente ao computador que apresente valor de memorio informado pelo usuário e imprimir arquivo saida2.txt com o conteudo dos dados passado pelo usuario como parametro (sistema operacional e versão).

agradeço quem puder me ajudar.

Fábio César

IMIP

<computador>
<hardware>
<processador>
<fabricante>Intel</fabricante>
<modelo>Core 2 Duo</modelo>
<clock>2.5</clock>
</processador>
<memoria>2048</memoria>
<hd>250</hd>
<opcionais_hardware>
<nome>Placa de video</nome>
<descricao>Nvidia 9600 GT</descricao>
</opcionais_hardware>
<opcionais_hardware>
<nome>Placa de captura</nome>
<descricao>Pinacle</descricao>
</opcionais_hardware>
<opcionais_hardware>
<nome>Webcam</nome>
<descricao>Microsoft 1.3 MP</descricao>
</opcionais_hardware>
</hardware>
<software>
<sistema_operacional>
<nome>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>
</data_instalacao>
</aplicativos>
<aplicativos>
<nome>Adobe Reader</nome>
<versao>9.0</versao>
<data_instalacao>
<dia>17</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
</aplicativos>
</software>
<logistica>
<setor>DTIC</setor>
<responsavel>Joana Maria</responsavel>
<patrimonio>20333</patrimonio>
</logistica>
</computador>
<computador>
<hardware>
<processador>
<fabricante>Amd</fabricante>
<modelo>Athlon</modelo>
<clock>2.2</clock>
</processador>
<memoria>512</memoria>
<hd>120</hd>
<opcionais_hardware>
<nome>Placa de video</nome>
<descricao>Geforce</descricao>
</opcionais_hardware>
</hardware>
<software>
<sistema_operacional>
<nome>Ubuntu</nome>
<versao>8.04</versao>
<data_instalacao>
<dia>12</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
<senha>root</senha>
</sistema_operacional>
<aplicativos>
<nome>Umbrella</nome>
<versao>0.7</versao>
<data_instalacao>
<dia>13</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
</aplicativos>
<aplicativos>
<nome>Anjuta</nome>
<versao>2.23</versao>
<data_instalacao>
<dia>20</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
</aplicativos>
<aplicativos>
<nome>Br.office</nome>
<versao>3.0</versao>
<data_instalacao>
<dia>12</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
</aplicativos>
</software>
<logistica>
<setor>Coorde</setor>
<responsavel>Joaquim Jose</responsavel>
<patrimonio>778899</patrimonio>
</logistica>
</computador>
<computador>
<hardware>
<processador>
<fabricante>Amd</fabricante>
<modelo>Sempron</modelo>
<clock>2.0</clock>
</processador>
<memoria>1024</memoria>
<hd>80</hd>
</hardware>
<software>
<sistema_operacional>
<nome>Windows</nome>
<versao>98</versao>
<data_instalacao>
<dia>19</dia>
<mes>10</mes>
<ano>2006</ano>
</data_instalacao>
<senha>teste</senha>
</sistema_operacional>
<aplicativos>
<nome>Adobe Reader</nome>
<versao>7.0</versao>
<data_instalacao>
<dia>19</dia>
<mes>10</mes>
<ano>2006</ano>
</data_instalacao>
</aplicativos>
</software>
<logistica>
<setor>Coorde</setor>
<responsavel>Joaquim Jose</responsavel>
<patrimonio>1523</patrimonio>
</logistica>
</computador>
<computador>
<hardware>
<processador>
<fabricante>Intel</fabricante>
<modelo>Pentium D</modelo>
<clock>2.8</clock>
</processador>
<memoria>512</memoria>
<hd>80</hd>
<opcionais_hardware>
<nome>Placa de video</nome>
<descricao>Geforce MX4000</descricao>
</opcionais_hardware>
</hardware>
<software>
<sistema_operacional>
<nome>Windows</nome>
<versao>XP</versao>
<data_instalacao>
<dia>07</dia>
<mes>05</mes>
<ano>2007</ano>
</data_instalacao>
<senha>admin</senha>
</sistema_operacional>
</software>
<logistica>
<setor>DTIC</setor>
<responsavel>Joana Maria</responsavel>
<patrimonio>105582</patrimonio>
</logistica>
</computador>
<computador>
<hardware>
<processador>
<fabricante>Apple</fabricante>
<modelo>MacBook</modelo>
<clock>2.4</clock>
</processador>
<memoria>2048</memoria>
<hd>160</hd>
</hardware>
<software>
<sistema_operacional>
<nome>Apple MacOS</nome>
<versao>Leopard</versao>
<data_instalacao>
<dia>19</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
<senha>teste</senha>
</sistema_operacional>
<aplicativos>
<nome>iMovie</nome>
<versao>2.0</versao>
<data_instalacao>
<dia>19</dia>
<mes>10</mes>
<ano>2008</ano>
</data_instalacao>
</aplicativos>
</software>
<logistica>
<setor>Coorde</setor>
<responsavel>Joaquim Jose</responsavel>
<patrimonio>1523</patrimonio>
</logistica>[/CODEBOX]

[CODEBOX]#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 |------------------------------------------------|\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]='';
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 Mônica Bonna
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Não sei o que devo fazer para implementar estas estruturas que ele me pediu para implementar, já tentei usar pritf, fopen e tudo mais e não sei como fazer estou tão bronqueado com isso que nem raciocinar mais eu consigo !

Tentei trabalhar com a variavel entrada mas o compilador da erro, já tentei chamar "l" da erro tambem, já tentei usar scanf e tambem dá errado, tá fod!!!!, já nào estou conseguindo mais nada

Ele quer que eu na primeira imprima na tela o conteudo de entrada.txt, na segunda defina um valor de memória que é passado por captura do teclado depois de passado este valor eu devo copiar o conteudo do computador (tag), com saida tabulada linha em baixo de linha om as caracteristicas do computador, no terceiro devo entrar com os campos tipo do sistema operacional e versao o programa deve procurar estes campos e quando encontrar montar em saida2.txt o numero do tombamento que satisfaça o que foi passado pelo usuario sendo mais de um deve-se colocar linha a baixo de linha.

Link para o comentário
Compartilhar em outros sites

  • 0
O professor já fez quase tudo para você, qual a sua dúvida?

Abraçps.

Não sei o que devo fazer para implementar estas estruturas que ele me pediu para implementar, já tentei usar printf, fopen e tudo mais e não sei como fazer estou tão bronqueado com isso que nem raciocinar mais eu consigo !

Tentei trabalhar com a variavel entrada mas o compilador da erro, já tentei chamar "l" da erro tambem, já tentei usar scanf e tambem dá errado, tá fod!!!!, já não estou conseguindo mais nada

Ele quer que eu na primeira imprima na tela o conteudo de entrada.txt, na segunda defina um valor de memória que é passado por captura do teclado depois de passado este valor eu devo copiar o conteudo do computador (tag), com saida tabulada linha em baixo de linha com as caracteristicas do computador, no terceiro devo entrar com os campos tipo do sistema operacional e versao o programa deve procurar estes campos e quando encontrar montar em saida2.txt o numero do tombamento que satisfaça o que foi passado pelo usuario sendo mais de um deve-se colocar linha a baixo de linha.

Link para o comentário
Compartilhar em outros sites

  • 0

Voce precisa ler o arquivo e armazenar os dados na struct.

Essa é a parte mais difícil.

Leia linha a linha e interpreta as tags.

Aloque memoria para preencher os dados de um computador e ao fim faça os apontamentos da lista.

É meio chato pra fazer pois são vários dados e estão separardos em várias structs, mas não é tão difícil.

Link para o comentário
Compartilhar em outros sites

  • 0
Voce precisa ler o arquivo e armazenar os dados na struct.

Essa é a parte mais difícil.

Leia linha a linha e interpreta as tags.

Aloque memoria para preencher os dados de um computador e ao fim faça os apontamentos da lista.

É meio chato pra fazer pois são vários dados e estão separardos em várias structs, mas não é tão difícil.

Você não poderia me mandar um exemplo de como fazer para manipular estas tags, ler, copiar os campos, gravar etc..?

Link para o comentário
Compartilhar em outros sites

  • 0

Posso até passar um exemplo, mas o correto é voce tentar.

Voce não viu esse conteúdo nas aulas?

A idéia é ler linha a linha e para isso pode usar a função fgets.

fgets(string, tamanho, arquivo);

na variável string voce tem todo o conteúdo da linha do arquivo.

Para achar uma tag leia caracter por caracter até encontrar '<'.

Algo desse tipo:

int i =0;

while(string!='<')

i++;

Agora precisa armazenar o que vem depois em outra string até chegar no caracter '>'.

Se tentar fazer alguma coisa podemos ajudar mais. ok?

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...