Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Error al definir mi propia función

Estas en el tema de Error al definir mi propia función en el foro de C/C++ en Foros del Web. Hola amigos!! Soy nuevo en el foro y me he registrado para poder pedir ayuda con todas mis dudas sobre la programación en C++ y ...
  #1 (permalink)  
Antiguo 04/12/2013, 10:47
Avatar de Verraco  
Fecha de Ingreso: diciembre-2013
Mensajes: 3
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta Error al definir mi propia función

Hola amigos!! Soy nuevo en el foro y me he registrado para poder pedir ayuda con todas mis dudas sobre la programación en C++ y si puedo, poder ayudar yo tambien.

Esta vez mi problema es el siguiente, me piden que haga un programa que pida por teclado una instrucción hexadecimal y que muestre a que clase pertenece(movimiento, lógico-aritméticas, salto incondicional o salto condicional).
Este es el código:

#include <stdio.h>

int obtclase (unsigned short a);

int main()
{
int aux;
unsigned short ins;
int clase;

printf ("EJERCICIO 6, 7 y 8.\n\n");

printf ("Dame una instruccion en hexadecimal: ");
fflush (stdin);
scanf ("%x", &aux);

ins=aux;
clase=(ins>>14)&3;

printf ("La clase de la instruccion %4.4X es %d\n", ins, clase);
return 0;
}


Hasta ahí todo correcto, pero en el siguiente apartado me dicen que haga mi propia función llamada obtclase que sustituye en el código a "(ins>>14)&3".
El digo de este apartado es este:

#include <stdio.h>

int obtclase (unsigned short a);

int main()
{
int aux;
unsigned short ins;
int clase;

printf ("EJERCICIO 6, 7 y 8.\n\n");

printf ("Dame una instruccion en hexadecimal: ");
fflush (stdin);
scanf ("%x", &aux);

ins=aux;
clase=obtclase(ins);

printf ("La clase de la instruccion %4.4X es %d\n", ins, clase);
return 0;
}

int obtclase (unsigned short a)
{
int clase;
unsigned short ins;
clase == (ins>>14)&3;

return clase;
}

El problema es que me he equivocado en algo ya que en el segundo programa sale que la clase de la instrucción es siempre 0. Mientras que en el primer programa iba de 0 a 3

Si alguien sabe en que me he equivocado me ayudaría muchísimo

Saludos y gracias :)
  #2 (permalink)  
Antiguo 04/12/2013, 11:04
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: Error al definir mi propia función

Buenas.

Código C:
Ver original
  1. clase == (ins>>14)&3; >> Debería ser: clase = (a>>14)&3;

La variable ins, que está en la función obtclase, no es la misma que está en main, por lo tanto, le estabas pasando una variable vacía para que haga del desplazamiento. Error mío, edito, verdad que estás pidiendo un hexadecimal.

Saludos.

Última edición por guzzano; 04/12/2013 a las 11:12
  #3 (permalink)  
Antiguo 04/12/2013, 11:44
Avatar de Verraco  
Fecha de Ingreso: diciembre-2013
Mensajes: 3
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Error al definir mi propia función

Quedaría así? lo siento por mi torpeza, pero esq me sigue pasando lo mismo :/

Muchas gracias :)

Código:
#include <stdio.h>

int obtclase (unsigned short a);

int main()
{
int aux;
unsigned short ins;
int clase;

printf ("EJERCICIO 6, 7 y 8.\n\n");

printf ("Dame una instruccion en hexadecimal: ");
fflush (stdin);
scanf ("%x", &aux);

ins=aux;
clase=obtclase(ins);

printf ("La clase de la instruccion %4.4X es %d\n", ins, clase);
return 0;
}

int obtclase (unsigned short a)
{
int clase;
unsigned short a;
clase = (a>>14)&3;

return clase;
}
  #4 (permalink)  
Antiguo 04/12/2013, 11:52
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: Error al definir mi propia función

Cita:
Iniciado por Verraco Ver Mensaje
Quedaría así? lo siento por mi torpeza, pero esq me sigue pasando lo mismo :/

Muchas gracias :)

Código:
#include <stdio.h>

int obtclase (unsigned short a);

int main()
{
int aux;
unsigned short ins;
int clase;

printf ("EJERCICIO 6, 7 y 8.\n\n");

printf ("Dame una instruccion en hexadecimal: ");
fflush (stdin);
scanf ("%x", &aux);

ins=aux;
clase=obtclase(ins);

printf ("La clase de la instruccion %4.4X es %d\n", ins, clase);
return 0;
}

int obtclase (unsigned short a)
{
int clase;
unsigned short a;
clase = (a>>14)&3;

return clase;
}
Buenas, con:
int obtclase (unsigned short a) ya no te hace falta definir otra vez abajo el unsigned short a.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. unsigned short
  4. obtclase (unsigned short a)
  5. {
  6.   static int aux = 0;
  7.   aux = (a >> 14) & 3;
  8.  
  9.   return aux;
  10. }
  11.  
  12. int main()
  13. {
  14.   int aux;
  15.   unsigned short ins;
  16.  
  17.   printf("Dame una instrucción en hexadecimal: ");
  18.   scanf("%x", &aux);
  19.  
  20.   ins = aux;
  21.  
  22.   printf ("La clase de la instruccion %4.4X es %d\n", ins, obtclase(ins));
  23.   return 0;
  24. }

Así debería funcionar, de casualidad, ¿qué instrucción hexadecimal le das para que te de como resultado un número diferente a 0?
  #5 (permalink)  
Antiguo 04/12/2013, 11:56
Avatar de Verraco  
Fecha de Ingreso: diciembre-2013
Mensajes: 3
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Error al definir mi propia función

MUCHÍSIMAS GRACIAS GUZZANO, me has ayudado enormemente :D:D:D:D

Etiquetas: ayuda!!, clase, funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:07.