[C con Clase] Dudas acerca del punto 3-11

Santiago Narváez Rivas santiagonar1 en hotmail.com
Sab Dic 3 04:01:23 CET 2011


El pasado 2011-12-02 23:30:09, Steven Davidson escribió:
 
SD> Hola Santiago,
SD> Cuando tienes cuestiones como ésta, es mejor pensar en lo que te
SD> interesa hacer. Es decir, desde el punto de vista de los conceptos,
SD> fíjate en lo que quieres hacer. En este caso, te interesa crear una
SD> lista de nombres de los meses. Ahora tienes que pensar en la forma de
SD> representar estos conceptos en términos de C++. Una posibilidad es
SD> crear un array de cadenas de caracteres. Por ejemplo,
SD> char lista[12][11] = { "enero", "febrero", ... , "diciembre" };
SD> Y ya tienes solucionado el problema.
SD> > --------------
SD> >
SD> > void Mostrar(fecha)
SD> > {
SD> > char *meses[] = {"enero", "febrero", "marzo", "abril", "mayo", "junio",
SD> > "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
SD> >
SD> Puedes crear un array de punteros, pero como no hemos visto el tema de
SD> punteros, no lo aconsejo para este ejercicio.
SD> > cout<<"La fecha es: "<<Fecha.dia<<"de "<<meses[Fecha.mes -1]<<"del
SD> > "<<Fecha.anno<<endl;
SD> > }
SD> >
SD> > -------------
SD> >
SD> > Sin embargo me aparece un error: "Conversion obsoleta de una constante de
SD> > cadena  a '*char'[-Wwrite-string]". ¿Porque ocurre esto?.
SD> >
SD> Bueno, Israel te ha contestado a esta pregunta. Sólo quiero mencionar
SD> que la batalla del tipo de dato de una cadena literal ha sido MUY
SD> larga. Menos mal que la gente de C++ impuso que una cadena literal y
SD> por tanto constante, debería ser del tipo 'const char *'.
SD>  Nuevamente, no hemos dado este tema de punteros, así que por ahora
SD> usar el array de arrays de 'char'.
SD> > Mi última duda es como acceder a los elementos del array, es decir a enero,
SD> > febrero, etc.
SD> >
SD> El acceso es el mismo que para cualquier array. Tienes que pensar que
SD> 'meses' es un array. Y cualquier cosa que hagas con un array es válido
SD> para cualquier otro tipo de array. El acceso se hace con el operador
SD> [], el cual requiere un índice entero. Por ejemplo,
SD> cout << meses[0] << endl;
SD> De todas maneras, has hecho el acceso correctamente en el código anterior.
SD> Por cierto, para los temas de los ejercicios del curso de C++,
SD> recomiendo que los envíes a nuestro apartado de correo-e: ejercicios
SD> (arroba) conclase (punto) net, para ser corregidos y analizados. Así
SD> los demás seguidores del curso no se ven con la tentación de copiarse
SD> los ejercicios :)
SD> Espero haber aclarado las dudas.
SD> Steven


Muchas gracias Steven e Israel, ya pude realizar el ejercicio con sus recomendaciones, y de paso aprendí varios conceptos :-). En el futuro mandaré los correos de los ejercicios a la dirección que recomendaste Steven, realmente no sabía que existía :-P.

Muchas gracias de nuevo. 
SD> _______________________________________________
SD> Lista de correo Cconclase Cconclase en listas.conclase.net
SD> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
SD> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase