Brunoaa Postado Outubro 27, 2011 Denunciar Share Postado Outubro 27, 2011 Desenvolva um projeto para cadastrar e listar itens de um laboratório em umarquivo.O programa deve ter um menu principal com 4 opções: cadastrar um novoitem, gravar novos itens no arquivo, listar os itens armazenados no arquivo eencerrar programa.Para inserir um novo item, os dados informados pelo usuário devem sergravados em membros de uma variável estruturada, e esta então, deverá sergravada em um novo nó de uma lista encadeada.Para gravar os novos itens no arquivo, deve-se percorrer a lista encadeada leros dados dos nós e gravar no arquivo. Depois de efetuada a gravação, a listadeve ser liberada.Para listar o conteúdo do arquivo, deve-se ler linha a linha, gravando os dadosnuma variável estruturada, e esta então, deverá ser gravada em um novo nó deuma lista encadeada. Finalizada a leitura do arquivo, deve-se imprimir oconteúdo da lista encadeada na tela do computador.Obs1: Cada item do laboratório deve conter ao menos: nome, quantidadeexistente no laboratório, número de patrimônio, e 2 outras propriedades do item(cor, voltagem, sistema operacional, fabricante, material do qual é feito, etc).Essas duas propriedades mencionadas deve ser comum a todos os itenscadastrados.Obs2: Obrigatoriamente usar (cria-lo) um TAD Lista.Obs3: Cadastrar ao menos 10 itens do laboratório.O QUE EU ESCREVI ATÉ AGORA NO MEU PROGRAMA ESTÁ ABAIXO, EU NÃO SEI COMO DECLARAR A FUNÇÃO GRAVAR, POR FAVOR ME AJUDEM.... MUITO OBRIGADO...#include<stdio.h>#include<stdlib.h>char i;typedef struct tipo_laboratorio{ char nome, cor, fabricante; double quantidade, numero; struct item_laboratorio *proximo;}TADLista;void cadastrar(TADLista ***ab);void gravar(TADLista **ab);void listar(TADLista *ab);int main(){ TADLista *ab = NULL; TADLista *noatual; char q; do { printf (" \nOpcoes\n "); printf ("C ou c -> Cadastrar\n"); printf ("G ou g -> Gravar\n"); printf ("L ou l -> Para Listar\n"); printf ("S ou s -> Sair"); scanf ("%c",&q); switch (q) { case 'C': case 'c': cadastrar(&ab); i++; break; case 'G': case 'g': gravar(&ab); break; case 'l': case 'L': listar(&ab); break; case 'S': case 's': break; default: printf ("\n\n\n Opcao não Valida! Tente Novamente!\n\n\n"); } fflush (stdin); } while ((q !='s') && (q != 'S')); noatual = ab; while (noatual != NULL) { ab = noatual -> proximo; free (noatual); noatual = ab; }}void listar (TADLista *noatual){ int i=0; while (noatual != NULL) { i++; printf ("\n\nNome: %d \nQuantidade: %f \nCor: %d \nFabricante: %d", i, noatual->nome, noatual->quantidade, noatual->cor, noatual->fabricante); noatual = noatual->proximo; }}void cadastrar(TADLista ***ab){ TADLista *noatual, *nonovo; int name, corr, fabric; double quant; printf ("\n Nome do item: "); scanf ("%d", &name); printf ("\n Cor do intem: "); scanf ("%d", &corr); printf ("\n Fabricante do item: "); scanf ("%d", &fabric); printf ("\n Quantidade de itens: "); scanf ("%lf", &quant); if (*ab == NULL) { *ab = (TADLista ***) malloc (sizeof(TADLista)); (**ab)->nome = name; (**ab)->cor = corr; (**ab)->fabricante = fabric; (**ab)->quantidade = quant; (**ab)->proximo = NULL; } else { noatual = *ab; while (noatual->proximo != NULL) noatual = noatual->proximo; nonovo = (TADLista *) malloc (sizeof(TADLista)); nonovo-> nome = name; nonovo-> cor = corr; nonovo-> fabricante = fabric; nonovo-> quantidade = quant; noatual-> proximo = nonovo; }}void gravar (TADLista *ab){ } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Brunoaa
Desenvolva um projeto para cadastrar e listar itens de um laboratório em um
arquivo.
O programa deve ter um menu principal com 4 opções: cadastrar um novo
item, gravar novos itens no arquivo, listar os itens armazenados no arquivo e
encerrar programa.
Para inserir um novo item, os dados informados pelo usuário devem ser
gravados em membros de uma variável estruturada, e esta então, deverá ser
gravada em um novo nó de uma lista encadeada.
Para gravar os novos itens no arquivo, deve-se percorrer a lista encadeada ler
os dados dos nós e gravar no arquivo. Depois de efetuada a gravação, a lista
deve ser liberada.
Para listar o conteúdo do arquivo, deve-se ler linha a linha, gravando os dados
numa variável estruturada, e esta então, deverá ser gravada em um novo nó de
uma lista encadeada. Finalizada a leitura do arquivo, deve-se imprimir o
conteúdo da lista encadeada na tela do computador.
Obs1: Cada item do laboratório deve conter ao menos: nome, quantidade
existente no laboratório, número de patrimônio, e 2 outras propriedades do item
(cor, voltagem, sistema operacional, fabricante, material do qual é feito, etc).
Essas duas propriedades mencionadas deve ser comum a todos os itens
cadastrados.
Obs2: Obrigatoriamente usar (cria-lo) um TAD Lista.
Obs3: Cadastrar ao menos 10 itens do laboratório.
O QUE EU ESCREVI ATÉ AGORA NO MEU PROGRAMA ESTÁ ABAIXO, EU NÃO SEI COMO DECLARAR A FUNÇÃO GRAVAR, POR FAVOR ME AJUDEM.... MUITO OBRIGADO...
#include<stdio.h>
#include<stdlib.h>
char i;
typedef struct tipo_laboratorio
{
char nome, cor, fabricante;
double quantidade, numero;
struct item_laboratorio *proximo;
}TADLista;
void cadastrar(TADLista ***ab);
void gravar(TADLista **ab);
void listar(TADLista *ab);
int main()
{
TADLista *ab = NULL;
TADLista *noatual;
char q;
do
{
printf (" \nOpcoes\n ");
printf ("C ou c -> Cadastrar\n");
printf ("G ou g -> Gravar\n");
printf ("L ou l -> Para Listar\n");
printf ("S ou s -> Sair");
scanf ("%c",&q);
switch (q)
{
case 'C':
case 'c':
cadastrar(&ab);
i++;
break;
case 'G':
case 'g':
gravar(&ab);
break;
case 'l':
case 'L':
listar(&ab);
break;
case 'S':
case 's':
break;
default:
printf ("\n\n\n Opcao não Valida! Tente Novamente!\n\n\n");
}
fflush (stdin);
} while ((q !='s') && (q != 'S'));
noatual = ab;
while (noatual != NULL)
{
ab = noatual -> proximo;
free (noatual);
noatual = ab;
}
}
void listar (TADLista *noatual)
{
int i=0;
while (noatual != NULL)
{
i++;
printf ("\n\nNome: %d \nQuantidade: %f \nCor: %d \nFabricante: %d", i, noatual->nome, noatual->quantidade, noatual->cor, noatual->fabricante);
noatual = noatual->proximo;
}
}
void cadastrar(TADLista ***ab)
{
TADLista *noatual, *nonovo;
int name, corr, fabric;
double quant;
printf ("\n Nome do item: ");
scanf ("%d", &name);
printf ("\n Cor do intem: ");
scanf ("%d", &corr);
printf ("\n Fabricante do item: ");
scanf ("%d", &fabric);
printf ("\n Quantidade de itens: ");
scanf ("%lf", &quant);
if (*ab == NULL)
{
*ab = (TADLista ***) malloc (sizeof(TADLista));
(**ab)->nome = name;
(**ab)->cor = corr;
(**ab)->fabricante = fabric;
(**ab)->quantidade = quant;
(**ab)->proximo = NULL;
}
else
{
noatual = *ab;
while (noatual->proximo != NULL)
noatual = noatual->proximo;
nonovo = (TADLista *) malloc (sizeof(TADLista));
nonovo-> nome = name;
nonovo-> cor = corr;
nonovo-> fabricante = fabric;
nonovo-> quantidade = quant;
noatual-> proximo = nonovo;
}
}
void gravar (TADLista *ab)
{
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.