Autor
|
Tema: Matrices en C/C++ Urgente!!! (Leído 6,311 veces)
|
jfap45
Desconectado
Mensajes: 12
|
Mi problema es el siguiente: Soy muy nuevo en la programacion en C y estoy colaborando en un proyecto en el cual me piden leer un conjunto de datos de los elementos de la tabla periodica (esos elementos tienen muchos atributos como peso y masa atomica, valencia, punto de fusion y ebullicion, un simbolo, etc.) Mi problema consiste en q necesito calcular medidas estadisticas para manejar esos valores, como media, mediana, etc, y necesitare ordenar loa valores de menor a mayor a fin de sacar un minimo y un maximo, pero como hacer eso si al ordenar esos valores, cambiaran de posicion y ya no tendria relacion con su elemento correspondiente. Por lo tanto la informacion seria erronea, ademas al existir muchos atributos numericos es logico q en cada columna existiria un minimo y un maximo, pero como calculo eso sin perder los valores originales de los elementos?
Es decir:
nombre peso atomico valencia hidrogeno 17 3 helio 5 8
con esos valores al cambiarlos perdería los valores originales de los elementos!!
Si alguien me pudiera ayudar lo agradeceria porfavor!!
Es urgente!!!
|
|
|
En línea
|
|
|
|
DickGumshoe
|
Imagínate que tienes esta función para intercambiar dos elementos: void Intercambio(int a, int b){ int aux; aux=a; a=b; b=aux; }
Solo puedes intercambiar los elementos, ya que no te da más opciones. Pero podrías probar a pasarle por parámetros a la función el resto de atributos de cada elemento químico, e intercambiar la posición de los vectores peso, masa atómica, valencia, función, etc. con la posición del mismo elemento que intercambias el primer valor. Espero haberme explicado Saludos!
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Hola. Para sacar máximos y mínimos no tiene que estar ordenada la estructura. Ejemplo: int max = array[0]; for(i = 0; i < n; i++) { if(array[i] > max) { max = array[i]; } } Lo mismo para el mínimo.
|
|
|
En línea
|
|
|
|
jfap45
Desconectado
Mensajes: 12
|
DickGumshoe, Supongo que te explicaste bien, el problema sería yo, reitero q no se programar mucho en C y lo que me piden en el proyecto esta dificil para mi, si pudieran explicarme casi con manzanitas se los agradecería!
DickGumshoe, gracias y diculpa por las molestias!!
|
|
|
En línea
|
|
|
|
DickGumshoe
|
Imagínate que quieres intercambiar dos valores del mismo elemento químico, haces esta función: void Intercambio(int a, int b){ int aux; aux=a; a=b; b=aux; }
Pero resulta que quieres intercambiar los valores, por ejemplo, de peso y masa atómica (son más de un valor para cada elemento). Lo único que tienes que hacer de más es pasarle más parámetros a la función Intercambio(): void Intercambio(int a1, int a2, int b1, int b2){ //Siendo a el primer elemento, a1 el peso, a2 la masa atómica, y b el segundo elemento químico int peso, masa_at; peso=a1; //Intercambiamos peso a1=b1; b1=peso; masa_at=a2; //Intercambiamos masa atómica a2=b2; b2=masa_at; }
Así puedes intercambiar todos los atributos de los elementos que desees, teniendo en cuenta que debes pasárselos como parámetro desde main(). Si tienes dudas pregunta Saludos!
|
|
« Última modificación: 17 Julio 2012, 21:16 pm por DickGumshoe »
|
En línea
|
|
|
|
jfap45
Desconectado
Mensajes: 12
|
Hola. Para sacar máximos y mínimos no tiene que estar ordenada la estructura. Ejemplo: int max = array[0]; for(i = 0; i < n; i++) { if(array[i] > max) { max = array[i]; } } Lo mismo para el mínimo. Sip en eso realmente no tengo mucho problema, el problema por ejemplo es para la mediana, ahi si tienen q estar ordenados para q la mediana sea la correcta!!
|
|
|
En línea
|
|
|
|
DickGumshoe
|
A ver, fijándonos en la función que puse antes, mi idea es que en la función, todas las variables que se llaman a seguido de un índice sean las características de un elemento, y las que tienen de nombre b seguido de un índice sean las de otro.
Por ejemplo, queremos intercambiar las características del Rutenio y las del Bismuto en el vector. Pues a1 será el peso del Rutenio, y b1 el peso del Bismuto; a2 la masa atómica del Rutenio, y b2 la masa atómica del Bismuto. Así, con tantas características como te hayan indicado que debas intercambiar.
Saludos!
|
|
|
En línea
|
|
|
|
jfap45
Desconectado
Mensajes: 12
|
A ver, fijándonos en la función que puse antes, mi idea es que en la función, todas las variables que se llaman a seguido de un índice sean las características de un elemento, y las que tienen de nombre b seguido de un índice sean las de otro.
Por ejemplo, queremos intercambiar las características del Rutenio y las del Bismuto en el vector. Pues a1 será el peso del Rutenio, y b1 el peso del Bismuto; a2 la masa atómica del Rutenio, y b2 la masa atómica del Bismuto. Así, con tantas características como te hayan indicado que debas intercambiar.
Saludos!
Creo que eso si lo entendi, muchas gracias, lo intentare a ver q tal!!
|
|
|
En línea
|
|
|
|
juancaa
Desconectado
Mensajes: 140
[ Img^(Img) = Real ]
|
No se si acabo de entenderte pero por lo que pides me parece que necesitas utilizar structs, que no se si sabras bien lo que es eso... Te dejo un ejemplo : typedef struct { int[5] valencias; float p_atomico; ... //definir todas los atributos } t_elem; typedef struct { char[20] nombre_elem; telem elem[NUMERO_ELEMS]; } t_tabla_periodica;
A partir de aqui acceder a cada elem para realizar las operaciones pertinentes... Tansolo deberias implementar los algoritmos para la busqueda de maximos y minimos (bastante sencillos, si no sabes yo te paso alguno de ejemplo) para que recorran toda la tabla (NUMERO_ELEMS)... No se si te sirve lo que digo por eso no doy mas detalles...
|
|
|
En línea
|
Que tengas un buen dia!
|
|
|
DickGumshoe
|
No se si acabo de entenderte pero por lo que pides me parece que necesitas utilizar structs, que no se si sabras bien lo que es eso... Te dejo un ejemplo : typedef struct { int[5] valencias; float p_atomico; ... //definir todas los atributos } t_elem; typedef struct { char[20] nombre_elem; telem elem[NUMERO_ELEMS]; } t_tabla_periodica;
A partir de aqui acceder a cada elem para realizar las operaciones pertinentes... Tansolo deberias implementar los algoritmos para la busqueda de maximos y minimos (bastante sencillos, si no sabes yo te paso alguno de ejemplo) para que recorran toda la tabla (NUMERO_ELEMS)... No se si te sirve lo que digo por eso no doy mas detalles... Cierto, hacerlo con structs es más fácil que como yo se lo he explicado.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
matrices en C#
Programación General
|
volterra
|
4
|
10,540
|
18 Mayo 2010, 06:26 am
por Og.
|
|
|
matrices
Programación C/C++
|
aral90
|
2
|
2,504
|
9 Diciembre 2011, 20:13 pm
por aral90
|
|
|
matrices
.NET (C#, VB.NET, ASP)
|
legomanticore
|
4
|
3,826
|
14 Mayo 2012, 03:02 am
por $Edu$
|
|
|
matrices en c
Programación C/C++
|
ALONSOQ
|
9
|
5,176
|
27 Junio 2012, 05:15 am
por twins
|
|
|
ayuda con matrices urgente please
Programación C/C++
|
Csantiago
|
4
|
2,202
|
18 Febrero 2019, 02:06 am
por Csantiago
|
|