Estou tendo as seguintes dificuldades nesse algorítimo:
1 - na limpeza do buffer de memoria com o wile - na primeira pergunta com scanf ele traz uma sujeira do wiler antes de gerar a pergunta
2 - no for if, em vez do programa verificar cada item de cada um dos 5 apostadores, ele pega logo o primeiro apostador e pontua todos os outros com a pontuação desse apostador, logo é erro no laço
3 - ao final estou tendo dificuldade com o printf_s pois ao usar o %f ele não esta criando as duas casas decimais adequadas, pegando todas as casas decimais fica assim 100.00000000.2
segue abaixo o código agradeço o apoio para analise
/*
("**************************************\n");
("*Exercicio 2 *\n");
("*Aluno: Antonio Maria Feitosa Souza *\n");
("*RU: 2445802 *\n");
("*Logica de Programação e Algoritimo *\n");
("*Programa: Bolão *\n");
("**************************************\n\n");
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <conio.h>
int main(void)
{
setlocale(LC_ALL, "Portuguese"); // Usando padrão portugues, acentos e virgulas
// INICIANDO AS VARIAVEIS
int ap11 = 0, ap12 = 0, ap21 = 0, ap22 = 0, ap31 = 0, ap32 = 0,
ap41 = 0, ap42 = 0, ap51 = 0, ap52 = 0, r1 = 0, r2 = 0, pont1, pont2, pont3, pont4, pont5, pausa;
char apost1[15], apost2[15], apost3[15], apost4[15], apost5[15], c;
float valor1 = 0, valor2 = 0, valor3 = 0, valor4 = 0, valor5 = 0;
// ENTRADA DE DADOS DOS APOSTADORES E DAS APOSTAS
// APOSTADOR 1
printf("Digite o nome do primeiro apostador:\n");
gets_s(apost1);
printf("Digite o placar dowhile ((c = getchar()) != '\n' && c != EOF) {} Time1: \n");
scanf_s("%d", &ap11);
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap12);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor1);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 2
printf("Digite o nome do segundo apostador:\n");
gets_s(apost2);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap21);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap22);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor2);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 3
printf("Digite o nome do terceiro apostador:\n");
gets_s(apost3);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap31);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap32);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor3);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 4
printf("Digite o nome do quarto apostador:\n");
gets_s(apost4);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap41);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap42);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor4);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 5
printf("Digite o nome do quinto apostador:\n");
gets_s(apost5);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap51);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap52);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor5);
while ((c = getchar()) != '\n' && c != EOF) {}
system("cls"); // LIMPANDO A TELA
printf("Iniciando o Bolão \n");
printf("Informe o placar do Time1: \n");
scanf_s("%d", &r1);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Informe o placar do Timew2: \n");
scanf_s("%d", &r2);
while ((c = getchar()) != '\n' && c != EOF) {}
// Iniciando o processamento dos dados informados
// VENCEDOR É O PRIMEIRO TIME
for (int i = r1; i > r2; i--)
{
// NÃO ACERTOU O VENCEDOR E NEM O NUMERO DE GOLS DOS TIMES
if (i < r2 &&((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22) ||
(r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52)))
{
pont1 = 0;
pont2 = 0;
pont3 = 0;
pont4 = 0;
pont5 = 0;
}
else
{
// NÃO ACERTOU O VENCEDOR
if (i < r2 && ((i != ap11 && r2 == ap12) || (i != ap21 && r2 == ap22) ||
(i != ap31 && r2 == ap32) || (i != ap41 && r2 == ap42)
|| (i != ap51 && r2 == ap52)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// NÃO ACERTOU O VENCEDOR MAIS ACERTOU O NUMERO DE GOLS DO PRIMEIRO TIME.
if (i < r1 && ((r1 == ap11 && r2 != ap12) || (r1 != ap21 && r2 == ap22) ||
(r1 != ap31 && r2 == ap32) || (r1 != ap41 && r2 == ap42)
|| (r1 != ap51 && r2 == ap52)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// ACERTOU O VENCEDOR MAIS NÃO ACERTOU O NUMERO DE GOLS DOS TIMES
if ((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22)
|| (r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52))
{
pont1 = 10;
pont2 = 10;
pont3 = 10;
pont4 = 10;
pont5 = 10;
}
// ACERTOU O VENCEDOR E APENAS O PLACAR DO 2 TIME
if ((r1 == ap11 && r2 != ap12) || (r1 == ap21 && r2 != ap22)
|| (r1 == ap31 && r2 != ap32) || (r1 == ap41 && r2 != ap42)
|| (r1 == ap51 && r2 != ap52))
{
pont1 = 15;
pont2 = 15;
pont3 = 15;
pont4 = 15;
pont5 = 15;
}
else
{
// ACERTOU O 1 VENCEDOR E O PLACAR DOS DOIS TIMES
if ((r1 == ap11 && r2 == ap12) || (r1 == ap21 && r2 == ap22) || (r1 == ap31 && r2 == ap32)
|| (r1 == ap41 && r2 == ap42) || (r1 == ap51 && r2 == ap52))
{
pont1 = 20;
pont2 = 20;
pont3 = 20;
pont4 = 20;
pont5 = 20;
}
}
}
}
}
}
// VENCEDOR É O 2 TIME
for (int i = r2; i > r1; i--)
{
// NÃO ACERTOU O VENCEDOR E NEM O NUMERO DE GOLS DOS TIMES
if (i < r1 && ((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22) ||
(r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52)))
{
pont1 = 0;
pont2 = 0;
pont3 = 0;
pont4 = 0;
pont5 = 0;
}
else
{
// NÃO ACERTOU O VENCEDOR
if (i < r1 && ((i != ap12 && r2 == ap11) || (i != ap22 && r2 == ap21) ||
(i != ap32 && r2 == ap31) || (i != ap42 && r2 == ap41)
|| (i != ap52 && r2 == ap51)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// NÃO ACERTOU O VENCEDOR MAIS ACERTOU O NUMERO DE GOLS DO PRIMEIRO TIME.
if (i < r1 && ((r1 == ap11 && r2 != ap12) || (r1 != ap21 && r2 == ap22) ||
(r1 != ap31 && r2 == ap32) || (r1 != ap41 && r2 == ap42)
|| (r1 != ap51 && r2 == ap52)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// ACERTOU O VENCEDOR MAIS NÃO ACERTOU O NUMERO DE GOLS DOS TIMES
if ((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22)
|| (r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52))
{
pont1 = 10;
pont2 = 10;
pont3 = 10;
pont4 = 10;
pont5 = 10;
}
// ACERTOU O VENCEDOR E APENAS O PLACAR DO PRIMEIRO TIME TIME
if ((r1 == ap11 && r2 != ap12) || (r1 == ap21 && r2 != ap22)
|| (r1 == ap31 && r2 != ap32) || (r1 == ap41 && r2 != ap42)
|| (r1 == ap51 && r2 != ap52))
{
pont1 = 15;
pont2 = 15;
pont3 = 15;
pont4 = 15;
pont5 = 15;
}
else
{
// ACERTOU O 1 VENCEDOR E O PLACAR DOS DOIS TIMES
if ((r1 == ap11 && r2 == ap12) || (r1 == ap21 && r2 == ap22) || (r1 == ap31 && r2 == ap32)
|| (r1 == ap41 && r2 == ap42) || (r1 == ap51 && r2 == ap52))
{
pont1 = 20;
pont2 = 20;
pont3 = 20;
pont4 = 20;
pont5 = 20;
}
}
}
}
}
}
Pergunta
souzaoe
Estou tendo as seguintes dificuldades nesse algorítimo:
1 - na limpeza do buffer de memoria com o wile - na primeira pergunta com scanf ele traz uma sujeira do wiler antes de gerar a pergunta
2 - no for if, em vez do programa verificar cada item de cada um dos 5 apostadores, ele pega logo o primeiro apostador e pontua todos os outros com a pontuação desse apostador, logo é erro no laço
3 - ao final estou tendo dificuldade com o printf_s pois ao usar o %f ele não esta criando as duas casas decimais adequadas, pegando todas as casas decimais fica assim 100.00000000.2
segue abaixo o código agradeço o apoio para analise
/*
("**************************************\n");
("*Exercicio 2 *\n");
("*Aluno: Antonio Maria Feitosa Souza *\n");
("*RU: 2445802 *\n");
("*Logica de Programação e Algoritimo *\n");
("*Programa: Bolão *\n");
("**************************************\n\n");
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#include <conio.h>
int main(void)
{
setlocale(LC_ALL, "Portuguese"); // Usando padrão portugues, acentos e virgulas
// INICIANDO AS VARIAVEIS
int ap11 = 0, ap12 = 0, ap21 = 0, ap22 = 0, ap31 = 0, ap32 = 0,
ap41 = 0, ap42 = 0, ap51 = 0, ap52 = 0, r1 = 0, r2 = 0, pont1, pont2, pont3, pont4, pont5, pausa;
char apost1[15], apost2[15], apost3[15], apost4[15], apost5[15], c;
float valor1 = 0, valor2 = 0, valor3 = 0, valor4 = 0, valor5 = 0;
// ENTRADA DE DADOS DOS APOSTADORES E DAS APOSTAS
// APOSTADOR 1
printf("Digite o nome do primeiro apostador:\n");
gets_s(apost1);
printf("Digite o placar dowhile ((c = getchar()) != '\n' && c != EOF) {} Time1: \n");
scanf_s("%d", &ap11);
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap12);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor1);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 2
printf("Digite o nome do segundo apostador:\n");
gets_s(apost2);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap21);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap22);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor2);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 3
printf("Digite o nome do terceiro apostador:\n");
gets_s(apost3);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap31);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap32);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor3);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 4
printf("Digite o nome do quarto apostador:\n");
gets_s(apost4);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap41);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap42);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor4);
while ((c = getchar()) != '\n' && c != EOF) {}
// APOSTADOR 5
printf("Digite o nome do quinto apostador:\n");
gets_s(apost5);
printf("Digite o placar do Time1: \n");
scanf_s("%d", &ap51);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o placar do Time2: \n");
scanf_s("%d", &ap52);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Digite o valor da aposta : R$ ");
scanf_s("%f", &valor5);
while ((c = getchar()) != '\n' && c != EOF) {}
system("cls"); // LIMPANDO A TELA
printf("Iniciando o Bolão \n");
printf("Informe o placar do Time1: \n");
scanf_s("%d", &r1);
while ((c = getchar()) != '\n' && c != EOF) {}
printf("Informe o placar do Timew2: \n");
scanf_s("%d", &r2);
while ((c = getchar()) != '\n' && c != EOF) {}
// Iniciando o processamento dos dados informados
// VENCEDOR É O PRIMEIRO TIME
for (int i = r1; i > r2; i--)
{
// NÃO ACERTOU O VENCEDOR E NEM O NUMERO DE GOLS DOS TIMES
if (i < r2 &&((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22) ||
(r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52)))
{
pont1 = 0;
pont2 = 0;
pont3 = 0;
pont4 = 0;
pont5 = 0;
}
else
{
// NÃO ACERTOU O VENCEDOR
if (i < r2 && ((i != ap11 && r2 == ap12) || (i != ap21 && r2 == ap22) ||
(i != ap31 && r2 == ap32) || (i != ap41 && r2 == ap42)
|| (i != ap51 && r2 == ap52)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// NÃO ACERTOU O VENCEDOR MAIS ACERTOU O NUMERO DE GOLS DO PRIMEIRO TIME.
if (i < r1 && ((r1 == ap11 && r2 != ap12) || (r1 != ap21 && r2 == ap22) ||
(r1 != ap31 && r2 == ap32) || (r1 != ap41 && r2 == ap42)
|| (r1 != ap51 && r2 == ap52)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// ACERTOU O VENCEDOR MAIS NÃO ACERTOU O NUMERO DE GOLS DOS TIMES
if ((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22)
|| (r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52))
{
pont1 = 10;
pont2 = 10;
pont3 = 10;
pont4 = 10;
pont5 = 10;
}
// ACERTOU O VENCEDOR E APENAS O PLACAR DO 2 TIME
if ((r1 == ap11 && r2 != ap12) || (r1 == ap21 && r2 != ap22)
|| (r1 == ap31 && r2 != ap32) || (r1 == ap41 && r2 != ap42)
|| (r1 == ap51 && r2 != ap52))
{
pont1 = 15;
pont2 = 15;
pont3 = 15;
pont4 = 15;
pont5 = 15;
}
else
{
// ACERTOU O 1 VENCEDOR E O PLACAR DOS DOIS TIMES
if ((r1 == ap11 && r2 == ap12) || (r1 == ap21 && r2 == ap22) || (r1 == ap31 && r2 == ap32)
|| (r1 == ap41 && r2 == ap42) || (r1 == ap51 && r2 == ap52))
{
pont1 = 20;
pont2 = 20;
pont3 = 20;
pont4 = 20;
pont5 = 20;
}
}
}
}
}
}
// VENCEDOR É O 2 TIME
for (int i = r2; i > r1; i--)
{
// NÃO ACERTOU O VENCEDOR E NEM O NUMERO DE GOLS DOS TIMES
if (i < r1 && ((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22) ||
(r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52)))
{
pont1 = 0;
pont2 = 0;
pont3 = 0;
pont4 = 0;
pont5 = 0;
}
else
{
// NÃO ACERTOU O VENCEDOR
if (i < r1 && ((i != ap12 && r2 == ap11) || (i != ap22 && r2 == ap21) ||
(i != ap32 && r2 == ap31) || (i != ap42 && r2 == ap41)
|| (i != ap52 && r2 == ap51)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// NÃO ACERTOU O VENCEDOR MAIS ACERTOU O NUMERO DE GOLS DO PRIMEIRO TIME.
if (i < r1 && ((r1 == ap11 && r2 != ap12) || (r1 != ap21 && r2 == ap22) ||
(r1 != ap31 && r2 == ap32) || (r1 != ap41 && r2 == ap42)
|| (r1 != ap51 && r2 == ap52)))
{
pont1 = 5;
pont2 = 5;
pont3 = 5;
pont4 = 5;
pont5 = 5;
}
else
{
// ACERTOU O VENCEDOR MAIS NÃO ACERTOU O NUMERO DE GOLS DOS TIMES
if ((r1 != ap11 && r2 != ap12) || (r1 != ap21 && r2 != ap22)
|| (r1 != ap31 && r2 != ap32) || (r1 != ap41 && r2 != ap42)
|| (r1 != ap51 && r2 != ap52))
{
pont1 = 10;
pont2 = 10;
pont3 = 10;
pont4 = 10;
pont5 = 10;
}
// ACERTOU O VENCEDOR E APENAS O PLACAR DO PRIMEIRO TIME TIME
if ((r1 == ap11 && r2 != ap12) || (r1 == ap21 && r2 != ap22)
|| (r1 == ap31 && r2 != ap32) || (r1 == ap41 && r2 != ap42)
|| (r1 == ap51 && r2 != ap52))
{
pont1 = 15;
pont2 = 15;
pont3 = 15;
pont4 = 15;
pont5 = 15;
}
else
{
// ACERTOU O 1 VENCEDOR E O PLACAR DOS DOIS TIMES
if ((r1 == ap11 && r2 == ap12) || (r1 == ap21 && r2 == ap22) || (r1 == ap31 && r2 == ap32)
|| (r1 == ap41 && r2 == ap42) || (r1 == ap51 && r2 == ap52))
{
pont1 = 20;
pont2 = 20;
pont3 = 20;
pont4 = 20;
pont5 = 20;
}
}
}
}
}
}
// IMPRIMINDO OS RESULTADOS
printf("Primeiro apostador:%s * ", apost1);
printf("Valor da Aposto:%f.2 * ", valor1);
printf("Pontos obtidos:%d * \n\n ", pont1);
printf("Segundo apostador:%s * ", apost2);
printf("Valor da Aposto:%f.2 * ", valor2);
printf("Pontos obtidos:%d * \n\n ", pont2);
printf("Terceiro apostador:%s * ", apost3);
printf("Valor da Aposto:%f.2 * ", valor3);
printf("Pontos obtidos:%d * \n\n ", pont3);
printf("Quarto apostador:%s * ", apost4);
printf("Valor da Aposto:%f.2 * ", valor4);
printf("Pontos obtidos:%d * \n\n ", pont4);
printf("Quinto apostador:%s * ", apost5);
printf("Valor da Aposto:%f.2 * ", valor5);
printf("Pontos obtidos:%d * \n\n ", pont5);
scanf_s("%d", &pausa);
system("pauser");
return 0;
}
Link 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.