elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 10:50  

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  problema con array de dos dimensiones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con array de dos dimensiones  (Leído 1,518 veces)
Didacso

Desconectado Desconectado

Mensajes: 193



Ver Perfil
problema con array de dos dimensiones
« en: 19 Marzo 2010, 19:33 »

Hola , estoy haciendo un programa para mostrar un calendario por consola , tal como el comando cal de Linux y me encuentro al compilar el siguiente error , alguien sabe como debo arreglarlo ? el programa aún esta por desarrollar , solo quiero arreglar la función que me da problemas
Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define FILAS 5
#define COL 7
/*programa que muestra el mes en curso completo*/

void initdias(char d[][]);
void contruyeCalendario(char d[][]);

char dias[FILAS][COL];


int main(){
  
  
  /*printf("fecha: %d/%d/%d  %d dias desde el domingo",ptrTiempo->tm_mday ,
                                                  ptrTiempo->tm_mon + 1 ,
                                                  ptrTiempo->tm_year + 1900 ,
                                                  ptrTiempo->tm_wday);
  */
  return 0;
}

void contruyeCalendario(char d[][]){
  struct tm *ptrTiempo;
  time_t tiempo;
  
  tiempo = time(NULL);
  ptrTiempo = gmtime(&tiempo);  
  initdias(d);
  
}

/* Inicializa el arreglo de los días
*
*/
void initdias(char d[][]){
  int i , j ;
  i=0;
  j=0;
  for( ; i < FILAS ; i++ ){
    for(; j < COL ; j++)
      d[i][j]=' ';
  }
}


el mensaje
calendar.c : In function initdias()
calendar.c 44: error: invalid use of array with unspecified bounds


« Última modificación: 19 Marzo 2010, 19:36 por Didacso » En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: problema con array de dos dimensiones
« Respuesta #1 en: 19 Marzo 2010, 19:42 »

Solo podes dejar la primer dimensión sin especificar, proba algo como esto:

Código
void initdias(char d[][COL]){

o así:


Código
void initdias(char d[FILAS][COL]){


En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Didacso

Desconectado Desconectado

Mensajes: 193



Ver Perfil
Re: problema con array de dos dimensiones
« Respuesta #2 en: 19 Marzo 2010, 19:45 »

Ha funcionado perfectamente , por que se ha tenido que hacer de ésta manera?
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: problema con array de dos dimensiones
« Respuesta #3 en: 19 Marzo 2010, 19:53 »

Porque el compilador necesita la referencia del primer elemento.
En el lenguaje, por decirlo de una manera sencilla, no permite el pasaje de arreglos, por lo que algo como esto:

Código
void func(int array[]);

en realidad es tratado como un puntero al primer elemento:

Código
void func(int *array);

Un arreglo es una secuencia de datos, imagina que en el mismo prototipo de la función, con un arreglo multidimensional, tenes algo como esto:

Código
array[1];

En ese caso le marcas la segunda secuencia de enteros (los arrays comienzan en 0), pero al ser un arreglo multidimensional, sin saber cuantos datos tiene cada secuencia, no podes saber cuando empieza una y cuando termina la otra.

Un saludo!
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Didacso

Desconectado Desconectado

Mensajes: 193



Ver Perfil
Re: problema con array de dos dimensiones
« Respuesta #4 en: 19 Marzo 2010, 19:59 »

Entendido , gracias ...!!!
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Didacso

Desconectado Desconectado

Mensajes: 193



Ver Perfil
Re: problema con array de dos dimensiones
« Respuesta #5 en: 19 Marzo 2010, 20:09 »

Y sigo , perdón por dar tanto la lata , pero que no encuentro la solución en google

ahora el compilador se ha vuelto majareta y me da el siguiente error
Código:
C:\DOCUME~1\diego\CONFIG~1\Temp/ccYZbaaa.o(.text+0x31):calendar.c: undefined ref
erence to `construyeCalendario'
collect2: ld returned 1 exit status

Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define FILAS 5
#define COL 8
/*programa que muestra el mes en curso completo*/

void initdias(char d[FILAS][COL]);
void contruyeCalendario(char d[FILAS][COL]);
void cabecera(char dias[]);



int main(){
  char dias[FILAS][COL];
  int i , j ;
 
  construyeCalendario(dias);
  /*printf("fecha: %d/%d/%d  %d dias desde el domingo",ptrTiempo->tm_mday ,
                                                  ptrTiempo->tm_mon + 1 ,
                                                  ptrTiempo->tm_year + 1900 ,
                                                  ptrTiempo->tm_wday);
  */
  return 0;
}

void contruyeCalendario(char d[FILAS][COL]){
  struct tm *ptrTiempo;
  time_t tiempo;
 
  /*initdias(d);*/
  tiempo = time(NULL);
  ptrTiempo = gmtime(&tiempo); 
  /*cabecera(d[0]);*/
 
}

/* Inicializa el arreglo de los días
*
*/
void initdias(char d[FILAS][COL]){
  int i , j ;
  i=0;
  j=0;
  for( ; i < FILAS ; i++ ){
    for(; j < COL ; j++)
      d[i][j]=' ';
  }
}

void cabecera(char dias[]){
    dias[1] = 'd';
    dias[2] = 'l';
    dias[3] = 'm';
    dias[4] = 'm';
    dias[5] = 'j';
    dias[6] = 'v';
    dias[7] = 's';
}
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: problema con array de dos dimensiones
« Respuesta #6 en: 19 Marzo 2010, 20:16 »

Código
construyeCalendario(dias);

El prototipo de la función es:

Código
void contruyeCalendario(char d[FILAS][COL]);

contruye!=construye.

Saludos

PD: No hagas doble post, y colorea el código. :D
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
08l00D

Desconectado Desconectado

Mensajes: 168


Ver Perfil
Re: problema con array de dos dimensiones
« Respuesta #7 en: 19 Marzo 2010, 20:21 »

Lo que no entiendo en tu codigo es la parte donde llamas a printf en main.
El puntero a estructura lo estas declarando en la otra funcion y lo implementas en main como si fuera una variable global (?)
retornalo desde la funcion o declaralo como global..
En línea
Didacso

Desconectado Desconectado

Mensajes: 193



Ver Perfil
Re: problema con array de dos dimensiones
« Respuesta #8 en: 19 Marzo 2010, 20:27 »

Es culpa mía por no colorear el código, si te fijas bien esa parte está asteriscada , es por unas pruebas que estaba haciendo .

Littlehorse perdona pero no entiendo en qué se diferencian , estoy llamando mal a la función? otra cosa , donde puedo mirar las etiquetas para colorear el código ?
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: problema con array de dos dimensiones
« Respuesta #9 en: 19 Marzo 2010, 20:29 »

C

[code=c]codigo[/code]


C++

[code=cpp]codigo[/code]

Al costado donde dice "GeSHi".

En cuanto a la función, si, la estas llamando mal. Porque declaras la función como "contruye" pero la llamas como "conStruye" por ende no existe referencia a esa función.

Saludos
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Didacso

Desconectado Desconectado

Mensajes: 193



Ver Perfil
Re: problema con array de dos dimensiones
« Respuesta #10 en: 19 Marzo 2010, 20:36 »

Hay que joderse no lo había visto , gracias de nuevo.
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.707


Nie Dam Sie


Ver Perfil WWW
Re: problema con array de dos dimensiones
« Respuesta #11 en: 19 Marzo 2010, 20:38 »

De nada!
En línea


@NeedOfSecurity

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines