• Viernes 8 de Noviembre de 2024, 20:58

Autor Tema:  Funciones de C y videojuegos  (Leído 1499 veces)

N2eiDer

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Funciones de C y videojuegos
« en: Viernes 18 de Julio de 2008, 16:59 »
0
Soy nuevo aqui y tengo un puñado de preguntas

¿La funcion gets requiere que resere espacio para el puntero a un char? (si es asi me complicaria mucho la vida :S)
¿Como puedo hacer que dada una cadena con espacios ponga en MAYUSCULAS la primera letra de cada palabra asi: "Un Ejemplo"?

Con los TAD's fichero secuencial indexado para encontrar un elemento con esta definicion
typedef int tclave;

Código: Text
  1. typedef struct {
  2.   tclave clave;
  3.   char nombre[15];
  4. }
  5.  


¿Para comparar que no haya nombres iguales hay alguna forma de acceder al nombre sin la clave o deberia cambiar la clave a nombre?

¿Hay alguna funcion que de una lista te ordene alfabeticamente los nombres? (supongo que no, y tendre que hacerla xD)

PD: espero respuestas y seguramente venga con mas dudas :D

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Funciones de C y videojuegos
« Respuesta #1 en: Viernes 18 de Julio de 2008, 18:24 »
0
Cita de: "N2eiDer"
¿La funcion gets requiere que resere espacio para el puntero a un char? (si es asi me complicaria mucho la vida :S)

Claro que necesitas reservar espacio, como todas las variables, siento complicarte la vida.

Tengo 2 noticias, una buena y una mala :P.
La buena es que no es necesario que utilices un puntero a char, puedes usar un arreglo de char (char cadena[80])

La mala es que de todas formas necesitas tener cuidado al usar gets, porque si no reservas suficiente espacio para la cadena que vas a leer, sea con punteros o con arreglos, puedes sobreescribir la memoria, te recomendaria que utilizaras en su lugar fgets:

Código: C
  1.  
  2. fgets (cadena, 80, stdin);
  3.  
  4.  

donde 80 es el numero de caracteres a leer y stdin, es la entrada estandar.

Citar
¿Como puedo hacer que dada una cadena con espacios ponga en MAYUSCULAS la primera letra de cada palabra asi: "Un Ejemplo"?

Tienes que crear tu propia funcion, puedes usar strtok para ayudarte.

Citar
¿Para comparar que no haya nombres iguales hay alguna forma de acceder al nombre sin la clave o deberia cambiar la clave a nombre?

Esto ultimo no lo entendi muy bien, mi respuesta seria que depende de lo que quieras hacer, si necesitas la clave, entonces tienes que hacer una comparacion por nombre tambien. Si no la necesitas, usa nombre directamente como clave.

Citar
¿Hay alguna funcion que de una lista te ordene alfabeticamente los nombres? (supongo que no, y tendre que hacerla xD)

Asi es, algunos compiladores soportan una funcion llamada qsort, aunque nunca la he usado, siempre implemento mis ordenaciones ;)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

deltalinuxer

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Funciones de C y videojuegos
« Respuesta #2 en: Domingo 20 de Julio de 2008, 07:12 »
0
Citar
¿Como puedo hacer que dada una cadena con espacios ponga en MAYUSCULAS la primera letra de cada palabra asi: "Un Ejemplo"?

Yo lo haria con un for, que revise cada letra de tu cadena y que encuetre la letra después de cada espacio, y como son char's y se pueden hacer operaciones aritmeticas con ellas, puedes restarle 32 a la variable para hacerla mayúscula guiandome con la tabla ASCII. Espero se haya entendido  :blink:  igual adjunto código:

Código: Text
  1. for(int i=0; i<SIZE_CADENA; i++){
  2.         if((cadena[i])==" "){
  3.                 cadena[i+1]-= 32;
  4.          }
  5.          else if(cadena[i]==""){
  6.                 break;
  7.          }
  8. }
  9.  

Igual quisiera que el código expuesto arriba sea revisado por los "agentes expertos"  B)  de este foro ya que como no tengo tanta experiencia en lo de programación.

N2eiDer

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Funciones de C y videojuegos
« Respuesta #3 en: Domingo 20 de Julio de 2008, 16:08 »
0
gracias a los 2 a ver que me sale ;)

lostshell

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Funciones de C y videojuegos
« Respuesta #4 en: Domingo 20 de Julio de 2008, 17:58 »
0
Cita de: "deltalinuxer"
Citar
¿Como puedo hacer que dada una cadena con espacios ponga en MAYUSCULAS la primera letra de cada palabra asi: "Un Ejemplo"?

Yo lo haria con un for, que revise cada letra de tu cadena y que encuetre la letra después de cada espacio, y como son char's y se pueden hacer operaciones aritmeticas con ellas, puedes restarle 32 a la variable para hacerla mayúscula guiandome con la tabla ASCII. Espero se haya entendido  :blink:  igual adjunto código:

Código: Text
  1. for(int i=0; i<SIZE_CADENA; i++){
  2.         if((cadena[i])==" "){
  3.                 cadena[i+1]-= 32;
  4.          }
  5.          else if(cadena[i]==""){
  6.                 break;
  7.          }
  8. }
  9.  

Igual quisiera que el código expuesto arriba sea revisado por los "agentes expertos"  B)  de este foro ya que como no tengo tanta experiencia en lo de programación.
Solo una peque~a advertencia, antes de restarle 32, tienes que asegurarte que es letra y que es minuscula, has una comparacion para revizar que sea >= 'a' && <='z'

deltalinuxer

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Funciones de C y videojuegos
« Respuesta #5 en: Lunes 21 de Julio de 2008, 03:59 »
0
Wow! Se me pasó, pucha, se nota que me falta mucho  :wacko: