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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  problema con array de punteros a cadenas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: problema con array de punteros a cadenas  (Leído 5,425 veces)
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: problema con array de punteros a cadenas
« Respuesta #10 en: 11 Julio 2014, 18:30 pm »

Me debo haber expresado mal: No solo digo que el problema se puede resolver sin usar punteros, y veo que estas de acuerdo, sino que en el codigo propuesto previamente (que repito a continuacion) ...

Código
  1.  int mayor_= 0, menor_= 0;
  2.  mayor = votos[0];
  3.  menor = votos[0];
  4.  posicion1 = &mayor_, posicion2 = &menor_;
  5.  for( contador = 1 ; contador < 4 ; contador++ ){
  6.    if ( votos[contador] > mayor){
  7. mayor_= contador ;
  8. mayor = votos[mayor_];
  9. posicion1 = &mayor_;
  10.    }
  11.    else{
  12. menor_= contador ;
  13. menor = votos[menor_];
  14. posicion2 = &menor_;
  15.    }
  16. }
  17.  

La linea 9 y la linea 14 son una repetición de la linea 4. Esas 2 lineas son superfluas. Osea, si decides usar punteros, asignarlos 1 vez (en este caso) sería suficiente.


En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: problema con array de punteros a cadenas
« Respuesta #11 en: 11 Julio 2014, 18:50 pm »

Me debo haber expresado ma.l.....................
La linea 9 y la linea 14 son una repetición de la linea 4. Esas 2 lineas son superfluas. Osea, si decides usar punteros, asignarlos 1 vez (en este caso) sería suficiente.


Sorry!, eso pasa por querer aprovechar el código previo.

Efectivamente, están de más (para el caso de  usar punteros):

Código
  1. int  mayor = 0 , menor = 0 , *posicion1 , *posicion2 ;
  2.  mayor = votos[0];
  3.  menor = votos[0];
  4.  posicion1 = &mayor_, posicion2 = &menor_;
  5. for( contador = 1 ; contador < 4 ; contador++ ){
  6.  if ( votos[contador] > mayor){
  7.    mayor_= contador ;
  8.    mayor = votos[mayor_];
  9. }
  10.  else if ( votos[contador] < menor){
  11.    menor_= contador ;
  12.    menor = votos[menor_];
  13.  }
  14. }

Y gracias por la observación!!!!!, sólo espero no haberla pifiado esta vez.  ;)

¡¡¡¡ Saluditos! ..... !!!!



EDITADO: Con la perspicaz observación de CalgaryCorpus. ;)


« Última modificación: 11 Julio 2014, 22:31 pm por leosansan » En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: problema con array de punteros a cadenas
« Respuesta #12 en: 11 Julio 2014, 21:39 pm »

Creo que el codigo ofrecido tiene un error adicional al hacer una suposición incorrecta. La suposición es esta:
  
No ser mayor que el máximo actual convierte a un numero en el menor del conjunto.

Si los nros fueran { 0, 2, 1, 7 }

La logica del código anterior se seguiría así:

  • El máximo y mínimo es el 0 inicial.
  • 2 es > 0, -> ahora 2 es el maximo, el minimo no cambia
  • 1 no es > 2 -> ahora 1 es el minimo (lo que es falso).
Ademas, el codigo mantiene variables que pueden ser eliminadas.
Lo único necesario, creo yo, es mantener los indices del mayor o menor.

Propongo estas correcciones, imayor e imenor son los indices de los valores mayor y menor. No es necesario guardar el valor mayor o menor, porque eso se obtiene usando el arreglo que se recibe como parametro y esos índices.

Código
  1. #include <stdio.h>
  2.  
  3. void mayor_menor( int votos[] )
  4. {
  5.    int imayor = 0, imenor = 0;
  6.    int contador = 0;
  7.  
  8.    for( contador = 1 ; contador < 4 ; contador++ ) {
  9.        if ( votos[contador] > votos[imayor]) {
  10.            imayor = contador ;
  11.        }
  12.        else
  13.        if ( votos[contador] < votos[imenor]) {
  14.            imenor = contador;
  15.        }
  16.    }
  17.  
  18.    printf( "Valor mayor: %d\n", votos[imayor] );
  19.    printf( "Valor menor: %d\n", votos[imenor] );
  20. }
  21.  
  22. int main() {
  23.    int votos[] = { 0, 2, 1, 7 };
  24.  
  25.    mayor_menor( votos );
  26. }
  27.  

Esto se puede ver en ejecución es este link: http://goo.gl/24qbNK
« Última modificación: 11 Julio 2014, 21:52 pm por CalgaryCorpus » En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con array de punteros al pasarlo como argumento en una fucnion (Solved)
Programación C/C++
vikour92 4 3,487 Último mensaje 4 Febrero 2012, 17:09 pm
por vikour92
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 5,167 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
Problema con array de punteros
Programación C/C++
NathanD 4 2,832 Último mensaje 26 Marzo 2013, 21:13 pm
por amchacon
Problema con for y array de cadenas.
Programación C/C++
jomag 3 2,201 Último mensaje 7 Febrero 2014, 02:18 am
por jomag
Cadenas de caracteres con punteros
Programación C/C++
pedroedlp 4 2,278 Último mensaje 12 Abril 2014, 17:25 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines