elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  estrucutras y funciones....
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: estrucutras y funciones....  (Leído 1,473 veces)
ramona98

Desconectado Desconectado

Mensajes: 9


Ver Perfil
estrucutras y funciones....
« en: 22 Agosto 2013, 15:29 pm »

Hola!
Esto solo es un boceto del programa que quiero hacer, ya que la funcion no esta terminada...
Le he dado un valor para que me devuelva al ser llamada pero estoy teniendo problemas al darle valores a la estructura:

Código:
main.cpp:29:32: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:29:32: error: assigning to an array from an initializer list
main.cpp:30:37: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:30:37: error: assigning to an array from an initializer list
main.cpp:32:32: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:32:32: error: assigning to an array from an initializer list
main.cpp:33:37: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:33:37: error: assigning to an array from an initializer list
main.cpp:38:94: error: cannot convert 'main()::horayfecha' to 'int*' for argument '1' to 'int tiemporeal(int*, int*, int*, int*)'

Tampoco estoy seguro si declarando las variables int voy a tener problemas, quizas seria mejor long int?



Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>



// Exercise 12-2: Design a structure to store time and date. Write a function to find
// the difference between two times in minutes.

int tiemporeal(int tim1[1], int dat1[2], int tim2[1], int dat2[2]) {
    // Idea= calcular minutos desde fecha 0 para ambas fechas
    // calcular diferencia entre ellas y return valor absoluto
    int difmin=2; // valor dado para probar
   
    return (difmin);
}

int main(void)
{
    int i;
   
   struct horayfecha {
    int timz[ ]; // Hora, minutos
    int data[];  // dia, mes y ano en digitos
    };

   struct horayfecha misfechas[1];
   
   misfechas[0].timz = { 23, 30};
   misfechas[0].data = { 1, 7, 1998 };
   
   misfechas[1].timz = { 22, 32};
   misfechas[1].data = { 2, 7, 1997 };
     
   
printf ("numero de minutos entre ambas fechas es %d\n", tiemporeal(misfechas[0], misfechas[1]) );
   

return (0);
}
 

Seguramente tengo mas fallos/errores o formas de mejorar el programa, estoy abierto a escuchar ideas :)
Gracias y saludos!


En línea

kaltorak

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Re: estrucutras y funciones....
« Respuesta #1 en: 22 Agosto 2013, 16:29 pm »

Hola ramona98

Tu código tiene varios errores.

El primero a la hora de declarar el numero de elementos que tendrá el array "misfechas" pues has puesto que tendrá un solo elemento y como quieres que contenga dos elementos, tienes que poner 2, pues si pones uno el programa puede funcionar pero dará una error y se cerrara al perderse en la memoria.

Asi es como lo tienes puesto tu:

Código
  1. struct horayfecha misfechas[1];

y así es como tiene que ser:

Código
  1. struct horayfecha misfechas[2];

Otro error es a la hora de asignar valor a los arrays contenidos en la estructura.

Citar
 
Código
  1. misfechas[0].timz = { 23, 30};
  2.   misfechas[0].data = { 1, 7, 1998 };
  3.  
  4.   misfechas[1].timz = { 22, 32};
  5.   misfechas[1].data = { 2, 7, 1997 };

Este tipo de asignación de datos a aun array solo se pude hacer cuando es declarado no una vez que ha sido declarado, mira te pongo un ejemplo para que veas lo que digo.

Código
  1. int Tiempo[] = {23,30}; //Valido.

Código
  1. int Tiempo[2];
  2.  
  3. Tiempo[] = {23,30}; // No valido
  4.  
  5. //La forma correcta de hacerlo seria esta.
  6.  
  7. Tiempo[0] = 23;
  8. Tiempo[1] = 30;

Otro error que tiene tu código es cuando declaras la función, lo haces pidiendo que como argumentos se introduzcan 4 arrays de tipo " int", pero luego cuando llamas a la función le pasas 2 estructuras en vez de los 4 arrays de tipo " int" que espera recibir.

Código
  1. int tiemporeal(int tim1[1], int dat1[2], int tim2[1], int dat2[2])

Código
  1. tiemporeal(misfechas[0], misfechas[1])

La forma correcta de llamar a la función que has creado seria así.

Código
  1. tiemporeal(misfechas[0].timz,misfechas[0].data,misfechas[1].timz,misfechas[1].data)

Aquí te pongo tu código modificado y operativo  ;)

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6.  
  7. // Exercise 12-2: Design a structure to store time and date. Write a function to find
  8. // the difference between two times in minutes.
  9.  
  10. int tiemporeal(int tim1[], int dat1[], int tim2[], int dat2[]) {
  11.    // Idea= calcular minutos desde fecha 0 para ambas fechas
  12.    // calcular diferencia entre ellas y return valor absoluto
  13.    int difmin=2; // valor dado para probar
  14.  
  15.    return difmin;
  16. }
  17.  
  18. int main(void)
  19. {
  20.    int i;
  21.  
  22.   struct horayfecha {
  23.    int timz[2]; // Hora, minutos
  24.    int data[3];  // dia, mes y ano en digitos
  25.    };
  26.  
  27.   struct horayfecha misfechas[2];
  28.  
  29.   misfechas[0].timz[0] = 23;
  30.   misfechas[0].timz[1] = 30;
  31.   misfechas[0].data[0] = 1;
  32.   misfechas[0].data[1] = 7;
  33.   misfechas[0].data[2] = 1988;
  34.  
  35.   misfechas[1].timz[0] = 22;
  36.   misfechas[1].timz[1] = 32;
  37.   misfechas[1].data[0] = 2;
  38.   misfechas[1].data[1] = 7;
  39.   misfechas[1].data[2] = 1997;
  40.  
  41.  
  42. printf ("numero de minutos entre ambas fechas es %d\n", tiemporeal(misfechas[0].timz,misfechas[0].data,misfechas[1].timz,misfechas[1].data) );
  43.  
  44.  
  45. return (0);
  46. }

Un saludo
Kaltorak.


« Última modificación: 22 Agosto 2013, 16:50 pm por kaltorak » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PHP y funciones tcp/ip « 1 2 »
PHP
nacho2003 11 7,484 Último mensaje 21 Septiembre 2006, 00:07 am
por deya
Funciones en php
PHP
Lambda 2 2,537 Último mensaje 14 Octubre 2006, 17:00 pm
por Thaorius
funciones y FOR
PHP
pepelon 4 2,254 Último mensaje 9 Diciembre 2006, 02:49 am
por pepelon
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,585 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines