Jump to content
Fórum Script Brasil
  • 0

[Duvida] Printf em txt


dankobaia

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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

Edited by PedroCunha
Link to comment
Share on other 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) + " %");
    }
}
 

 

 

Edited by Eduardo Decavatá Rodrigues
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...