Jump to content
Sign in to follow this  
NovataC

Processamento de uma string de numeros

Recommended Posts

NovataC

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++;

                              }

                                                             

                }                                                                                           

}

Share this post


Link to post
Share on other sites
joana

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)

Share this post


Link to post
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
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.