|
Mostrar Mensajes
|
Páginas: [1] 2
|
1
|
Programación / Programación C/C++ / Re: Devolver un arreglo o vector desde una funcion.
|
en: 10 Junio 2016, 04:04 am
|
ouch, lo siento mucho, ya pude solucionarlo. No sé si algún moderador puede eliminar el tema o?. En todo caso, dejo el código solucionado (a alguien le servirá): #include<stdio.h>
int* ordenar_vector(int V[],int a){ int aux=0,i,j; for(i=0; i<a; i++){ for(j=0; j<a-1; j++){ if(V[j]>V[j+1]){ aux=V[j]; V[j]=V[j+1]; V[j+1]=aux; } } } return V; }
int main(){ int L=0; printf("\nCuantos elementos desea que tengo el vector:"); scanf("%d",&L); int V[L]; printf("\n\nIngrese los elementos del vector:\n"); for(int i=0;i<L;i++){ scanf("%d",&V[i]); } int *Z=ordenar_vector(V,L); for(int i=0;i<L;i++){ printf("%d",Z[i]); } } De igual manera, me gustaría entender ¿ por qué tuve que poner el asterisco de puntero luego del int en mi función y declarar mi variable Z como puntero?
|
|
|
2
|
Programación / Programación C/C++ / Devolver un arreglo o vector desde una funcion.
|
en: 10 Junio 2016, 03:54 am
|
Tengo creada una función que ordena un arreglo de forma ascendente. Ahora necesito que esa función me regrese el arreglo ordenado para seguir usándolo en el main(). #include<stdio.h>
int ordenar_vector(int V[],int a){ int aux=0,i,j; for(i=0; i<a; i++){ for(j=0; j<a-1; j++){ if(V[j]>V[j+1]){ aux=V[j]; V[j]=V[j+1]; V[j+1]=aux; } } } }
int main(){ int L=0; printf("\nCuantos elementos desea que tengo el vector:"); scanf("%d",&L); int V[L]; printf("\n\nIngrese los elementos del vector:\n"); for(int i=0;i<L;i++){ scanf("%d",&V[i]); } } Esto no funciona simplemente poniéndole un return V al final de la función y guardar en el main() asi: int vector_ordenado[L]; vector_ordenado=ordenar_vector(V[],L);
|
|
|
3
|
Programación / Programación C/C++ / Re: Proyecto en Dev C++ (Arreglo de dimensión variable en archivo .h")
|
en: 10 Junio 2016, 03:31 am
|
Me surgió un nuevo inconveniente. Creé una función para corroborar que el usuario en tiempo de ejecución no calcule por ejemplo la media antes de cargar elementos al arreglo: int funciones::vector_vacio(vector_n V){ int z=V.n; double suma=0; for(int i=0;i<z;i++){ suma=suma+V.elementos[i]; } if(suma != 0){ return 1; }else{ return 0; } } Pero cuando lo quiero aplicar a la función para hallar la media: double funciones::media(vector_n V){ if(vector_vacio(vector_n V)==1){ int z=V.n; double suma=0; double media=0; for(int i=0;i<z;i++){ suma=suma+(V.elementos[i]); } media=suma/z; return media; }else{ printf("Cargue elementos a su arreglo!!"); return 0; } } Me marca error en el argumento de vector_vacioIn static member function 'static double funciones::media(vector_n)': [Error] expected primary-expression before 'V' Cuando creí que todo andaba bien, apareció esto jaja, lo siento.
|
|
|
7
|
Programación / Programación C/C++ / Re: Proyecto en Dev C++ (Arreglo de dimensión variable en archivo .h")
|
en: 9 Junio 2016, 21:28 pm
|
Si AlbertoBSD, ese era el problema, no me había dado cuenta de eso, gracias. Ahora tengo un nuevo inconveniente en el "main.cpp", al momento de llamar a mi función creada. A mi estructura del arreglo dinámico la renombré así: vectorN arreglo={NULL,0}; switch(op){ case 'C': printf("Introduzca la dimension de su conjunto de valores:"); scanf("%d",&arreglo.n); arreglo.elementos=(int*)calloc(arreglo.n, sizeof(int));
funciones.carga_arreglo(/*Cuál sería el argumento aquí*/);
break;
|
|
|
8
|
Programación / Programación C/C++ / Re: Proyecto en Dev C++ (Arreglo de dimensión variable en archivo .h")
|
en: 9 Junio 2016, 16:32 pm
|
Por el momento tengo esto: En el main.cpp:case 'C': printf("Introduzca la dimensión de su conjunto de valores:"); scanf("%d",&arreglo.n); arreglo.elementos=(int*)calloc(arreglo.n, sizeof(int)); break; En Calculos_estadisticos.h:#pragma once
typedef struct vectorN{ int *elementos; int n; };
typedef struct funciones{ void carga_arreglo(vectorN V); double media(vectorN V); double varianza(vectorN V); double desv_est(vectorN V); }; y ahora creando mi Calculos_estadisticos.cpp:#include<stdio.h> #include<math.h> #include "Calculos_estadisticos.h"
void funciones::carga_arreglo(vectorN V){ int z=vectorN.n; for(int i=0;i<z;i++){ scanf("%d",&vectorN.elementos); } } cuando quiero guardar en z el valor de la (cantidad de elementos cargados por el usuario) me da error.
|
|
|
9
|
Programación / Programación C/C++ / Re: Proyecto en Dev C++ (Arreglo de dimensión variable en archivo .h")
|
en: 9 Junio 2016, 16:08 pm
|
#include <stdlib.h> #include <stdio.h> int main() { vectorN vector = {NULL, 0}; fprintf(stdout , "Introduzca las dimensiones que quiera para su vector: "); fscanf(stdin , "%u", &vector. n); vector. elementos = calloc(vector. n, sizeof(int)); return 0; // 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
|
|
|
10
|
Programación / Programación C/C++ / Re: Proyecto en Dev C++ (Arreglo de dimensión variable en archivo .h")
|
en: 9 Junio 2016, 02:58 am
|
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. Este sería mi archivo "main.cpp"#include<stdio.h> #include<ctype.h> #include<windows.h> #include "Calculos_estadisticos.h"
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); break; case 'M': break; case 'V': break; case 'D': break; } }while(toupper(op)!='S'); } Este mi archivo "Calculos_vectoriales.h"#pragma once
typedef int arreglo[*a];
typedef struct funciones{ void carga_arreglo(arreglo V); double media(arreglo V); double varianza(arreglo V); double desv_est(arreglo V); }; Por último iría mi "Calculos_estadisticos.cpp" #include<stdio.h> #include<math.h> #include "Calculos_estadisticos.h"
En el que aún no tengo nada
|
|
|
|
|
|
|