mostrar el codigo ASCII pero en pantalla

Iniciado por mamuroti, 30 Enero 2017, 21:36 PM

0 Miembros y 1 Visitante están viendo este tema.

mamuroti

Hola como estan es mi primera vez que publico un codigo en este foro pero estoy desesperado no consigo en ningun lado una solucion. Bueno es solo una linea quiero saber como mostrar el codigo ASCII pero en pantalla cuando ingreso por ejemplo el "1" y me aparece una carita pero lo que quiero que vea el usuario es el numero 49.
gracias de ante mano
el programa tiene que ser en c

#include <stdio.h>
#include<stdbool.h>
bool continuar;
int cont=0;
int z,i,j,n,c=0,c1=0,c2=0,k,l,d,x,opcion,opcion1,c3=0,op,c4=0,c5=0;
unsigned char a[100][100],ac[100][100];
char q,m;
float lectura(void);

int main() {
float n;
n=lectura();

return 0;
}

float lectura(void)
{

{
int i;
short decimal=0,centinela;
char f[20];
float potencia,n;
do{
potencia=1;
n=0;
centinela=0;
printf("Introduzca el tamaxA5o de la matriz \n""Nota la matriz tiene que ser cuadrada "" \n");
scanf("%s", &f);
for(i=0;i<f[i];i++){
if(f[i]!='.' && f[i]>47 && f[i]<57){
potencia*=10;
}
else{
break;
}
}
for(i=0;i<f[i];i++){
if(f[i]>47&&f[i]<57&&decimal==0){
potencia/=10;
n=((f[i]-48)*potencia)+n;
}
if(f[i]=='.'){
decimal=1;
potencia=0.1;
}
if(f[i]>47&&f[i]<57&&decimal!=0){
n=((f[i]-48)*potencia)+n;
potencia*=0.1;
}
if( (f[i]<47||f[i]>57) && f[i]!='.'){
centinela=1;
printf("\nError el dato \"%s\" no es un numero",f);
printf("\n Por Favor Intente de Nuevo\n",f);
break;
}
}
}
while(centinela!=0);

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("Introduzca el numero en la posicion [%d,%d]=",i,j);
scanf("%d", &a[i][j]);


ac[i][j]=a[i][j];
}
}
for(i=1;i<=n;i++)
{//4
for(j=1;j<=n;j++)
{//5

for (j=1;j<=n;j++)
{//6
printf("| %d |",a[i][j]);
}//6
printf("\n");
}//5
}

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
z=a[i][j];
c4=c4+z;

printf("El caracter %d tiene como codigo acII %c \n",z,z); // Aqui es el error
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
z=a[i][j];
c=c+z;
c5=c5+z;
c1=c1+z;
}
printf("la sumatoria del codigo Asc II de la fila %c \n",c);
printf("la sumatoria acumulada del codigo Asc II de la fila %c\n",c5);
c=0;
}
c5=0;
printf("La Sumatoria total del codigo Asc II de la matriz es %c\n",c1);

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
z=a[i][j];
if(z%5==0)
{
printf("El caracter %c es  multiplo de 5 \n",a[i][j]);

}

if(z%2==0)
{   printf("El caracter %c es par \n",a[i][j]);

}
else
{
printf("El caracter %c es  impar \n",a[i][j]);
}
for(d=1;d<=z;d++)
{
if(a[i][j]%d==0)
{
x++;
}
       }
if(x==2)
{
printf("El caracter %c es  primo \n",a[i][j]);

}
else
{
printf("El caracter %c no es primo \n",a[i][j]);
}
x=0;
}
}




printf("Introduzca el caracter a buscar \n");
 scanf("%d", &q);
 fflush( stdin );
 
 for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(q==a[i][j])
{
printf("Se encuentra el caracter en la posicion [%d,%d] \n",i,j);

c2=c2+1;
}
}
}
printf("El numero esta un total de %d  veces \n",c2);

//5.ordenar de menor a mayor
printf("Ordenar de Menor a mayor=1 \n");
printf("Ordenar de Mayor a menor=2 \n");
fflush(stdin);
scanf("%d", &opcion);
switch(opcion)
{
   case 1:
       for(i=1;i<=n;i++)
           {//1
       for(j=1;j<=n;j++)
           {//2
           for(k=i+1;k<=n;k++)
           {//3
       for(l=j+1;l<=n;l++)
       {//4
       if(a[i][j]>a[k][l])
       {//5
   a[i][j]=a[k][l];
   a[k][l]=ac[i][j];
       }//5
           }//4
           }//3
           }//2
           }//1
           for(i=1;i<=n;i++)
           {//6
       for(j=1;j<=n;j++)
       {//7
       printf("| %d |",a[i][j]);
       }//7
       printf("\n");
           }//6
           break;
case 2:
for(i=1;i<=n;i++)
           {//1
       for(j=1;j<=n;j++)
           {//2
           for(k=i+1;k<=n;k++)
           {//3
       for(l=j+1;l<=n;l++)
       {//4
       if(a[i][j]<a[k][l])
       {//5
   a[i][j]=a[k][l];
   a[k][l]=ac[i][j];
       }//5
           }//4
           }//3
           }//2
           }//1
           for(i=1;i<=n;i++)
           {//6
       for(j=1;j<=n;j++)
       {//7
       printf("| %d |",a[i][j]);
       }//7
       printf("\n");
           }//6
           break;


default:
printf("Ha ingresado un numero no valido\n");
break;

}
}

printf("Los caracteres que conforman la diagonal principal son: \n");

for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)
{
z=ac[i][j];
c3=c3+z;
m=z;
printf("Codigo Asc II %d \n",m,z);


}

}
}
printf("La sumatoria del codigo Asc II de la diagonal principal de la matriz es %d\n",c3);

c3=0;
for ( i = 1; i <=n; i++)
{
for(j=1;j<=n;j++)
{
z = ac[i][j];
if ((z>=48)&&(z<=57))
{
printf("El caracter %d es un numero en la posicion [%d,%d]\n",a[i][j]);

}
}
}
printf("Deasea continuar con el programa si=1 o No=2 \n");
scanf("%d",&op);

system("cls");
c1=0;

while(op==1);
return 0;
}


 



· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descptivos
>aquí las reglas del foro
-Engel Lex

Kenji-chan

simplemente con imprimir el numero ingresado por el usuario es suficiente
printf("%c = %d",numerIngresado, numerIngresado);
y eso te imprime elcodigo ASCII y el numero respectivo

mamuroti

Me sigue dando el mismo error de mostrar las caritas

engel lex

printf("%c = %d",numerIngresado+'0', numerIngresado);

tu codigo es largo y complicado de leer... asumo que capturas ese numero ingresado como un "int" te muestra una caria, porque es el char en la posición 1... así que para "desplazarlo" hasta los numeros, le sumas el char de la posición 0 y eso hará el ajuste

si el numero ingresado es mayor a 9, esto dará simbolos, ya que no hay un ejemento tipo char para los numeros mayores a 9, en ese caso deberás hacerlo numero por numero
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.