Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MartNahuel95

#1
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
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
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_vacio

In 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.

#4
Genial!!

Muchas Gracias.

Saludos.
#5
Tengo que agradecer en serio a los dos, A class_OpenGL y a AlbertoBSD. En serio Muchas Gracias.

Ahora que ya solucioné mi problema con la carga del arreglo puedo terminar de crear las funciones restantes.

Una última pregunta, ¿dónde libero la memoria?.
Al liberar la memoria se elimina lo que se haya guardado en el vector no?
#6
Cierto, me faltó tambien el [sub i]
También veo que tengo un error aquí:

for(int i=0; i<z; i++){
        scanf("%d",&vectorN.elementos[i]);
    }


Donde está "vectorN" debe también ser cambiado por "V"

Una vez solucionado esto, sigo teniendo un problema al llamar a mi función:

funciones.carga_arreglo(arreglo);


main.cpp [Error] expected unqualified-id before '.' token
#7
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
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
#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
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