zetotec Posted November 2, 2007 at 08:38 PM Report Share #144759 Posted November 2, 2007 at 08:38 PM OLá a todos, Estou no inicio da aprendizagem do C#. 😄 Preciso de determinar, dentro de um conjunto de digitos inseridos pelo utilizador, quais são letras e quais são numeros, de forma a fazer calculos com os numeros e mostrar no ecrã as letras introduzidas, mas já separadas dos numeros. Desde já agradeço a vossa ajuda. Cmps, Link to comment Share on other sites More sharing options...
Betovsky Posted November 2, 2007 at 10:50 PM Report Share #144787 Posted November 2, 2007 at 10:50 PM Podes usar para isso os métodos associados ao Char. http://msdn2.microsoft.com/en-us/library/system.char_members.aspx No teu caso deve-te interessar os métodos isDigit e isLetter. "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
zetotec Posted November 3, 2007 at 10:40 AM Author Report Share #144837 Posted November 3, 2007 at 10:40 AM Obrigado pela dica, vou testar. Link to comment Share on other sites More sharing options...
zetotec Posted November 5, 2007 at 10:32 PM Author Report Share #145499 Posted November 5, 2007 at 10:32 PM Olá.. Ainda não consegui... A ideia é fazer um pequeno programa em modo consoloa,onde o utilizador introduza varios digitos e quando carregar no enter, mostrar no ecrã quantos numeros introduziu,quantas letras introduziu, e a soma dos numeros introduzidos. Para isso penso que tenho que percorrer a string e verificar caracter a caracter qual o tipo. Se for numerico,conta e soma senão conta as letras. O meu problema é saber como percorrer a string para verificar os caracteres. 😛 Desde já agradeço a vossa ajuda... Link to comment Share on other sites More sharing options...
Betovsky Posted November 5, 2007 at 11:22 PM Report Share #145514 Posted November 5, 2007 at 11:22 PM Mas mete-se todos os números e letras ao mesmo tempo? Como estás a separar os números para somar? Consideras um número cada digito? Ou estás a separar os números por espaços? Se for por espaços podes separar em grupos usando o método Split. Para percorres a String letra a letra podes usar o foreach "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk Link to comment Share on other sites More sharing options...
zetotec Posted November 6, 2007 at 09:40 AM Author Report Share #145568 Posted November 6, 2007 at 09:40 AM mete-se tudo junto ex: 1476743567hjhkjdfhjsdh38423872wfsd (conjunto=Console.Readline()🙂 //leio o exemplo acima escrito O conjunto vai ser a minha variavel do tipo string que vai receber o exemplo. Agora e pegar no exemplo( variavel conjunto) e tratá-lo de forma a mostrar no ecrã quantos numeros introduziu,quantas letras introduziu, e a soma dos numeros introduzidos. Qualquer dica é bem vinda Link to comment Share on other sites More sharing options...
RVG Posted November 6, 2007 at 10:05 AM Report Share #145575 Posted November 6, 2007 at 10:05 AM boax... string pr=string.Empty; string string_letras=string.Empty; string string_numeros=string.Empty; int somatorio=0; pr=conjunto; foreach(char s in pr) { if(Char.IsDigit(s)) { string_numeros+=s; somatorio+=Convert.ToInt32(Convert.ToString(s)); } if(Char.IsLetter(s)) { string_letras+=s; } } MessageBox.Show("N. de Letras: "+Convert.ToString(string_letras.Length)); MessageBox.Show("N. de Digitos: "+Convert.ToString(string_numeros.Length)); MessageBox.Show("Somatorio: "+Convert.ToString(somatorio)); Link to comment Share on other sites More sharing options...
zetotec Posted November 6, 2007 at 11:51 AM Author Report Share #145593 Posted November 6, 2007 at 11:51 AM Olá. Obrigado pelo codigo, fiz ligeiramente diferente, mas o resultado é o pretendido. Fica aqui o que fiz: Console.Write("Introduza conjunto de digitos: "); s = Console.ReadLine(); foreach (char c in s) { if (((int)c > 46) && ((int)c < 58)) { cont1 = cont1 + 1; num=Convert.ToInt32(Convert.ToString(c)); soma = soma + num; } else { cont2 = cont2 + 1; } } Console.WriteLine("total numeros: {0}", cont1); Console.WriteLine("total letras: {0}", cont2); Console.WriteLine("soma: {0}", soma); mais uma vez, muito obrigado cmps, Link to comment Share on other sites More sharing options...
RVG Posted November 6, 2007 at 12:10 PM Report Share #145595 Posted November 6, 2007 at 12:10 PM Boax... Preciso de determinar, dentro de um conjunto de digitos inseridos pelo utilizador, quais são letras e quais são numeros Posso tar enganado... mas $ ou % ou [ para mim nao sao letras.... Outra coisa... se introduzires a cadeia 12h4/qw , o que esperas obter ? Link to comment Share on other sites More sharing options...
zetotec Posted November 6, 2007 at 01:12 PM Author Report Share #145612 Posted November 6, 2007 at 01:12 PM como de certexa repararaste eu estou a comparar através da tabela ASCII " if (((int)c > 46) && ((int)c < 58))", seguindo esta lógica vou validar para também distinguir maiusculas de minusculas, e outros caraecters que não numeros ou letras. O que coloquei foi apenas uma parte do codigo. A tua observação faz todo o sentido e realmente da foma como fizeste também funciona. Obrigado Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now