Enviado em 17/11/2018 - 16:40h
E aí, pessoa tudo certo?#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct kabum
{
char desc [30];
int cod;
float valor;
struct kabum *ant;
} p;
p *novo, *topo=NULL;
int i=0;
int quant;
FILE *arquivo;
int inserir ()
{
printf("\n\n QUANTOS PRODUTOS QUER CADASTRAR?: ");
scanf("%d",&quant);
for (i=0; i<quant; i++)
{
novo=(p *) malloc (2*sizeof(p));
fflush(stdin);
printf("\n\n PRODUTO: ");
gets(novo->desc);
printf(" CODIGO: ");
scanf("%d",&novo->cod);
printf(" VALOR: R$");
scanf("%f",&novo->valor);
novo->ant=NULL;
if(topo==NULL) //pilha vazia?
{
topo=novo;
}
else
{
novo->ant=topo;
topo=novo;
}
}
return (0);
}
int mostrar ()
{
p *tmp;
tmp=topo;
if (tmp==NULL) //aqui ele testa p/ saber se a pilha está fazia
{
printf ("\n\n PILHA VAZIA! INSIRA UM DADO E TENTE NOVAMENTE.\n");
}
else
{
while (tmp!=NULL)
{
printf("\n\n PRODUTO: %s\n", tmp->desc);
printf(" CODIGO: %d\n",tmp->cod);
printf(" VALOR: R$%0.2f\n\n",tmp->valor);
tmp=tmp->ant;
}
}
return (0);
}
int deletar ()
{
char alerta;
p *extra;
extra = topo;
if (topo == NULL)
{
printf ("\n\n PILHA VAZIA!\n");
}
else
{
printf("\n\n TEM CERTEZA DE DESEJA EXCLUIR A PILHA? (S/N): ");
scanf("%c",&alerta);
alerta=tolower(alerta);
if (alerta=='s')
{
topo = topo -> ant;
free(extra);
printf("\n PILHA DELETADA! \n");
}
if (alerta=='n')
{
printf("\n PILHA NAO DELETADA! \n");
}
if (alerta!='s' && alerta!='n')
{
printf("\n\n OPCAO INVALIDA\n");
}
}
return(0);
}
int salvar()
{
p *tmp;
tmp=topo;
arquivo=fopen("text.txt","wb");
/* if (tmp==NULL)
{
printf("\n\n ERRO AO SALVAR, PILHA ESTA VAZIA. INSIRA UM DADO E TENTE NOVAMENTE! \n");
}*/
while (tmp!=NULL)
{
fprintf(arquivo,"\n\n PRODUTO: %s \n",tmp->desc);
fprintf(arquivo," CODIGO: %d \n",tmp->cod);
fprintf(arquivo," VALOR: %f ",tmp->valor);
tmp=tmp->ant;
}
fclose(arquivo);
printf("\n\n ARQUIVO SALVO COM SUCESSO!\n");
return 0;
}
int abrir()
{
p *tmp;
tmp=topo;
arquivo=fopen("text.txt","rt");
if (arquivo == NULL)
{
printf("\n\n NAO FOI POSSIVEL ABRIR O ARQUIVO. SALVE E TENTE NOVAMENTE! \n");
}
char frase [10000];
while (fgets(frase, 1000,arquivo)!=NULL)
{
printf("%s\n",frase);
}
fclose(arquivo);
return 0;
}
void sobre ()
{
printf("\n\n");
printf(" *================================ SOBRE ================================*\n");
printf(" | |\n");
printf(" |PROGRAMA CRIADO UTILIZANDO ALOCACAO DINAMICA, STRUCTS E PONTEIROS, COMO|\n");
printf(" |FORMA DE AVALIACAO DA DISCIPLINA DE ESTRUTURA DE DADOS, DO PROFESSOR: |\n");
printf(" |GUSTAVO QUIRINO E APRESENTADO EM SALA DE AULA, COM A FINALIDADE DE |\n");
printf(" |OBTER UMA DAS NOTAS DA SEGUNDA UNIDADE. |\n");
printf(" | |\n");
printf(" | IDENTIFICACAO |\n");
printf(" | |\n");
printf(" |IFBA - CAMPUS BARREIRAS |\n");
printf(" |TURMA: 732 |\n");
printf(" |CURSO: INFORMATICA |\n");
printf(" |PROFESSOR: GUSTAVO QUIRINO |\n");
printf(" |COMPONENTES: LUCAS GOMES, MATEUS SENE E RICARDO CARVALHO |\n");
printf(" | |\n");
printf(" =========================================================================\n");
}
int main ()
{
char op_menu=0, op_menu_interno=0; /*variaveis zeradas porque pode ser que o programa seja exacutado mais de uma vez
por isso eu zerei todas, para não pegar os valores das vezes anteriores. A cada nova execução
todas são zeradas*/
do
{
printf("\n\n");
printf(" *======================= MENU PRINCIPAL =========================*\n");
printf(" | |\n");
printf(" | |\n");
printf(" | A - INSERIR B - MOSTRAR |\n");
printf(" | |\n");
printf(" | C - DELETAR D - EDITAR |\n");
printf(" | |\n");
printf(" | E - BUSCAR F - SALVAR |\n");
printf(" | |\n");
printf(" | G - ABRIR H - SOBRE |\n");
printf(" | |\n");
printf(" | S - SAIR |\n");
printf(" | |\n");
printf(" | |\n");
printf(" ==================================================================\n");
fflush(stdin);
printf("\n Digite...: ");
scanf("%c", &op_menu);
op_menu=tolower(op_menu);
fflush(stdin); //limpa o buffer do teclado
switch(op_menu)
{
case 'a' :
fflush(stdin);
system("cls"); //limpa a tela
inserir();
printf("\n");
do
{
printf(" 0 - Menu principal: ");
scanf("%s",&op_menu_interno);
}
while (op_menu_interno!='0');
system("cls");
break;
fflush(stdin);
case 'b':
system("cls");
mostrar();
printf("\n");
do
{
printf(" 0 - Menu principal: ");
scanf("%s",&op_menu_interno);
}
while (op_menu_interno!='0');
system("cls");
break;
case 'c':
fflush(stdin);
system("cls");
deletar();
printf("\n");
do
{
printf(" 0 - Menu principal: ");
scanf("%s",&op_menu_interno);
}
while (op_menu_interno!='0');
system("cls");
break;
fflush(stdin);
case 'd':
fflush(stdin);
system("cls");
printf("você digitou: 4");
printf("\n");
do
{
printf(" 0 - Menu principal: ");
scanf("%s",&op_menu_interno);
}
while (op_menu_interno!='0');
system("cls");
break;
fflush(stdin);
case 'e':
case 'f':
fflush(stdin);
system("cls");
salvar();
printf("\n");
do
{
printf(" 0 - Menu principal: ");
scanf("%s",&op_menu_interno);
}
while (op_menu_interno!='0');
system("cls");
break;
case 'g':
fflush(stdin);
system("cls");
abrir();
printf("\n");
do
{
printf(" 0 - Menu principal: ");
scanf("%s",&op_menu_interno);
}
while (op_menu_interno!='0');
system("cls");
break;
case 'h':
system("cls");
sobre();
printf("\n");
do
{
printf(" 0 - Menu principal: ");
scanf("%s",&op_menu_interno);
}
while (op_menu_interno!='0');
system("cls");
break;
case 's':
system("cls");
printf("\n");
printf("Finalizando programa...");
printf("\n");
exit(0);
break;
default:
system("cls");
printf("Codigo invalido! Digite novamente");
break;
}
}
while (op_menu!=5);
return (0);
}
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Youtube e networkmeneger para de funcionar (5)
Minha rede tem um espaço invisível que não dá pra digitar o nome da re... (1)
Pedagogia no brasil não passa de alfabetização por m4sturbação mental ... (2)
compilação samba 4.22 rock linux 9.5 (3)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (7)