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;
}
}
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (2)
Linux Lite Demorando Muito Para Ligar (0)
PC não liga no filtro de linha (3)