Ir para conteúdo
Fórum Script Brasil
  • 0

[Duvida] Printf em txt


dankobaia

Pergunta

Galera bom dia preciso de uma ajuda com 2 problemas em um exercício.

Segue o enunciado

"Uma grande emissora de televisão quer fazer uma enquete entre os seus

telespectadores para saber qual o melhor jogador após cada jogo. Para isto, faz-se

necessário o desenvolvimento de um programa, que será utilizado pelas telefonistas,

para a computação dos votos. Sua equipe foi contratada para desenvolver este

programa, utilizando a linguagem de programação C++. Para computar cada voto,

a telefonista digitará um número, entre 1 e 23, correspondente ao número da camisa

do jogador. Um número de jogador igual zero, indica que a votação foi encerrada. Se

um número inválido for digitado, o programa deve ignorá-lo, mostrando uma breve

mensagem de aviso, e voltando a pedir outro número. Após o final da votação, o

programa deverá exibir:

a. O total de votos computados;

b. Os números e respectivos votos de todos os jogadores que

receberam votos;

c. O percentual de votos de cada um destes jogadores;

d. O número do jogador escolhido como o melhor jogador da

partida, juntamente com o número de votos e o percentual de votos dados

a ele.

Observe que os votos inválidos e o zero final não

devem ser computados como votos. O resultado aparece ordenado

pelo número do jogador. O programa deve fazer uso de arrays. O

programa deverá executar o cálculo do percentual de cada jogador

através de uma função. Esta função receberá dois parâmetros:

o número de votos de um jogador e o total de votos. A função

calculará o percentual e retornará o valor calculado. Ao final, o programa

deve ainda gravar os dados referentes ao resultado da votação

em um arquivo texto no disco, obedecendo a mesma disposição

apresentada na tela.

Segue meu código

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>



float perc(int a,int b)
{   float percent;
    percent=(a*100)/b;
    return percent;}



int main()
{   int voto, zerar,jogador[24], cvoto, vvotos, vencedor;
    float pjogador[24];

    zerar=0;
    cvoto=0;
    vvotos=0;
    while(zerar<24){
        jogador[zerar]=0; pjogador[zerar]=0; zerar++;}

    printf("Exercicio 2\n Enquete de melhor jogador\n\n Qual e o melhor jogador? (digite 0 para finalizar) ");
    scanf("%d",&voto);
    if ((voto>23)||(voto<1)&(voto!=0)){
        printf("\nsomente numeros de 1 a 23 são validos\n\n");}

    while (voto!=0){
        jogador[voto]++;
        if ((voto>0)&(voto<24))cvoto++;
        system("pause");
        system("cls");
        printf("Qual e o melhor jogador? \n\n");
        scanf("%d",&voto);
        if ((voto>23)||(voto<1)&(voto!=0)){
        printf("\nsomente numeros de 1 a 23 são validos\n\n");
        }}

        if(cvoto==0){printf("Programa encerrado sem votos");}
        else {system("cls");
              int cperc=1;
              while (cperc<24){
                  pjogador[cperc]=perc(jogador[cperc],cvoto);
                  cperc++;}
                int ctext=1;
                while (ctext<24){
                    printf ("\nForam computados %d votos para o jogador %d correspondendo a %.2f%c dos votos\n",jogador[ctext],ctext,pjogador[ctext],37);
                    ctext++;}
                int cvencedor=1;
                while (cvencedor<24){
                    if (vvotos<jogador[cvencedor]){
                        vvotos=jogador[cvencedor];
                        vencedor=cvencedor;}
                    cvencedor++;}
                printf ("\n\n\nO melhor jogador foi o numero %d com %d votos, correspondendo a %.2f do total de votos.",vencedor, vvotos, pjogador[vencedor]);}
                return 0;
}

estou com os seguintes problemas quando ponho na entrada um numero de mais de 3 dígitos o programa da erro, e não sei como posso fazer pra salvar os 2 "printf" finais em um txt , alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Aqui está amigo. Está bem completo o código, espero que você entenda. Qualquer dúvida é só perguntar.



// Licenciado para uso doméstico e compartilhamento na internet com fins de aprendizado
// Autor: Pedro Milreu Cunha
// Data e hora da última atualização: 27/11/2012 && 22:05
// E-mail para contato: pedro_cm@hotmail.com


#include <iostream>
#include <fstream>


using namespace std;
fstream MeuArquivo("Resultado.txt", ios::app | ios::out);
float Numero_de_votos;
float Votos_em_cada_jogador[24];
int Numero_do_Jogador;
float Percentual_de_cada_jogador[24];
void Voto_do_telespectador(float);
void Total_de_votos(float);
void Numero_de_votos_de_cada_jogador(float);
void Percentual_de_votos_de_cada_jogador(float, float);
void Descobrir_jogador_preferido(int, float, float);
void Abrir();
void Fechar();

void Voto_do_telespectador(float Votos_em_cada_jogador[24])

{
Numero_do_Jogador = 1;
while (Numero_do_Jogador != 0)
{
cout << "Qual é o número do jogador em que você deseja votar?(0 para parar)" << endl;
cin >> Numero_do_Jogador;
if (Numero_do_Jogador < 0 || Numero_do_Jogador > 23)
{
cout << "Número inválido. Digite outro." << endl;
cin >> Numero_do_Jogador;
}
else
{
Numero_de_votos++;
Votos_em_cada_jogador[Numero_do_Jogador]++;
}
}
Numero_de_votos--;
}

void Total_de_votos(float Numero_de_votos)

{
cout << "\n\nO número total de votos foi: " << endl;
cout << "-------------------------------------------------------------" << endl << endl;
cout << Numero_de_votos << endl;
cout << "-------------------------------------------------------------" << endl;
Abrir();
MeuArquivo << "O número total de votos foi: " << Numero_de_votos << endl;
Fechar();
}

void Numero_de_votos_de_cada_jogador(float Votos_em_cada_jogador[24])

{
Abrir();
MeuArquivo << "O número de votos de cada jogador foi:(só serão mostrados os jogadores que\n"
" receberam pelo menos 1 voto)\n" << endl;
cout << "\nO número de votos de cada jogador foi:(só serão mostrados os jogadores que\n"
" receberam pelo menos 1 voto)" << endl;
cout << "\n-------------------------------------------------------------" << endl << endl;
for (int i = 1; i < 24; i++)
{
if (Votos_em_cada_jogador[i] == 0)
{

}
else
{
cout << "Camisa nº " << i << ": " << Votos_em_cada_jogador[i] << " votos." << endl;
MeuArquivo << "Camisa nº " << i << ": " << Votos_em_cada_jogador[i] << " votos." << endl;
}
}
cout << "-------------------------------------------------------------" << endl << endl;
Fechar();
}

void Percentual_de_votos_de_cada_jogador(float Numero_de_votos, float Votos_em_cada_jogador[24])

{
Abrir();
MeuArquivo << "\nO percentual de votos de cada jogador foi:(só serão mostrados os jogadores que\n"
" receberam pelo menos 1 voto)\n" << endl;
cout << "O percentual de votos de cada jogador foi:(só serão mostrados os jogadores que\n"
" receberam pelo menos 1 voto)" << endl;
cout << "\n-------------------------------------------------------------" << endl << endl;
for (int i = 1; i < 24; i++)
{
Percentual_de_cada_jogador[i] = (Votos_em_cada_jogador[i]/Numero_de_votos) * 100;
if (Percentual_de_cada_jogador[i] == 0)
{

}
else
{
cout << "Camisa nº " << i << ": " << Percentual_de_cada_jogador[i] << "% dos votos." << endl;
MeuArquivo << "Camisa nº " << i << ": " << Percentual_de_cada_jogador[i] << "% dos votos." << endl;
}
}
cout << "-------------------------------------------------------------" << endl << endl;
Fechar();
}

void Descobrir_jogador_preferido(int Numero_do_Jogador, float Votos_em_cada_jogador[24], float Percentual_de_cada_jogador[24])

{
Abrir();
int Votos_Melhor_Jogador[24];
float Percentual_Melhor_Jogador[24];
int Numero_do_Melhor_Jogador[24];
int Numero_de_melhores_jogadores = 0;


Votos_Melhor_Jogador[1] = Votos_em_cada_jogador[1];
Percentual_Melhor_Jogador[1] = Percentual_de_cada_jogador[1];
Numero_do_Melhor_Jogador[1] = 1;


for (int i = 1; i < 24; i++)
{
if (Votos_em_cada_jogador[i] > Votos_Melhor_Jogador[1])
{
Votos_Melhor_Jogador[1] = Votos_em_cada_jogador[i];
Percentual_Melhor_Jogador[1] = Percentual_de_cada_jogador[i];
Numero_do_Melhor_Jogador[1] = i;
}
}

for (int j = 1; j < 24; j++)
{
if (Votos_em_cada_jogador[j] == Votos_Melhor_Jogador[1])
{
Votos_Melhor_Jogador[j] = Votos_em_cada_jogador[j];
Percentual_Melhor_Jogador[j] = Percentual_de_cada_jogador[j];
Numero_do_Melhor_Jogador[j] = j;
}
}

for (int k = 1; k < 24; k++)
{
if (Votos_Melhor_Jogador[k] != 0 && Votos_em_cada_jogador[k] == Votos_Melhor_Jogador[k])
{
Numero_de_melhores_jogadores++;
}
}

if (Numero_de_melhores_jogadores > 1)
{
cout << "Os melhores jogadores, segundo os telespectadores foram os seguintes:" << endl;
MeuArquivo << "\nOs melhores jogadores, segundo os telespectadores foram os seguintes:\n" << endl;
}
else if (Numero_de_melhores_jogadores == 1)
{
cout << "O melhor jogador, segundo os telespectadores foi o seguinte:" << endl;
MeuArquivo << "\nO melhor jogador, segundo os telespectadores foi o seguinte:\n" << endl;
}
cout << "-------------------------------------------------------------" << endl << endl;
for (int l = 1; l < 24; l++)
{
if (Votos_em_cada_jogador[l] == Votos_Melhor_Jogador[l] && Votos_em_cada_jogador[l] != 0)
{
MeuArquivo << "Camisa nº " << Numero_do_Melhor_Jogador[l] << endl;
MeuArquivo << "Com " << Votos_Melhor_Jogador[l] << " votos" << endl;
MeuArquivo << "Sendo essa quantidade, " << Percentual_Melhor_Jogador[l] << "% do total de votos " << endl;
MeuArquivo << "\n";


cout << "Camisa nº " << Numero_do_Melhor_Jogador[l] << endl;
cout << "Com " << Votos_Melhor_Jogador[l] << " votos" << endl;
cout << "Sendo essa quantidade, " << Percentual_Melhor_Jogador[l] << "% do total de votos " << endl;
cout << "\n";
}
}
cout << "-------------------------------------------------------------" << endl << endl;
MeuArquivo << "-------------------------------------------------------" << endl << endl;
Fechar();
cin.get();
}

void Abrir()

{
MeuArquivo.open("Resultado.txt", ios::app | ios::out);
}

void Fechar()

{
MeuArquivo.close();
}

int main()
{
setlocale(LC_ALL, "Portuguese");
Voto_do_telespectador(Votos_em_cada_jogador);
Total_de_votos(Numero_de_votos);
Numero_de_votos_de_cada_jogador(Votos_em_cada_jogador);
Percentual_de_votos_de_cada_jogador(Numero_de_votos, Votos_em_cada_jogador);
Descobrir_jogador_preferido(Numero_do_Jogador, Votos_em_cada_jogador, Percentual_de_cada_jogador);

cin.get();
return 0;
}

[/codebox]

Att.,

Pedro

Editado por PedroCunha
Link para o comentário
Compartilhar em outros sites

  • 0

Se alguém está tentando fazer por esse programa em JAVA, vou disponibilizar um código semelhante, só que neste caso o jogador pode ser de 1 a 99, não se limita a 23.

import java.util.*;
    public class programa1{
        public static void main (String [] Args) {
            Scanner ler = new Scanner(System.in);
        
            int n1 = -1;
            int[] votacao = new int[100];
            int votos = 0;
            int melhor = 0;
        
            System.out.println("Vamos começar a contagem de votos para ver quem é o melhor jogador, agora aperte ‘ENTER’ para começar");
            ler.nextLine();
        
            for(int i = 0; i < votacao.length; i++) {
                votacao = 0;
            }
        
            while(n1 != 0) {
                System.out.print("Digite um numero entre 1 e 99, ou 0 para terminar ");
                n1 = ler.nextInt();
                if(n1 < 0 || n1 > 99) {
                    System.out.println("Erro, digite novamente um numero que seja entre 1 e 99, ou 0 para terminar");
                } else if(n1 != 0) {
                    votacao[n1]++;
                    votos++;
               }
             }
        
            for(int i = 0; i < votacao.length; i++) {
                if(votacao[melhor] < votacao) {
                melhor = i;
               }
            }
        
            System.out.println("Votação acabou!");
            System.out.println("Total dos votos validos: " + votos + "\n");
            
            if(votos > 0) {
                 System.out.printf("%-9s %-6s %s\n", "Jogador", "Votos", "%");
            }
        
            for(int i = 0; i < votacao.length; i++) {
                if(votacao != 0) {
                    double perc = ((double) votacao / (double) votos) * 100;
                    System.out.printf("%-9d %-6d %2.1f\n", i, votacao, perc);
               } 
            }
        
            System.out.println("Melhor Jogador " + melhor + ", tendo " + votacao[melhor] + " votos validados, com a porcentagem de " + (((double) votacao[melhor] / (double) votos) * 100) + " %");
    }
}
 

 

 

Editado por Eduardo Decavatá Rodrigues
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...