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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

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.