Olá, neste programa o único erro é que não está aparecendo todas as classificações do vetor(ASIA,EUROPA...), acredito(tenho quase certeza) que seja no sprintf.
Alguém poderia me ajudar?
Obrigado;
Síntese do programa para ajudar a entendê-lo:
algoritmo pesquisaViagens;
// Síntese
// Objetivo: Auxiliar em uma pesquisa sobre viagens
// Entrada : Sexo, idade, local da viagem
// Saída :Em uma tabela o sexo, idade e local da última viagem por extenso das pessoas
que possuem idade menor que a média,quantidade de pessoas que visitou cada um destes continentes e a quantidade que não saiu do brasil
// Valores de Entrada: M, 10, A
// M, 5 , S
// F, 5, A
// Valores de Saida:
SEXO IDADE LOCAL
M 5 ASIA
F 5 AMERICA DO NORTE
Quantidade de pessoas que visitaram a Asia:1
Quantidade de pessoas que visitaram a Europa:0
Quantidade de pessoas que visitaram a America Do Norte:2
Quantidade de pessoas que Nunca sairam do Brasil:0
#include <stdio.h>
#include <conio.c>
void obtemLocalIdadeMenorMedia(int idades[],char localIdadeMenorMedia[],char localViagem[], float mediaIdades, int qtdePessoas);
int leValidaInteiro(char titulo[], char msgErro[], int valorMin, int valorMax);
char leValidaCaracter(char titulo[], char msgErro[], char opcao1, char opcao2);
char leValidaLocalViagem(char titulo[], char msgErro[]);
void visaoFinal(int somaViagensEuropa,int somaViagensAsia,int somaViagensAmericaDoNorte,int somaNuncaSaiuPais);
int main(void)
{
// Declaracoes
int idades[500],contador,somaIdades,qtdePessoas, idadeMenorMedia[500],contador2,contador3,somaViagensEuropa,somaViagensAsia,somaViagensAmericaDoNorte,somaNuncaSaiuPais;
char sexo[500], localViagem[500],desejaContinuar, sexoIdadeMenorMedia[500];
char localIdadeMenorMedia[100];
float mediaIdades;
// Instrucoes
contador=0;
somaIdades=0;
qtdePessoas=0;
mediaIdades=0;
somaViagensEuropa=0;
somaViagensAsia=0;
somaViagensAmericaDoNorte=0;
somaNuncaSaiuPais=0;
do
{
idades[contador]=leValidaInteiro("Informe a idade:","Idade invalida, informe uma idade entre 2 e 150",2,150);
somaIdades=somaIdades+idades[contador];
sexo[contador]=leValidaCaracter("Informe o sexo[M-MASCULINO/F-FEMININO]:","Sexo invalido",'M','F');
localViagem[contador]=leValidaLocalViagem("Informe o local da viagem de acordo com o menu de opcoes:","Local invalido, informe novamente");
if(localViagem[contador]=='S')
{
somaViagensAsia=somaViagensAsia+1;
}
else
{
if(localViagem[contador]=='E')
{
somaViagensEuropa=somaViagensEuropa+1;
}
else
{
if(localViagem[contador]=='A')
{
somaViagensAmericaDoNorte=somaViagensAmericaDoNorte+1;
}
else
{
somaNuncaSaiuPais=somaNuncaSaiuPais+1;
}
}
}
printf("Digite qualquer tecla para continuar ou 'N' para mostrar o resultado:\n");
desejaContinuar=getch();
desejaContinuar=toupper(desejaContinuar);
clrscr();
contador=contador+1;
qtdePessoas=contador;
mediaIdades=somaIdades/qtdePessoas;
}while(desejaContinuar!='N' && contador<=2);
obtemLocalIdadeMenorMedia(idades,localIdadeMenorMedia,localViagem, mediaIdades, qtdePessoas);
printf("Tabela de pessoas que possuem idade menor que a media das idades:\n");
printf("IDADE SEXO LOCAL\n");
for(contador2=0; contador2<=contador-1;contador2++)
{
if(idades[contador2]<mediaIdades)
{
printf("%5d %c %s\n",idades[contador2],sexo[contador2],localIdadeMenorMedia);
}
}
visaoFinal(somaViagensEuropa,somaViagensAsia,somaViagensAmericaDoNorte,somaNuncaSaiuPais);
getch();
return 0;
}
//Objetivo: ler local viagem
//Parâmetros: idades, localIdadeMenorMedia, localViagem, mediaIdades, qtdePessoas
//Retorno:nenhum
void obtemLocalIdadeMenorMedia(int idades[],char localIdadeMenorMedia[],char localViagem[], float mediaIdades, int qtdePessoas)
{
int contador2;
for(contador2=0; contador2<=qtdePessoas-1;contador2++)
{
if(idades[contador2]<mediaIdades)
{
if(localViagem[contador2]=='S')
{
sprintf(localIdadeMenorMedia,"ASIA\n");
}
else
{
if(localViagem[contador2]=='E')
{
sprintf(localIdadeMenorMedia,"EUROPA\n");
}
else
{
if(localViagem[contador2]=='A')
{
sprintf(localIdadeMenorMedia,"AMERICA DO NORTE\n");
}
else
{
sprintf(localIdadeMenorMedia,"NUNCA SAIU DO PAIS\n");
}
}
}
}
}
}
//Objetivo: ler e validar inteiro
//Parâmetros:titulo msgErro, valorMin, valorMax
//Retorno: numero inteiro validado
int leValidaInteiro(char titulo[], char msgErro[], int valorMin, int valorMax)
{
int numero;
do
{
printf("%s\n",titulo);
scanf("%d",&numero);
if(numero<valorMin || numero>valorMax)
{
printf("%s\n",msgErro);
}
}while(numero<valorMin || numero>valorMax);
return numero;
}
//Objetivo: ler e validar caracter
//Parâmetros: titulo, msgErro, opcao1, opcao2
//Retorno: caracter validado
char leValidaCaracter(char titulo[], char msgErro[], char opcao1, char opcao2)
{
char letra;
do
{
printf("%s\n",titulo);
letra=getch();
letra=toupper(letra);
if(letra!=opcao1 && letra!=opcao2)
{
printf("%s\n",msgErro);
}
}while(letra!=opcao1 && letra!=opcao2);
return letra;
}
//Objetivo:ler e validar local viagem
//Parâmetros: titulo, msgErro
//Retorno: local viagem validado
char leValidaLocalViagem(char titulo[], char msgErro[])
{
char letra;
do
{
printf("MENU DE VIAGEM\n");
printf("E - EUROPA\n");
printf("S - ASIA\n");
printf("A - AMERICA DO NORTE\n");
printf("N - NUNCA SAIU DO PAIS\n");
printf("%s\n",titulo);
letra=getch();
letra=toupper(letra);
if(letra!='E' && letra!='S' && letra!='A' && letra!='N')
{
printf("%s\n",msgErro);
}
}while(letra!='E' && letra!='S' && letra!='A' && letra!='N');
return letra;
}
//Objetivo:Quantidade de pessoas que viajaram para os locais
//Parâmetros:somaViagensEuropa,somaViagensAsia,somaViagensAmericaDoNorte,somaNuncaSaiuPais
//Retorno:nenhum
void visaoFinal(int somaViagensEuropa,int somaViagensAsia,int somaViagensAmericaDoNorte,int somaNuncaSaiuPais)
{
printf("Quantidade de pessoas que visitaram a Asia:%d\n", somaViagensAsia);
printf("Quantidade de pessoas que visitaram a Europa:%d\n", somaViagensEuropa);
printf("Quantidade de pessoas que visitaram a America Do Norte:%d\n", somaViagensAmericaDoNorte);
printf("Quantidade de pessoas que Nunca sairam do Brasil :%d\n", somaNuncaSaiuPais);
}
Pergunta
iceman
Olá, neste programa o único erro é que não está aparecendo todas as classificações do vetor(ASIA,EUROPA...), acredito(tenho quase certeza) que seja no sprintf.
Alguém poderia me ajudar?
Obrigado;
Síntese do programa para ajudar a entendê-lo:
Editado por icemanLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.