Enviado em 13/12/2015 - 14:08h
Pessoal faz um tempinho eu estava com duas funções em meu programa, a exclusão e a alteração. Bom a exclusão consegui fazer, porem a alteração ainda não consegui terminar. Meu professor me deu algumas dicas de colocar um "sub-menu" e perguntar o usuário o que ele gostaria de alterar (modelo, marca, tela e etc...) esse menu tá em cometário no programa por enquanto e outra coisa que ele sugeriu foi usar a strcpy, mas não estou conseguindo me virar direito. Por favor se vocês puderem me ajudar, agradeço. :)#define MAX 100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct celular
{
char marca[15];
char modelo[25];
char processador[10];
char memoria [8];
char tela [4];
char inter [4];
char sisopera [15];
char valor [10];
};
typedef struct celular TCelular;
struct listaDeCelulares
{
unsigned ncel; // Número de celulares na lista
TCelular celulares[MAX];
};
typedef struct listaDeCelulares TListaCelulares;
void mostreCelular(TCelular cel)
{
printf("%-12s",cel.marca);
printf("%-15s",cel.modelo);
printf("%-8s",cel.processador);
printf("%-7s",cel.memoria);
printf("%-4s",cel.tela);
printf("%-4s",cel.inter);
printf("%-15s",cel.sisopera);
printf("%-9s",cel.valor);
printf("\n");
}
void mostreListaDeCelulares(TListaCelulares *lis)
{
int i;
printf("\n\n ----------- Lista de Celulares ------------\n");
printf(" MARCA-------MODELO---------PROCES.-MEM.--TELA-NET-S.O.-----------VALOR\n");
for(i=0; i<lis->ncel; i++) {
printf(" ");
mostreCelular(lis->celulares[i]);
printf("\n");
}
printf("\n\n");
}
int buscaCelular(TListaCelulares *lis, TCelular cel)
{
int i;
for(i=0; i<lis->ncel; i++)
if(strcmp(cel.modelo,lis->celulares[i].modelo) == 0)
printf("\n");
return i;
return -1;
}
int buscaCelularmodelo(TListaCelulares *lis, TCelular cel)
{
int i;
for(i=0; i<lis->ncel; i++)
if(strcmp(cel.modelo,lis->celulares[i].modelo) == 0)
mostreCelular(lis->celulares[i]);
printf("\n");
return i;
return -1;
}
int buscaCelularmarca(TListaCelulares *lis, TCelular cel)
{
int i;
for(i=0; i<lis->ncel; i++)
if(strcmp(cel.marca,lis->celulares[i].marca) == 0)
mostreCelular(lis->celulares[i]);
printf("\n\n");
return i;
return -1;
}
int buscaCelularinternet(TListaCelulares *lis, TCelular cel)
{
int i;
for(i=0; i<lis->ncel; i++)
if(strcmp(cel.inter,lis->celulares[i].inter) == 0)
mostreCelular(lis->celulares[i]);
printf("\n\n");
return i;
return -1;
}
void insereCelular(TListaCelulares *lis, TCelular cel)
{
lis->celulares[lis->ncel] = cel;
lis->ncel++;
}
int ordenaMarca(const void *a, const void *b)
{
TCelular *ca = (TCelular *) a;
TCelular *cb = (TCelular *) b;
return strcmp(ca->marca,cb->marca);
}
int ordenaValor(const void *a, const void *b)
{
TCelular *ca = (TCelular *) a;
TCelular *cb = (TCelular *) b;
return strcmp(ca->valor,cb->valor);
}
int ordenaProcessador(const void *a, const void *b)
{
TCelular *ca = (TCelular *) a;
TCelular *cb = (TCelular *) b;
return strcmp(ca->processador,cb->processador);
}
TCelular removeCelular(TListaCelulares *lis, int ind)
{
int i;
TCelular res = lis->celulares[ind];
for(i=ind; i<lis->ncel-1; i++)
lis->celulares[i] = lis->celulares[i+1];
lis->ncel--;
return res;
}
char menu()
{
printf("******************************\n");
printf("* Ficha T%ccnica de Celulares *\n",130);
printf("******************************\n\n");
printf(" 1 - FILTRAR celular pela Marca\n");
printf(" 2 - FILTRAR pela Tecnologia de Internet (3G ou 4G)\n");
printf(" 3 - INSERIR celular\n");
printf(" 4 - APAGAR celular\n");
printf(" 5 - MOSTRAR celulares ordenados pela Marca\n");
printf(" 6 - MOSTRAR celulares ordenados pelo Valor\n");
printf(" 7 - MOSTRAR celulares ordenados pelo Processador\n");
printf(" 8 - EDITAR dados de um celular\n");
printf("\n 0 - SAIR do aplicativo\n");
printf("\n Escolha uma op%c%co: ",135,198);
fflush(stdin);
return getchar();
}
char menu2()
{
printf("\n");
printf(" 1 - ALTERAR Marca\n");
printf(" 2 - ALTERAR Modelo\n");
printf(" 3 - ALTERAR Processador\n");
printf(" 4 - ALTERAR Memoria\n");
printf(" 5 - ALTERAR Tela\n");
printf(" 6 - ALTERAR Internet\n");
printf(" 7 - ALTERAR Sistema Operacional\n");
printf(" 8 - ALTERAR Valor\n");
printf(" 9 - Voltar ao MENU PRINCIPAL\n");
printf("\n Escolha uma op%c%co: ",135,198);
fflush(stdin);
return getchar();
{
int op1;
while(op1 != '0')
{
op1 = menu2();
switch(op1)
{
fflush(stdin);
case '1':
printf("editar marca\n");
break;
case '2':
printf("editar modelo\n");
break;
case '3':
printf("editar processador\n");
break;
case '4':
printf("editar memoria\n");
break;
case '5':
printf("editar tela\n");
break;
case '6':
printf("editar internet\n");
break;
case '7':
printf("editar sistema operacional\n");
break;
case '8':
printf("editar valor\n");
break;
case '9':
menu();
break;
default:
printf("\n\n **** Entrada invalida ****\n\n");
}
}
}
}
int main()
{
TListaCelulares liscel;
liscel.ncel = 0;
TCelular cel;
int rb;
int alterado = 0;
int op1;
char op2 = 'A';
char op = 'A';
FILE *fp;
fp = fopen("Celulares.arq","rb");
if(fp != NULL) {
fread(&liscel.ncel,sizeof(unsigned),1,fp);
fread(liscel.celulares,sizeof(TCelular),liscel.ncel,fp);
}
fclose(fp);
while(op != '0')
{
op = menu();
switch(op)
{
fflush(stdin);
case '1':
printf("\n\n **** Filtrar celulares pela marca ****\n");
printf("\n Marca: ");
fflush(stdin);
gets(cel.marca);
printf("\n\n-------------Lista de Celulares Filtrados pela Marca--------------\n");
printf("MARCA-------MODELO---------PROCES.-MEM.--TELA-NET-S.O.-----------VALOR\n");
rb = buscaCelularmarca(&liscel,cel);
if(rb < 0)
printf("\n **** Celular com esta marca n%co existe ****\n",198);
printf("\n\n");
break;
case '2':
printf("\n\n **** Filtrar celulares pela Tecnologia de Iternet (3G ou 4G) ****\n");
printf("\n Tecnologia de Internet: ");
fflush(stdin);
gets(cel.inter);
printf("\n\n------------Lista de Celulares Filtrados pela Internet------------\n");
printf("MARCA-------MODELO---------PROCES.-MEM.--TELA-NET-S.O.-----------VALOR\n");
rb = buscaCelularinternet(&liscel,cel);
if(rb < 0)
printf("\n **** Celular com esta tecnologia de internet n%co existe ****\n",198);
printf("\n\n");
break;
case '3':
fflush(stdin);
printf("\n\n --- Cria novo celular ---\n");
printf(" Modelo: ");
gets(cel.modelo);
rb = buscaCelular(&liscel,cel);
if(rb >= 0)
printf("\n **** Celular existente ****\n\n");
else
{
printf("\n\n");
printf(" Marca : ");
gets(cel.marca);
printf(" Modelo : ");
gets(cel.modelo);
printf(" Processador : ");
fflush(stdin);
gets(cel.processador);
printf(" Memoria : ");
gets(cel.memoria);
printf(" Tela : ");
gets(cel.tela);
printf(" Tecnologia de Internet: ");
gets(cel.inter);
printf(" Sistema Operacional : ");
gets(cel.sisopera);
printf(" Valor : ");
gets(cel.valor);
while(op2!='s' && op2!='S' && op2!='n' && op2!='N')
{
printf("\n Salvar celular? (s/n): ");
fflush(stdin);
op2 = getchar();
if(op2=='S' || op2=='s')
{
alterado = 1;
insereCelular(&liscel,cel);
printf("\n\n **** Celular criado ****\n\n");
}
else
if(op2!='N' && op2!='n')
printf("\n\n **** Pressione S ou N ****\n\n");
}
}
op2 = 'A';
break;
case '4':
fflush(stdin);
printf("\n\n **** Apagar celular ****\n");
printf(" Modelo: ");
gets(cel.modelo);
rb = buscaCelular(&liscel,cel);
if(rb < 0)
printf("\n **** Celular n%co existe ****\n",198);
else
{
printf(" Excluir %s? (S/N): ",cel.modelo);
op2 = getchar();
if(op2=='s' || op2=='S') {
removeCelular(&liscel,rb);
alterado = 1;
}
}
printf("\n\n");
break;
case '5':
qsort(liscel.celulares,liscel.ncel,sizeof(TCelular),ordenaMarca);
mostreListaDeCelulares(&liscel);
break;
case '6':
qsort(liscel.celulares,liscel.ncel,sizeof(TCelular),ordenaValor);
mostreListaDeCelulares(&liscel);
break;
case '7':
qsort(liscel.celulares,liscel.ncel,sizeof(TCelular),ordenaProcessador);
mostreListaDeCelulares(&liscel);
break;
case '8':
printf("\n\n **** EDITAR CELULAR ****\n");
printf("\n MODELO: ");
fflush(stdin);
gets(cel.modelo);
printf("MARCA-------MODELO---------PROCES.-MEM.--TELA-NET-S.O.-----------VALOR\n");
rb = buscaCelularmodelo(&liscel,cel);
if(rb < 0)
printf("\n **** Celular com esta modelo n%co existe ****\n",198);
else
printf("Marca:");
gets(cel.marca);
strcpy(cel.marca,cel.marca);
printf(" Alterar %s? (S/N): ",cel.marca);
op2 = getchar();
if(op2=='s' || op2=='S') {
alterado = 1;
//menu2 ();
break;
case '0':
break;
default:
printf("\n\n **** Entrada invalida ****\n\n");
}
}
if(alterado)
{
printf("\n\n Arquivo alterado. Deseja salvar as altera%c%ces? (S/N): ",135,228);
fflush(stdin);
op2 = getchar();
if(op2=='S' || op2=='s')
{
fp = fopen("Celulares.arq","wb");
fwrite(&liscel.ncel,sizeof(unsigned),1,fp);
fwrite(liscel.celulares,sizeof(TCelular),liscel.ncel,fp);
fclose(fp);
printf("\n **** O arquivo foi salvo ****\n");
}
}
printf("\n");
return 0;
}
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Partição e erro fatal do disco (16)
A impressora não imprimi no win10 (5)
não sei o que tá havendo aqui! (3)
Função que recebe 20 números inteiros e retorna o 6° maior elemento do... (3)