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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Matrices en C/C++ Urgente!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Matrices en C/C++ Urgente!!!  (Leído 6,311 veces)
jfap45

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Matrices en C/C++ Urgente!!!
« en: 17 Julio 2012, 20:53 pm »

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


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Matrices en C/C++ Urgente!!!
« Respuesta #1 en: 17 Julio 2012, 20:58 pm »

Imagínate que tienes esta función para intercambiar dos elementos:

Código
  1. void Intercambio(int a, int b){
  2.  
  3.  int aux;
  4.  
  5.  aux=a;
  6.  a=b;
  7.  b=aux;
  8.  
  9. }

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 Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Matrices en C/C++ Urgente!!!
« Respuesta #2 en: 17 Julio 2012, 21:00 pm »

Hola.

Para sacar máximos y mínimos no tiene que estar ordenada la estructura.

Ejemplo:

Código:
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

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
jfap45

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Matrices en C/C++ Urgente!!!
« Respuesta #3 en: 17 Julio 2012, 21:04 pm »

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


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Matrices en C/C++ Urgente!!!
« Respuesta #4 en: 17 Julio 2012, 21:05 pm »

Imagínate que quieres intercambiar dos valores del mismo elemento químico, haces esta función:

Código
  1. void Intercambio(int a, int b){
  2.  
  3.  int aux;
  4.  
  5.  aux=a;
  6.  a=b;
  7.  b=aux;
  8.  
  9. }
  10.  

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():

Código
  1. void Intercambio(int a1, int a2, int b1, int b2){
  2. //Siendo a el primer elemento, a1 el peso, a2 la masa atómica, y b el segundo elemento químico
  3.  
  4.  int peso, masa_at;
  5.  
  6.  peso=a1; //Intercambiamos peso
  7.  a1=b1;
  8.  b1=peso;
  9.  
  10.  masa_at=a2; //Intercambiamos masa atómica
  11.  a2=b2;
  12.  b2=masa_at;
  13.  
  14. }
  15.  

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 Desconectado

Mensajes: 12


Ver Perfil
Re: Matrices en C/C++ Urgente!!!
« Respuesta #5 en: 17 Julio 2012, 21:07 pm »

Hola.

Para sacar máximos y mínimos no tiene que estar ordenada la estructura.

Ejemplo:

Código:
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


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Matrices en C/C++ Urgente!!!
« Respuesta #6 en: 17 Julio 2012, 21:35 pm »

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 Desconectado

Mensajes: 12


Ver Perfil
Re: Matrices en C/C++ Urgente!!!
« Respuesta #7 en: 18 Julio 2012, 07:06 am »

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 Desconectado

Mensajes: 140


[ Img^(Img) = Real ]


Ver Perfil
Re: Matrices en C/C++ Urgente!!!
« Respuesta #8 en: 18 Julio 2012, 15:34 pm »

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 :

Código
  1. typedef struct {
  2. int[5] valencias;
  3. float p_atomico;
  4. ...
  5. //definir todas los atributos
  6. } t_elem;
  7.  
  8. typedef struct {
  9. char[20] nombre_elem;
  10. telem elem[NUMERO_ELEMS];
  11. } t_tabla_periodica;
  12.  

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


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Matrices en C/C++ Urgente!!!
« Respuesta #9 en: 18 Julio 2012, 16:29 pm »

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 :

Código
  1. typedef struct {
  2. int[5] valencias;
  3. float p_atomico;
  4. ...
  5. //definir todas los atributos
  6. } t_elem;
  7.  
  8. typedef struct {
  9. char[20] nombre_elem;
  10. telem elem[NUMERO_ELEMS];
  11. } t_tabla_periodica;
  12.  

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
matrices en C#
Programación General
volterra 4 10,540 Último mensaje 18 Mayo 2010, 06:26 am
por Og.
matrices
Programación C/C++
aral90 2 2,504 Último mensaje 9 Diciembre 2011, 20:13 pm
por aral90
matrices
.NET (C#, VB.NET, ASP)
legomanticore 4 3,826 Último mensaje 14 Mayo 2012, 03:02 am
por $Edu$
matrices en c
Programación C/C++
ALONSOQ 9 5,176 Último mensaje 27 Junio 2012, 05:15 am
por twins
ayuda con matrices urgente please
Programación C/C++
Csantiago 4 2,202 Último mensaje 18 Febrero 2019, 02:06 am
por Csantiago
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines