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?