ic0158040
(usa KUbuntu)
Enviado em 23/06/2008 - 22:22h
turma. tipo, fiz um programa no windows, mas quando o compilo no linux ele não executa as opções 5 e 6 do switch. por quê?
troquem o system("cls") por system("clear") pois no programa que rodei no linux eu jah efetuei essa troca. o resto tah igualzinho.
# Código fonte em linguagem C++*/
//Inclusão das bibliotecas
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std ;
/*---------------------------------------------------------------------------------
//Definição da estrutura AGENDA
---------------------------------------------------------------------------------*/
typedef struct AGENDA
{
char nome[50];//campo nome
long int telefone;//campo telefone
int dia ; //campo dia
int mes ; // campo mes
int ano ; //campo ano
char endereco[150];//campo endereço
char email[20];//campo e-mail
}AGENDA;
/*---------------------------------------------------------------------------------
//Protótipos das funções
---------------------------------------------------------------------------------*/
int menu();
int inclusao(AGENDA agenda[200], int tamanho);
void altera(AGENDA agenda[200]);
void exclusao(AGENDA agenda[200]);
void pesquisa(AGENDA agenda[200]);
void imprime (AGENDA * agenda, int i);
//---------------------------------------------------------------------------------
//Programa principal
//================================================================================
int main()
{
//Declaração das variáveis
AGENDA agenda[200];
AGENDA agendaOrdenada[200] ;
int MENU,
teste,
tamanho,
contador;
//Inicialização das variáveis
tamanho = 0;
MENU = 0;
contador = 0;
//Tomada de decisão de acordo com o retorno da função principal
while(MENU != 7)
{
//Chamada da função menu
MENU = menu();
//Tomada de decisão de acordo com a opção escolhida
switch(MENU)
{
case 1:
//chamada da função de inclusaõ de registros na tabela
teste = inclusao(agenda, tamanho);
tamanho = teste;
contador ++ ;
//imprimindo uma mensagem de erro
if(teste == 0)
printf("\n\t Nao e possivel incluir um registro agenda cheia!!!");
else
printf("\n\t Registro incluido com sucesso!!!");
fflush(stdin);
getchar();
break;
case 2:
//chamada da função de alteração de registros da tabela
altera(agenda);
fflush(stdin);
getchar();
break;
case 3:
//chamada da função de exclusaõ de registros da tabela
exclusao(agenda);
fflush(stdin);
getchar();
break;
case 4:
//chamada da função de pesquisa da tabela
pesquisa(agenda);
fflush(stdin);
getchar();
break;
case 5:
{
system("cls");
//system("clear");
printf("\nNOME\t\t\t\ ENDERECO ANIVERSARIO\t\tTELEFONE\tEMAIL\n\n");
for (int i = 0 ; i < contador ; i++)
{
printf("%s", agenda[i].nome);
printf("\t\t\t\t %s", agenda[i].endereco);
printf(" %d/%d/%d", agenda[i].dia , agenda[i].mes, agenda[i].ano);
printf("\t\t %d", agenda[i].telefone);
printf("\t\t %s" , agenda[i].email);
printf("\n\n");
}
system("PAUSE");
}; break;
case 6:
{
system("cls");
//system("clear");
AGENDA *ordenada , auxiliar ;
ordenada = new AGENDA [contador] ;
/*-------------------------------------------------------------
//Ordenação dos registros no método bouble sort
-------------------------------------------------------------*/
for(int i = 0; i < contador ; i++)
ordenada[i] = agenda[i];
for(int i = 0 ; i < contador-1 ; i++)
{
for(int j = 1 ; j < contador ; j ++)
{
if (strcmp(ordenada[j-1].nome, ordenada[j].nome) == 1)
{
auxiliar = ordenada[j];
ordenada[j] = ordenada[j-1];
ordenada[j-1] = auxiliar ;
}
}
}
/*-------------------------------------------------------------
//Impressão dos registros ordenados
-------------------------------------------------------------*/
printf("\nNOME\t\t\t\ENDERECO ANIVERSARIO\t\tTELEFONE\tEMAIL\n\n");
for (int i = 0 ; i < contador ; i++)
{
printf("%s", ordenada[i].nome);
printf("\t\t\t\t %s", ordenada[i].endereco);
printf(" %d/%d/%d", ordenada[i].dia , ordenada[i].mes, ordenada[i].ano);
printf("\t\t %d", ordenada[i].telefone);
printf("\t\t %s" , ordenada[i].email);
printf("\n\n");
}
system("PAUSE");
}; break;
case 7:
//imprimindo uma mensagem de finalizaçõ de progrma
printf("\n\t O programa esta sendo finalizado!!!");
return 0 ;
break;
default://imprimindo uma mensaagem de opção inválida
printf("\n\t Opcao invalida!!!");
fflush(stdin);
getchar();
}
}
fflush(stdin);
system("PAUSE");
return 0;
}
//=================================================================================
//Fim do programa principal
/*---------------------------------------------------------------------------------
//Implementação das funções
---------------------------------------------------------------------------------*/
//Função menu
int menu()
{
//system ("clear") ;
system("cls");
//variáveis locais
int opcao;
//impressão do menu
printf("\n\n\t Menu ");
printf("\n\t 1 - Incluir um registro ");
printf("\n\t 2 - Alterar um registro ");
printf("\n\t 3 - Excluir um registro ");
printf("\n\t 4 - Pesquisar um registro ");
printf("\n\t 5 - Listar os dados na ordem de entrada") ;
printf("\n\t 6 - Listar os dados ordenados por nome");
printf("\n\t 7 - Sair");
printf("\n\t Escolha um aopcao ");
scanf("%d", &opcao);
//valor retornado
return opcao;
}
//---------------------------------------------------------------------------------
//Função de inclusaõ de registros na agenda
int inclusao(AGENDA agenda[200], int tamanho)
{
//variáveis locais
int aux;
//numero de registro já acrescentados
aux = tamanho;
//caso o numero de registros inseridos seja maior que 199 a agenda está cheia e a função e incerrada
if(aux >= 199)return 0;
//leitura do nome do indivíduo
printf("\n\t Digite o nome - ");
scanf(" %[^\n]",&agenda[aux].nome);
//Leitura do telefone
do
{
printf("\t Digite telefone - ");
scanf("%d", &agenda[aux].telefone);
}while(agenda[aux].telefone <= 0);
//Leitura do aniversário
printf("\n\t Digite a data de aniversario - ");
printf("\n\t Digite o dia - ") ;
scanf("%d" , &agenda[aux].dia) ;
printf("\n\t Digite o mes - ") ;
scanf("%d" , &agenda[aux].mes) ;
printf("\n\t Digite o ano - ") ;
scanf("%d" , &agenda[aux].ano) ;
//Leitura do endereço
printf("\t Digite o endereco - ");
scanf(" %[^\n]",&agenda[aux].endereco);
//Leitura do e-mail
printf("\t Digite o e-mail - ");
scanf(" %[^\n]",&agenda[aux].email);
//Retorna tamanho +1 isso quer dizer um registroa frente na agenda
return tamanho + 1;
//system ("clear") ;
system("cls");
}
//---------------------------------------------------------------------------------------
//Função resposável por alterar os registros da estrutura
void altera(AGENDA agenda[200])
{
//Definição de variávis
char nom[50];
int i;
//leitura do nomme do registro a ser alterado
printf("\n\t Digite o nome para alterar seus dados ");
scanf(" %[^\n]",&nom);
//Busaca do registro a ser alterado
for(i = 0;i < 200;i++)
{
//caso o registro tenaha sido encontrado ele é alterado pela seguinte estrutura
if(strcmp(agenda[i].nome,nom) == 0)
{
printf("\n\t Alteracao:");
//lendo o novo nome da estrutura
printf("\n\t Digite o nome - ");
scanf(" %[^\n]",&agenda[i].nome);
//lendo o novo telefone
do
{
printf("\t Digite telefone - ");
scanf("%d", &agenda[i].telefone);
}while(agenda[i].telefone <= 0);
//lendo novo aniversario
printf("\n\t Digite a data de aniversário - ");
printf("\n\t Digite o dia - ") ;
scanf("%d" , &agenda[i].dia) ;
printf("\n\t Digite o mes - ") ;
scanf("%d" , &agenda[i].mes) ;
printf("\n\t Digite o ano - ") ;
scanf("%d" , &agenda[i].ano) ;
//lendo o novo endereço
printf("\t Digite o endereco - ");
scanf(" %[^\n]",&agenda[i].endereco);
//lendo onovo e-mail
printf("\t Digite o e-mail - ");
scanf(" %[^\n]",&agenda[i].email);
printf("\n\t Registro alterado com sucesso!!!");
}
//caso a estrutura com o nome digitado não tenha sido encontrada a seguitnte mensagem é impressa
else if(i >= 199)
printf("\n\t O nome e nao foi encontrado!!!");
}
//system ("clear") ;
system("cls");
}
//------------------------------------------------------------------------------------
//função responsável pela exclusão de um registro
void exclusao(AGENDA agenda[200])
{
//declaração de variáveis
char nom[50], apaga[50];
int i;
//criando um vetor vazio
for(i = 0;i<50;i++)apaga[i] = '{TEXTO}';
//lendo o nome o registro que deve ser excluido
printf("\n\t Digite o nome a ser excluido - ");
scanf(" %[^\n]",&nom);
//busscando o registro que deve ser excluído
for(i = 0;i < 200;i++)
{
//apagando um registro
if(strcmp(agenda[i].nome,nom) == 0)
{
//apaganod o nome
strcpy(agenda[i].nome,apaga);
//apagando o telefone
agenda[i].telefone = 0;
//apagando o aniversário
agenda[i].dia = 0 ;
agenda[i].mes = 0 ;
agenda[i].ano = 0 ;
//apagando oendereço
strcpy(agenda[i].endereco,apaga);
//apagando o email
strcpy(agenda[i].email,apaga);
printf("\n\t O registro foi apagado com exito!!!");
}
//caso o elemento não seja encontrado
}
getchar();
system ("cls") ;
//system("clear");
}
//------------------------------------------------------------------------------------
//função responsável pela pesquisa de um determinado registro
void pesquisa(AGENDA agenda[200])
{
//Declaração de variáveis
char nom[50];
long int tel;
int i, opc;
//inicializãção de variáveis
opc = 0;
//impressão do menu pesquisa
do
{
printf("\n\n\t Pesquisa:");
printf("\n\t 1 - Pesquisa por nome ");
printf("\n\t 2 - Pesquisa por telefone ");
printf("\n\t 3 - pesquisa por nome e telefone ");
printf("\n\t Digite sua opcao: ");
scanf("%d",&opc);
}while(opc != 1 && opc != 2 && opc != 3);
//tomada de decisão de acordo com o menu pequisa
switch(opc)
{
//realizabdo a busaca por nome
case 1:
printf("\n\t Digite o nome completo - ");
scanf(" %[^\n]",&nom);
//realizando a busaca
for(i = 0;i < 200;i++)
{
//caso seja encontrada os dados referente ao nome saõ impressos
if(strcmp(agenda[i].nome,nom) == 0)
{
imprime (agenda, i);
}
//caso o nome não possa ser encontrado uma mensagem é enviada ao úsuário
else if(i >= 199)
printf("\n\t O nome e nao foi encontrado!!!");
}
break;
//realizando a busca por telefone
case 2:
printf("\n\t Digite o telefone - ");
scanf("%ld",&tel);
//busacando o elemento por seu telefone
for(i = 0;i < 200;i++)
{
//imprimindo os elementos do vetor tem o telefone digitado
if(agenda[i].telefone == tel)
{
imprime (agenda, i);
}
//caso o telefone não exista na agenda uma mensagem de erro é impressa
else if(i >= 199)
printf("\n\t O telefone nao foi encontrado!!!");
}
break;
//procurando o reistro por nome e telefone
case 3:
printf("\n\t Digite o nome completo - ");
scanf(" %[^\n]",&nom);
printf("\n\t Digite o telefone - ");
scanf("%ld",&tel);
//caso o registro possua o nome e o telefone digitados ele é impresso
for(i = 0;i < 200;i++)
{
//imprimindo o registro com o nome e o telefone digitados
if(strcmp(agenda[i].nome,nom) == 0 && agenda[i].telefone == tel)
{
imprime (agenda, i);
}
//caso este não seja encontrado um mensagem de erro é impressa
else if(i >= 199)
printf("\n\t O nome e o telefone nao combinam!!!");
}
break;
}
system("PAUSE");
}
//---------------------------------------------------------------------------------
//Função responsável pela impressão da procura
void imprime (AGENDA * agenda, int i)
{
printf("\n\t O nome e: %s", agenda[i].nome);
printf("\n\t O telefone e: %d", agenda[i].telefone);
printf("\n\t O aniversario e: %d / %d / %d", agenda[i].dia , agenda[i].mes , agenda[i].ano);
printf("\n\t O endereco e: %s", agenda[i].endereco);
printf("\n\t O e-mail e: %s", agenda[i].email);
getchar();
}
//---------------------------------------------------------------------------------