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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [ayuda] Arreglos dentro de estructuras ("no arreglo de estructurar")
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ayuda] Arreglos dentro de estructuras ("no arreglo de estructurar")  (Leído 870 veces)
Thena_a

Desconectado Desconectado

Mensajes: 1


Ver Perfil
[ayuda] Arreglos dentro de estructuras ("no arreglo de estructurar")
« en: 4 Diciembre 2016, 17:23 pm »

necesito inicializar los primeros 9 datos de un arreglo que se encuentra dentro de una estructura pero no se como  :-( tengo algo asi


Código
  1. #include<stdio.h>
  2. #include<math.h>
  3.  
  4.  
  5. typedef struct{
  6. int hogares;
  7. float ingresosA[];
  8. float ingresosB[];
  9. float promedioA[];
  10. float promedioB[];
  11. float desviacionA[];
  12. float desviacionB[];
  13. float varianzaA[];
  14. float varianzaB[];
  15.  
  16.  
  17. }año;
  18.  
  19. int main(void){
  20. int i,opcion,opcion2;
  21. año doce,catorce;
  22.  
  23. doce.ingresosA={895,789,8745,258,4897}; /*aqui es donde me da el error expected expression before '{' token*/
  24.  
  25.  


aprecio la ayuda,  gracias


« Última modificación: 4 Diciembre 2016, 17:32 pm por Thena_a » En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 15.347



Ver Perfil
Re: [ayuda] Arreglos dentro de estructuras ("no arreglo de estructurar")
« Respuesta #1 en: 4 Diciembre 2016, 17:39 pm »

primero... no debes usar "ñ" en la programación, ya que es un caracter no ascii standard y te puede generar mil problemas...

otra cosa, recuerda que en C y C++ los arreglos se manejan a bajo nivel y no puedes esperar que un arreglo se redimensione solo a medida que insertes valores...

en este caso esos array por no tener valores originalmente, tendrán un tamaño 0, tienes que primero redimensionar el float dentro del sctruct antes de insertar cualquier valor

normalmente lo que la gente hace es que los predefine con los valores maximos y listo

si fuera un struct sin arrays, si pudieras inicializar (solo incializar) como quieres, ejemplo

Código
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. typedef struct{
  5. int a;
  6. int b;
  7. int c;
  8. }alfa;
  9.  
  10. alfa algo = {1,2,3};
  11. printf("%i, %i\n", algo.b, algo.c);
  12. return 0;
  13. }
  14.  


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.479



Ver Perfil
Re: [ayuda] Arreglos dentro de estructuras ("no arreglo de estructurar")
« Respuesta #2 en: 4 Diciembre 2016, 20:25 pm »

Existe una posibilidad, pero solo te sirve para cuándo das los datos a los arrays durante la definición. En caso contrario deberás darlo uno a uno.
Estándar C >= C99
Código
  1. #include<stdio.h>
  2.  
  3. typedef struct{
  4. int hogares;
  5. float ingresosA[5];
  6. float ingresosB[5];
  7. float promedioA[5];
  8. float promedioB[5];
  9. float desviacionA[5];
  10. float desviacionB[5];
  11. float varianzaA[5];
  12. float varianzaB[5];
  13. } anno;
  14.  
  15. int main(void) {
  16.    anno doce = {.ingresosA = {895, 789, 8745, 258, 4897}};
  17.  
  18.    /********************************************************************************
  19.     Una definición posterior podría ser escrita así:
  20.  
  21.     doce = (anno) {.ingresosA = {895, 789, 8745, 258, 4897}};
  22.  
  23.     pero sigue sirviendo para una inicialización de la estructura completa.
  24.     para inicializar un bloque posterior se debe hacer valor por valor.
  25.     *********************************************************************************/
  26.  
  27.    for(int i = 0; i < 5; ++i)
  28.        printf("%.0f\n", doce.ingresosA[i]);
  29. }
« Última modificación: 4 Diciembre 2016, 21:27 pm por MAFUS » En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines