¿Cómo puedo crear un programa en C y C++ que me diga su código ascii al oprimir una tecla?

Se me ha pedido que haga dos programas en c el primero es este que cuando oprima una tecla esta me diga su código ascii más o menos lo tengo hecho pero no se donde me equivoque me puedes ayudar:
#include <stdio.h>
#include <conio.h>
int main()
{ int tecla;
  strstr();
  textcolor(15), textbackground(1) , clrscr() , gotoxy(37,2) , cprintf("ASCII");
  gotoxy(10,4), cprintf("Oprime una tecla para saber el codigo ascii:");
  gotoxy(6,6) , cprintf("Para terminar oprime la tecla esc (cuyo codigo es 27):");
  gotoxy(4,16);
  cprintf("NOTA: Teclas como F1, F2... Las flechas... Generan dos numeros");
  do
  { fflush(stdin) , tecla=getch() , gotoxy(33,10) , cprintf("Ascii = %d" , tecla);
    clreol();
    if(tecla==0) , tecla=getch() , cprintf("%c%c%c%c%d",32,32,32,32,tecla);
  }
  while(tecla!=27);
  getch();
  return(0);
}
Ademas tengo otro el cual un programa que introduzca un conjunto de valores cualquiera separado por coma y que el programa se encargue de mostrar cada valor en una línea separada. Por ejemplo, en la salida podría pedirse lo siguiente:
INTRODUZCA VALORES SEPARADOS POR COMA:
PERRITA,GATICO,YORKSHIRE,YITZU,POODLE
El RESULTADO sería entonces : (lo hice pero me sale dejando espacio no comas)
    * PERRITA
    * GATICO
    * YORKSHIRE
    * YITZU
    * POODLE
#include <conio.h>
#include <stdio.h>
main()
{
   int i;
   printf("\n Introduce una frase para poner cada palabra en una linea:\n\n");
   char frase[500]={" "};
   gets(frase);
   for (i=0;i<500;i++)
   {
     if (frase==' ' && frase[i+1]==' ' )
        {
        }
     else
        {
           if (frase!=' ')
              printf("%c", frase);
           else
             printf ("\n\n");
        }
   }
   getch();
}

1 respuesta

Respuesta
1
He "arreglado tus dos programas" y los he comprobado y funcionan bien, si necesitas que te lo explique pídemelo, de lo contrario aquí los tienes y los puedes comparar con los tuyos.
Solo te doy un par de advertencias:
- Cada instrucción finaliza con un punto y coma ; y no con una coma,
- Es mucho más aconsejable escribir cada instrucción en lineas diferenetes.
--------------------------------------------
#include <stdio.h>
#include <conio.h>
int main(){
  int tecla;
  //strstr();
  textcolor(15);
  textbackground(1);
  clrscr();
  gotoxy(37,2);
  cprintf("ASCII");
  gotoxy(10,4);
  cprintf("Oprime una tecla para saber el codigo ascii:");
  gotoxy(6,6);
  cprintf("Para terminar oprime la tecla esc (cuyo codigo es 27):");
  gotoxy(4,16);
  cprintf("NOTA: Teclas como F1, F2... las flechas... generan dos numeros");
  do{
    fflush(stdin);
    tecla=getch();
    gotoxy(33,10);
    cprintf("Ascii = %d", tecla);
    clreol();
    if(tecla==0){
      tecla=getch();
      cprintf("%c%c%c%c%d",32,32,32,32,tecla);
    }
  }
  while(tecla!=27);
  //getch();
  return 0;
}
--------------------------------------------
#include <conio.h>
#include <stdio.h>
/*
Según he leído quieres que el usuario introduzca palabras separadas
por comas, pues si es así, en la condición if (frase! =' ') ...
tendras que cambiar ' '  por ','
*/
char frase[500];//Cambiado de linea
int i;
main(){
   clrscr();//He a¤adido esto
   for (i=0;i<500;i++)
     frase=' ';    //Inicializa todos los caracteres a espacios en blanco
   printf("\n Introduce una frase para poner cada palabra en una linea:\n\n ");
   gets(frase);
   i=0;
   while(i<500){ //He cambiado el for por un while porque me parece
         //parece mas apropiado
     if (frase==' ') //Cuando encuentre un espacio querr  decir
       i=500;           //que ya no hay mas palabras por tanto
            //se sale del bucle
     else{
       if (frase!=',')//Faltaba
     printf("%c", frase);//Faltaba
       else
     printf ("\n\n");
       i++;
     }
   }
   getch();
   return 0; //Faltaba esta linea
}
Muchas gracias y ademas me puedes aclarar esto este programa me da un erro donde esta en negrita:
#include <iostream>
#define mt 500
using namespace std;
char txt[mt];
int len , Uper = 0 , Lower = 0;
int main(){
    cout << "Inserte su texto( 500 chrs ): " << endl;
    cin >> txt;
    len = strlen( txt );
     for ( int i = 0; i < len; i++ ){
        if ( (txt >= 'a') && (txt <= 'z') ) Lower++; else
        if ( (txt >= 'A') && (txt <= 'Z') ) Uper++;
        }
    if ( Uper == 0 && Lower > 0 && len > 0 ) cout << "Todas son minúsculas."; else
    if ( Uper > 0 && Lower == 0 && len > 0 ) cout << "Todas son mayúsculas."; else
    if ( Uper > 0 && Lower && len > 0) cout << "Es mixto."; else
    if ( len == 0 ) cout << "Su texto no tine chrs.";
    system( "pause > nul" );
    return EXIT_SUCCESS;
    }
Ese error es debido a que no especificas entre corchetes el carácter de la variable txt en la que nos encontramos.
Según veo la variable txt tiene 500 caracteres por tanto cuando escribas txt, no puedes escribir solo txt sino txt[X] donde POR es el carácter en el que nos encontramos que en tu caso varía de 0 a 499, y en la linea esa en la que te da el fallo supongo que lo que quieres hacer es esto:
if ( (txt >= 'a') && (txt <= 'z') ) Lower++; else
Y te dará el mismo error en la linea siguiente...
Suerte,
Joe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas