Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: krowa en 10 Marzo 2012, 17:59 pm



Título: Ayuda array facil
Publicado por: krowa en 10 Marzo 2012, 17:59 pm
Hola buenas tardes, estoy haciendo un ejercicio y me tira error en todas las lineas donde declaro el vector, dejo el enunciado y mi codigo. Nose si el codigo anda por que no lo puedo compilar por que me tira error en todas las lineas donde declaro el vector mes[] ,es un error muy tonto pero la verdad es que no encuentro la forma jaja Gracias.

Enunciado:
Diseñar una estructura análoga, llamada fecha, pero usando campos de bits. Usar sólo un entero corto sin signo (unsigned short), es decir, un entero de 16 bits. Los nombres de los campos serán: dia, mes y anno.
Basándose en la estructura de bits del ejercicio anterior, escribir una función para mostrar fechas: void Mostrar(fecha);. El formato debe ser: "dd de mmmmmm de aaaa", donde dd es el día, mmmmmm el mes con letras, y aaaa el año. Usar un array para almacenar los nombres de los meses.



Código:
#include<iostream>
using namespace std;

struct fecha{
       unsigned short int dia:5;
       unsigned short int mes:4;
       unsigned short int anno:7;
       };

void mostrar(fecha){
     char mes[11];
     int mees=0;
     int año=0;
     mes[0] = "Enero";
     mes[1] = "Febrero";
     mes[2] = "Marzo";
     mes[3] = "Abril";
     mes[4] = "Mayo";
     mes[5] = "Junio";
     mes[6] = "Julio";
     mes[7] = "Agosto";
     mes[8] = "Septiembre";
     mes[9] = "Octubre";
     mes[10] = "Noviembre";
     mes[11] = "Diciembre";
     mees = x.mes;
     año = 1960 + x.anno;
     cout<<"Fecha:"<<endl;
     cout<<"       "<<x.dia<<" de "<<mes[mees]<<" de "<<año;
     }
       
int main(){
   
    fecha x;
    x.dia = 31;
    x.mes = 12;
    x.anno = 127;
   
    cout<<"Dia: "<<x.dia<<" Mes: "<<x.mes<<" año: "<<x.anno<<endl;
    cin.get();
}


Título: Re: Ayuda array facil
Publicado por: JFEspanolito en 10 Marzo 2012, 18:07 pm
intenta usando comilla simple

mes[0]= 'Enero';


Título: Re: Ayuda array facil
Publicado por: x64core en 10 Marzo 2012, 18:32 pm
@Krowa:
Bueno esta malo porque asi no se declaran las cadenas lo que veo porque lo necesitas podes usar esto:
char* cadenas[12];

y para referirte a cada uno de ellos usando el puntero o podes usar una tabla osea un array de dos dimenciones. y toma en
cuenta que aquí no se hacen tareas antes que quede bloqueado el tema.

@JFEspanolito:
usando el caracter apostrofo se hace para declarar caracteres constante no se pueden declarar cadenas con ese caracter


Título: Re: Ayuda array facil
Publicado por: krowa en 10 Marzo 2012, 21:18 pm
RHL
Gracias voy a probar, no es una tarea, estoy estudiando c++ por mi cuenta en un curso online.. tenia que hacer esos ejercicios y bueno, no me salia jaja.
Como decis de un array de 2 dimensiones?
Osea..

Código:
mes[11][8];
mes[0][1] = 'E';
mes[0][2] = 'n';
mes[0][3] = 'e';
mes[0][4] = 'r';
mes [0][5] = 'o';

asi?? Si no es asi podrias explicarme porfavor? gracias!

PD: no puedo usar puinteros ya que en lo que va del curso todavia no vi punteros, en el capitulo que viene veo punteros. ( estoy por estructuras)
Graciaas


Título: Re: Ayuda array facil
Publicado por: nirvguy en 11 Marzo 2012, 01:51 am
Probá así:
Código
  1. char *meses[]={"Enero","Febrero","Marzo","Abril", "Mayo", "Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
  2.  

Espero haberte ayudado.  :D


Título: Re: Ayuda array facil
Publicado por: rir3760 en 11 Marzo 2012, 02:05 am
Si como indicas todavía no puedes utilizar punteros (supongo tampoco un array de arrays) lo que debes hacer es utilizar una sentencia de selección ("if" o "switch") para imprimir el mes. Para darte un ejemplo:
Código
  1. if (x.mes == 0)
  2.   cout << "Enero";
  3. else if (x.mes == 1)
  4.   cout << "Febrero";
  5.  
  6. ...
  7.  
  8. else
  9.   cout << "Diciembre";

Aparte de eso tienes varios errores en el programa, tres de estos son:

* En la definición de la función "mostrar" no indicas el nombre del parámetro, debería ser:
Código
  1. void mostrar(fecha x) ...

* No puedes utilizar el carácter 'ñ' como parte del nombre de una variable.

* No hay consistencia entre los indices utilizados en la función "main" (utilizas como mes el valor 12) y en la función "mostrar" (ahí el ultimo mes tiene el indice 11).

Un saludo


Título: Re: Ayuda array facil
Publicado por: s00rk en 11 Marzo 2012, 04:00 am
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4.  
  5. struct fecha{
  6.       unsigned short int dia:5;
  7.       unsigned short int mes:4;
  8.       unsigned short int anno:7;
  9.       };
  10.  
  11. void mostrar(fecha x)
  12. {
  13.     char *meses[] = {"Enero","Febrero","Marzo","Abril", "Mayo", "Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
  14.  
  15.     cout << "Fecha:" << endl;
  16.     cout << "Dia: " << x.dia << " Mes: " << meses[(x.mes - 1)] << " Year: " << (x.anno+1960) << endl;
  17. }
  18.  
  19. int main(){
  20.  
  21.    fecha x;
  22.    x.dia = 31;
  23.    x.mes = 12;
  24.    x.anno = 127;
  25.    mostrar(x);
  26.    cin.get();
  27. }
  28.  
  29.  


Título: Re: Ayuda array facil
Publicado por: krowa en 11 Marzo 2012, 18:22 pm
Muchas gracias a TODOS, me sirvio mucho su ayuda ya lo hice y lo entendi :D
Gracias!