Buenas, tengo un problema en un proyecto que estoy compilando "Cálculos Estadísticos". Se supone que el usuario debe poder ingresar la cantidad de elementos que quiere guardar en un vector (Longitud del arreglo). Para luego ponerse a cargar los elementos.
Mi proyecto consta de tres archivos:
"main.cpp": Aquí iría mi menú, con una instrucción "Switch" el usuario elegiría lo que quiere calcular.
"Calculos_estadisticos.h": Aquí deberia "Declarar mi arreglo de ( L ) dimension" y en una estructura crear mis funciones con el arreglo declarado como argumento de cada una.
"Calculos_estadisticos.cpp": Aquí iría la programación de las funciones, llamadas desde el arreglo.
Lo que ocurre es que si no declaro mi arreglo en el .h con una dimensión preestablecida, obviamente me dice que no está declarado.
Ya hice un proyecto anterior, "Calculos_Vectoriales" pero en ese caso tenía que declarar un vector de una dimensión fija L=3. Lo declaré de la siguiente forma
Agradezco muchísimo su respuesta en serio, pero de igual manera no entiendo aún cómo hacerlo, ¿en qué archivo debo codificar el ejemplo anterior que me dio?
En el "main.cpp"; en la instrucción "switch" que corresponde a (Cargar el arreglo): Debo pedir al usuario la cantidad de elementos que desea cargar.
Mi problema es que si no declaro la variable "arreglo" en el Calculos_estadisticos.h no puedo argumentar las funciones dentro de mi estructura.
void menu(){ printf("\n\n\t\t\tC%clculos Estad%csticos.",160,161); printf("\n\n\t1)Ingrese el tama%co y datos del arreglo [C]",164); printf("\n\t2)Media del arreglo [M]"); printf("\n\t3)Varianza del arreglo [V]"); printf("\n\t4)Desviaci%cn estandar del arreglo [D]",162); printf("\n\t5)Salir [S]"); printf("\n\n\t\tIngrese una opci%cn v%clida [C-M-V-D-S]\n",162,160); printf("\n\tOpci%cn: ",162); }
int main(){ menu(); char op; do{ scanf("%c",&op); op=toupper(op); switch(op){ case 'C': int N; int *a=NULL; printf("Ingrese la cantidad de numeros del que estará compuesto el arreglo:"); scanf("%d",&N); a=calloc(sizeof(int),N);
return0;// No olvides liberar la memoria cuando termines!
}
En esta parte, vector.elementos = calloc(vector.n, sizeof(int)); por qué es necesario que ante-puesto a calloc se escriba (int*)?? Lo digo porque al usarlo así como usted escribió se produjeron errores. Luego leí ejemplos en Internet y siempre anteponen eso.
De por sí, creo que por el momento su respuesta me está ayudando mucho, le agradezco
case 'C': printf("Introduzca la dimensión de su conjunto de valores:"); scanf("%d",&arreglo.n); arreglo.elementos=(int*)calloc(arreglo.n, sizeof(int));
Claro. Estás trabajando en C++. En C++, el casteo de tipos es más estricto. Mientras que en C ese código no produciría errores, en C++ tienes que castear el retorno de la función (tienes que poner int * porque calloc retorna el tipo void *).
Básicamente, C++ es más estricto en esas situaciones
En línea
Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Creo que se refería al fragmento de código que proporcioné. Puse en código pensando en C, porque no caí en la cuenta de que el usuario está trabajando en C++. Entonces, antes de la función calloc yo tendría que haber puesto (int *)
En línea
Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL