elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda en programa uso char
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda en programa uso char  (Leído 2,134 veces)
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Duda en programa uso char
« en: 18 Marzo 2013, 20:48 pm »

Hola,
Tengo que realizar un programa el cual 2 dada un carácter leído desde teclado devolver su lugar en el alfabeto (a=1, z=26) independientemente si es mayúscula o minúscula. Si no es letra devolver el valor 0 ó si es un espacio en blanco devolver el valor -1.

Mi problema está que no me quedan caracteres para utilizar, ya que si utilizo 'ñ' (que no está en el alfabeto) me da un error del tipo stray '\347' creo que es debido a que char no puede guardar el valor en la letra 'ñ'.

Aquí hasta donde he llegado:
Citar
#include<iostream>
using namespace std;
int main(){
char ñ,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;
cin>>ñ;
if(ñ=='a' or ñ=='A'){cout<<"1"<<endl;}
else if(ñ=='b' or ñ=='B'){cout<<"2"<<endl;}
else if(ñ=='c' or ñ=='C'){cout<<"3"<<endl;}
else if(ñ=='d' or ñ=='D'){cout<<"4"<<endl;}
else if(ñ=='e' or ñ=='E'){cout<<"5"<<endl;}
else if(ñ=='f' or ñ=='F'){cout<<"6"<<endl;}
else if(ñ=='g' or ñ=='G'){cout<<"7"<<endl;}
else if(ñ=='h' or ñ=='H'){cout<<"8"<<endl;}
else if(ñ=='i' or ñ=='I'){cout<<"9"<<endl;}
else if(ñ=='j' or ñ=='J'){cout<<"10"<<endl;}
else if(ñ=='k' or ñ=='K'){cout<<"11"<<endl;}
else if(ñ=='l' or ñ=='L'){cout<<"12"<<endl;}
else if(ñ=='m' or ñ=='M'){cout<<"13"<<endl;}
else if(ñ=='n' or ñ=='N'){cout<<"14"<<endl;}
else if(ñ=='o' or ñ=='O'){cout<<"15"<<endl;}
else if(ñ=='p' or ñ=='P'){cout<<"16"<<endl;}
else if(ñ=='q' or ñ=='Q'){cout<<"17"<<endl;}
else if(ñ=='r' or ñ=='R'){cout<<"18"<<endl;}
else if(ñ=='s' or ñ=='S'){cout<<"19"<<endl;}
else if(ñ=='t' or ñ=='T'){cout<<"20"<<endl;}
else if(ñ=='u' or ñ=='U'){cout<<"21"<<endl;}
else if(ñ=='v' or ñ=='V'){cout<<"22"<<endl;}
else if(ñ=='w' or ñ=='W'){cout<<"23"<<endl;}
else if(ñ=='x' or ñ=='X'){cout<<"24"<<endl;}
else if(ñ=='y' or ñ=='Y'){cout<<"25"<<endl;}
else if(ñ=='z' or ñ=='Z'){cout<<"26"<<endl;}



}

Gracias


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda en programa uso char
« Respuesta #1 en: 18 Marzo 2013, 21:34 pm »

Ufff , hay una forma más sencilla de hacerlo, cada letra en la tabla ASCII tiene un valor, la ñ es un carácter extendido por lo que tendrás que hacer otra cosa para añadirla, bueno si te fijas en esta tabla:

Las letras mayúsculas van desde el rango 65 hasta el 90, sin la ñ. Para que la A te quede como 1 pues haces 65 - 64 , y tienes la posición desde las letras A hasta la N , para los rangos desde la O hasta la Z puedes restar el valor de la letra menos 63 dado que en la tabla ASCII no cuentan la Ñ. En este código compruebo las letras y el valor que no sea pues siempre da 15 dado que sería la Ñ.
Código
  1. #include <iostream>
  2. #include <locale>
  3.  
  4. using namespace std;
  5.  
  6. int main ( int argc , char *argv[])
  7. {
  8.    char letra = 0;
  9.  
  10.    cout << "Introduzca la letra: ";
  11.  
  12.    cin.get(letra);
  13.  
  14.    letra = toupper(letra);
  15.  
  16.    if((letra >= 'A') && (letra <= 'N'))
  17.        cout << "La posicion de tu letra en el alfabeto es " << ((unsigned int)letra)-64 << endl;
  18.    else if ((letra >= 'O') && (letra <= 'Z'))
  19.        cout << "La posicion de tu letra en el alfabeto es " << ((unsigned int)letra)-63 << endl;
  20.    switch (letra)
  21.    {
  22.    case ' ':
  23.        cout << -1;
  24.        break;
  25.    default:
  26.        cout << "La posicion de tu letra en el alfabeto es " << 15 << endl;
  27.    }
  28.    return 0;
  29. }
Es que trabajar con la ñ es muy jodido quizás alguien de por aquí si sepa más que yo porque me parece que varía según el S.O.

¡Saludos!


« Última modificación: 18 Marzo 2013, 21:41 pm por avesudra » En línea

Regístrate en
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: Duda en programa uso char
« Respuesta #2 en: 19 Marzo 2013, 00:11 am »

Muchas gracias por la respuesta :D

Lo único es que debería especificar las variables (letras del abecedario).

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 6,045 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
Lectura de matríz de char como char** o DWORD*
Programación C/C++
david_BS 3 3,272 Último mensaje 20 Febrero 2012, 20:49 pm
por Eternal Idol
Como pasar una cadena char a hexadecimal por argumento a un constant char?
Programación C/C++
ahaugas 3 4,898 Último mensaje 13 Enero 2013, 14:09 pm
por ahaugas
Problema conversión Unsigned char a char
Programación C/C++
juliodiez 4 2,634 Último mensaje 19 Enero 2013, 04:34 am
por juliodiez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines