• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NovataC

Processamento de uma string de numeros

3 mensagens neste tópico

Bom, a ideia é ter uma string do tipo ” 23,4,5,5,67, “ e por cada valor entre virgulas coloca-lo numa posição de um vector de inteiros (int*v).

Neste caso seria v[0]=23 , v[1]=4 e assim sucessivamente.

O meu programa funciona apenas para numeros de um digito e não o consigo corrigir. :wallbash:

void processaLinhaClassificacoesD(char *classificacoesD) // classificacoesD é a string denumeros inteiros separados por virgulas

{

                int percentagens[MAX_CLASSIF]; //o vector percentagens é para onde quero ler os números da string

               

                int pos=0; //pos designa cada posição do vector percentagens

                int posClassificacoes=0;// posClassificacoes designa cada posição de classificacoesD

                contaPosicoes( classificacoesD); //a função contaPosicoes funciona perfeitamente

               

                int numeroPosicoes=contaPosicoes( classificacoesD);

                while (posClassificacoes<=numeroPosicoes-1)

                {

                                                                                             

                              if(classificacoesD[posClassificacoes]!=',')

                              {

                                              percentagens[pos]=classificacoesD[posClassificacoes];

                                              posClassificacoes++;

                              }

                                             

                              else

                              {

                                            pos++;//  é suposto esta variável ser actualizada quando é detectada uma      virgula, até lá várias posições de classificacoesD devem ser lidas para uma só posicao de percentagens

                                                                             

                                              posClassificacoes++;

                              }

                                                             

                }                                                                                           

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu programa funciona apenas para numeros de um digito e não o consigo corrigir. :wallbash:

Podes usar a função strtok para ires retirando os tokens da string, que vão corresponder aos vários números. Vê neste exemplo: http://www.cplusplus.com/reference/clibrary/cstring/strtok/

Não te esqueças de usar a função atoi para converteres as strings sucessivas que representam os números em inteiros.

ou:

percentagens[pos]=percentagens[pos]*10+atoi(classificacoesD[posClassificãcoes]);

Acho eu (não testei)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora