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;
}
}
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Alguém pode me ajudar porfavor como executar comandos ao iniciar no i3... (2)
Debian Bookworm para a versão beta Debian 13 Trixie (2)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (21)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba