Conversão de Caracter para inteiro

1. Conversão de Caracter para inteiro

Joanildo
JoaoCCC

(usa Outra)

Enviado em 13/11/2012 - 21:15h

Olá.
Gostaria de ler um arquivo txt com números, carácter a carácter.
Converter cada carácter para string.
Juntar e formar uma strig com esses carácteres.
Converter esta string em inteiro.

Fiz o programa todo, mas na hora de imprimir o conteúdo da variável ela tá zerada, ou seja, nada foi convertido.

OBS: Não adianta ler string no arquivo, pois preciso ler carácter por carácter para saber diferenciar o que é número do que é barramento, fim de linha e espaço. Isso eu sei difenciar, por isso tem que ler cada carácter separadamente.

Espero que tenha sido claro.

Obrigado.

OBS: Tem pouca experiência com manipulação de arquivo, mas manjo bastante outras coisas em C.


  


2. Re: Conversão de Caracter para inteiro

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/11/2012 - 00:13h

A cada algarismo que você encontrar, multiplique o valor anterior por dez e some o valor do novo algarismo.


3. Re: Conversão de Caracter para inteiro

Joanildo
JoaoCCC

(usa Outra)

Enviado em 14/11/2012 - 10:05h

paulo1205 escreveu:

A cada algarismo que você encontrar, multiplique o valor anterior por dez e some o valor do novo algarismo.


Não entendi colega. Estou trabalhando com caracter, como vou multiplicá-lo por 10? A tabela ASC só vai até 255.
Se não quizer ajudar não escreva, tá.


4. Re: Conversão de Caracter para inteiro

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/11/2012 - 19:31h

JoaoCCC escreveu:

paulo1205 escreveu:

A cada algarismo que você encontrar, multiplique o valor anterior por dez e some o valor do novo algarismo.


Não entendi colega. Estou trabalhando com caracter, como vou multiplicá-lo por 10? A tabela ASC só vai até 255.
Se não quizer ajudar não escreva, tá.


Sua falta de educação e ingratidão explícitas revelam a limitação que você tentou esconder ao se gabar de que sabe um bocado de C, fora a parte de arquivos. Apesar disso, eu queria ajudá-lo e, na verdade, continuo querendo. Por isso mesmo, dei a você uma informação correta na mensagem anterior e continuarei, agora, a tratá-lo com toda a paciência paternal que tenho. Só que, agora, em lugar de relevar pacientemente os erros que você cometeu em sua primeira mensagem, vou corrigir, item por item, todos os erros (exceto os de digitação, para não cansar nenhum de nós com algo meramente acidental) de suas duas mensagens, como um paizão que deseja ver sua prole rica em conhecimentos corretos, para não "pagar mico" na frente de estranhos.

Seu primeiro tropeço foi colocar, no título do tópico, "Caracter". Essa palavra -- a não ser como neologismo incorporado recentemente por alguns dicionaristas, por causa da ignorância da língua compartilhada com você por uma grande massa de profissionais de informática -- não existe em língua portuguesa. O certo, em Português, é caráter, cujo plural é caracteres.

Ainda com referência a essa palavra e à ideia que você transmitiu ao colocá-la no título, você deveria saber que converter de caráter para inteiro em C é trivial, já que um caráter é um inteiro. Eu sei que você quis dizer "string" ou "sequência de caracteres", e até respondi anteriormente tendo o sentido que você quis dizer realmente. Mas você tem de saber que nem um compilador nem muitas áreas da vida vão inferir o que você tenha querido dizer, mas somente aquilo que você disser.

No campo da língua, há outros problemas. A pontuação está sofrível, com omissão de vírgulas para vocativos, orações coordenadas separadas por ponto e pergunta sem ponto de interrogação. Você errou a pessoa do verbo ter em duas ocasiões, usando a terceira pessoa do singular quando deveria ter usado a primeira, já que estava falando de algo que você mesmo tinha de fazer (aliás, tem-se "de fazer", não se tem "que fazer"). E há ainda esse famigerado "quizer", com um bárbaro "z" no lugar do "s".

Você também está errado sobre a tabela ASCII (não é somente "ASC", e "II" não é o numeral dois em sistema romano, mas as duas letras finais da abreviatura de American Standard Code for Information Interchange), pois ela numera seus elementos de 0 a 127, não 255.

Por fim, quanto ao algoritmo, ainda algumas correções antes de fazer o desenho para você. Como um caráter é, sim, um inteiro, você poderia tranquilamente multiplicá-lo por 10. Mas não faria sentido e, por isso mesmo, não foi o que eu disse. O que eu disse, literalmente -- não há "quis dizer" nesse caso --, foi "valor do novo algarismo". O caráter "1", por exemplo, tem código 49 na tabela ASCII, mas o algarismo 1 tem o valor unitário sempre, pois não tem qualquer relação direta com ASCII, EBCDIC ou Unicode, nem qualquer outra tabela de símbolos existente ou a existir.

Assim sendo, o que eu lhe propus foi um algoritmo que acumulasse (somasse) os valores dos sucessivos algarismos depois de extraídos da string numérica, desde que, a cada novo algarismo, o valor acumulado anteriormente fosse multiplicado por dez. O que faz uma função como atoi() ou como strtoul() (não sei, aliás, por que motivo você não as utilizou) é, simplificadamente, mais ou menos o seguinte.

char *digit_str, *p;
int val;
/* ... */
for(val=0, p=digit_str; isdigit(p); p++)
val=10*val+(*p-'0');


O "truque", que de truque nada tem, é valer-se do fato de que os símbolos referentes aos algarismos ocupam posições contíguas na tabela de caracteres, ordenadas da mesma maneira que os algarismos. Como os caracteres são inteiros, '0'-'0'==0, '1'-'0'==1, '2'-'0'==2, e assim por diante, até '9'-'0'==9 (se você usasse um conjunto de caracteres exótico, poderia ter de expandir a expressão numa série testes com o operador ternário, ou vários ifs encadeados com else, ou mesmo switch, mas eu duvido que você encontre um conjunto de caracteres assim -- e acho que ninguém seria louco de criar algo desse tipo).


5. Re: Conversão de Caracter para inteiro

André
andrezc

(usa Debian)

Enviado em 14/11/2012 - 23:40h

Paulo...

Como sempre, mandando bem na C e C++ Brasil, agora também aqui no VoL. :-)


6. Re: Conversão de Caracter para inteiro

Joanildo
JoaoCCC

(usa Outra)

Enviado em 15/11/2012 - 23:51h

andrezc escreveu:

Paulo...

Como sempre, mandando bem na C e C++ Brasil, agora também aqui no VoL. :-)


Dá licença, que preciso deste espaço pra explicar algo, pois Paulo já escreveu d+.
Paulo,
Vc deve ter algum problema, com relacionamento. Sinto muito, mas não sou psicólogo, embora tivesse bastante experiência com seres deste planeta.
1º)Você tem uma visão distorcida do sentido da palavra EDUCAÇÃO.
2º)Como assim ingratidão? Vc não fez nada para AJUDAR, só tagarelou, até agora. Isso não é atitude de quem gosta de ajudar.
3º)Não escondo que tenho limitações, até pq, sou HUMANO. Vc não deve sair por ai atacando estranhos, nem mesmo conhecidos. Vc pode ficar com fâma de DOIDO E ANTI-SOCIAL. Vc não é perfeito.
4º)Paciência paterna? KKKKKK! De onde vc tirou isso, papai? Você que tá se gabando, meu fi.
Quanta baboseira. Logo ví, que por trás de uma ajuda tão simplória, haveria algo do tipo: "FALTA REAL DE INTERESSE EM AJUDAR".
NÃO imaginava que pra receber ajuda, teria que me submeter a isso.
Não sou nenhum expert em computação, apesar de ter sido um dos melhores da minha turma em algorítmos. Simplesmente, não domino manipulação de arquivo e como faz um tempinho que não programo em C, vim até aqui pedir ajuda, como uma pessoa normal faria.
Estou confuso se vc é da área de Administração, História ou Português. Ou quem sabe computação. QUE FRESCUREBA, RAPAZ.
DEVE SER POR CAUSA DE PESSOAS COMO VC QUE O PAÍS CAMINHA A PASSOS DE TARTARUGA, DETENDO O CONHECIMENTO, PARA SÓ PARA SI. PESSOAS QUE ADORAM FAZER OS OUTROS PERDER TEMPO. VC É FUNCIONÁRIO DE ALGUMA REPARTIÇÃO PÚBLICA, POR ACASO? QUANTA MOROSIDADE!
O seu lema deve ser: PARA RECEBER MINHA ILUSTRE E DISPUTADA ATENÇÃO E TER ACESSO A MINHA INFORMAÇÃO, DEVE PROVAR QUE É DIGNO DELA. DE QUALQUER FORMA, DEVE PASSAR PELO MEU SISTEMA CRIPTOGRAFADO DE SEGURANÇA MÁXIMA.
Relaxa, rapaz!
Deixa de ser inconveniente.

Neste seu desabafo, vc só mostra que está carente e doido para mostrar a sua existência neste mundo.

Agora, nem sei se faço questão de continuar aqui pedindo ajuda.



7. Re: Conversão de Caracter para inteiro

Joanildo
JoaoCCC

(usa Outra)

Enviado em 15/11/2012 - 23:54h

paulo1205 escreveu:

A cada algarismo que você encontrar, multiplique o valor anterior por dez e some o valor do novo algarismo.


Paulo, deixei uma resposta no tópico que eu criei. Dá uma lidinha. Prometo que é bem menor que o texto que vc escreveu.
Abraços...



8. Re: Conversão de Caracter para inteiro

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/11/2012 - 08:48h

JoaoCCC escreveu:

DEVE SER POR CAUSA DE PESSOAS COMO VC QUE O PAÍS CAMINHA A PASSOS DE TARTARUGA, DETENDO O CONHECIMENTO, PARA SÓ PARA SI. PESSOAS QUE ADORAM FAZER OS OUTROS PERDER TEMPO. VC É FUNCIONÁRIO DE ALGUMA REPARTIÇÃO PÚBLICA, POR ACASO? QUANTA MOROSIDADE!


Ah, sim... Vamos ver, então: TUDO o que eu escrevi para você foi dando informações válidas e corretas, para seu proveito. Logo, retenção (não detenção) de conhecimento não há. Na primeira mensagem, aliás, eu disse, de forma sucinta, exatamente o que você precisava saber, sem "morosidade" alguma, para não você não perder o seu tempo, nem eu o meu (ainda mais porque estava escrevendo via celular).

Você, que se gabara do próprio conhecimento, não entendeu a única resposta (válida!) que lhe foi dada. Tudo bem, ninguém sabe tudo, você podia ter pedido esclarecimentos. Mas não fez isso. Em lugar de ser humilde, desprezou publicamente a única ajuda que recebeu e ainda julgou erroneamente a intenção de quem o ajudou, e mandou que a voz que veio em seu socorro se calasse.

E o antissocial e com problemas de aceitação sou eu? Melhor você repensar.

Claro que eu podia ter deixado você prá lá, engolindo a ofensa pública que você me fez. E sabe o que aconteceria? Possivelmente você continuaria no escuro com relação ao seu problema, com a marca da ofensa pública caindo sobre você.

Você pode não ter gostado de ter o Português emendado e abreviaturas e suas limitações corrigidas, porém não pode negar que a mesma mensagem traz não apenas código em C ensinando a fazer, mas a menção de funções que estão na biblioteca padrão que você poderia usar em seu programa, sem reinventar a roda. Espero que você tenha visto.

Aliás, não. O que eu realmente espero para você, que é o mesmo que eu desejo para todo mundo, é que tenha conseguido fazer por conta própria, e que minha ajuda final tenha servido apenas para você confirmar o que fez. Mas tomara você pare de desprezar as pessoas e de fazer ilações injustas sobre o que passa na cabeça dos outros a partir do que está na sua própria.


9. Re: Conversão de Caracter para inteiro

???
gokernel

(usa Linux Mint)

Enviado em 16/11/2012 - 17:43h

moderadores entrem em ação pois este post me parece que não tem muito proveito não ... = "briga" e bla bla bla .

Paz, saúde e sucesso !!!



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts