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;
}
}
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Dica para encontrar diversos jogos Indies criativos
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Software livre - será que eu estou tão errado assim? (16)
A escola é altamente ineficiente e ineficaz! (12)