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:
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); }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.