Ayuda array facil

Iniciado por krowa, 10 Marzo 2012, 17:59 PM

0 Miembros y 1 Visitante están viendo este tema.

krowa

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.



#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();
}

JFEspanolito

intenta usando comilla simple

mes[0]= 'Enero';

x64core

@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

krowa

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..

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

nirvguy

Probá así:

char *meses[]={"Enero","Febrero","Marzo","Abril", "Mayo", "Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};


Espero haberte ayudado.  :D
Todas mis letras han sido pedazos de poesía y los pedazos de poesía se toman de poemas que comúnmente no tienen sentido
en primer termino.
               Kurt Cobain

rir3760

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 (cpp) [Seleccionar]
if (x.mes == 0)
   cout << "Enero";
else if (x.mes == 1)
   cout << "Febrero";

...

else
   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 (cpp) [Seleccionar]
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

s00rk

Código (c++) [Seleccionar]

#include <iostream>
#include <stdlib.h>
using namespace std;

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

void mostrar(fecha x)
{
     char *meses[] = {"Enero","Febrero","Marzo","Abril", "Mayo", "Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};

     cout << "Fecha:" << endl;
     cout << "Dia: " << x.dia << " Mes: " << meses[(x.mes - 1)] << " Year: " << (x.anno+1960) << endl;
}

int main(){

    fecha x;
    x.dia = 31;
    x.mes = 12;
    x.anno = 127;
    mostrar(x);
    cin.get();
}


krowa

Muchas gracias a TODOS, me sirvio mucho su ayuda ya lo hice y lo entendi :D
Gracias!