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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


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


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Pasar a función array de punteros.-
« en: 20 Enero 2014, 02:36 am »

Hola.
rir3760 si en algún post no respondo a tus ayudas es porque me lleva tiempo asimilarlas.-
Voy al grano, sigo con mis prácticas de punteros y el programa que estoy haciendo es para que el operador ingrese por ejemplo 8 nombres y luego ordenarlos.-
Hay 2 cosas que no sé hacer, la primera, alguien me podría decir como pasar un array de punteros a función y la segunda, ¿como puedo hacer para que la cantidad de punteros se pida que se ingrese por teclado y no ponerlo a mano?.-

Código
  1. printf("\n Ingrese un entero para establecer la cantidad de nombres a ordenar...:");

Aclaro que el programita es para poner algo sino me van a tirar de las orejas.-
Otra cosita, la validación de ingreso de entero la copié de un post de rir3760, ya la adopte como definitiva, funciona a la perfección.-

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void ingresoCorrecto(int*, int);
  5.  
  6. int main(void){
  7. char *ptrNombres[] = {"Rosita", "Alberto", "Claudio", "Yanina", "Pedrito", "Jorge", "Daniel", "Leo"};
  8. int indice=0, longitud=0;
  9.  
  10. longitud = sizeof ptrNombres / sizeof *ptrNombres;
  11.  
  12. printf("\n");
  13. for(indice=0; indice<longitud; indice++){
  14. printf("[%d] %s - ", indice, ptrNombres[indice]);
  15. }
  16.  
  17. ingresoCorrecto(&indice,longitud);
  18.  
  19. printf("\n Su eleccion fue...: %s", ptrNombres[indice]);
  20.  
  21. return 0;
  22. }
  23.  
  24. void ingresoCorrecto(int *ingreso, int longitud){
  25. int ch=0, ok=0, temp=0;
  26. do{
  27. printf("\n\n ingrese un entero del [0] al [%d] para extraer un nombre..:", longitud-1);
  28. ok = scanf("%d", &temp) == 1 && temp >= 0 && temp <= longitud-1;
  29. while ((ch = getchar()) != EOF && ch != '\n');
  30. }while(!ok);
  31. *ingreso = temp;
  32. }

Saludos.


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
jaxoR

Desconectado Desconectado

Mensajes: 93

?


Ver Perfil WWW
Re: Pasar a función array de punteros.-
« Respuesta #1 en: 20 Enero 2014, 16:41 pm »

Mira, no estoy muy avanzado en C, pero para hacer lo segundo podés hacer esto.

Código
  1. int MAX_NOMBRES
  2.  
  3. printf("\n Ingrese un entero para establecer la cantidad de nombres a ordenar...:");
  4. scanf("%d", MAX_NOMBRES)
  5.  
  6. char Nombres[MAX_NOMBRES]

Lo que pasa es que no se me ocurre como hacer para que aparescan solo los nombres que vos ingresaste

Espero haberte ayudado  :silbar:


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Pasar a función array de punteros.-
« Respuesta #2 en: 20 Enero 2014, 16:43 pm »

.....................................
alguien me podría decir como pasar un array de punteros a función
........................................

Por ejemplo, si tienes el puntero **A y lo vas a pasa a la función ver_matriz:

Código
  1. void ver_matriz( int **mat, int fil, int col )


..........................................
y la segunda, ¿como puedo hacer para que la cantidad de punteros se pida que se ingrese por teclado y no ponerlo a mano?.
.........................................

Te pongo dos casos que se me ocurren:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void ingresoCorrecto(int*, int);
  5.  
  6. int main(void){
  7.  char **ptrNombres;
  8.  int indice=0, longitud=0,ch;
  9.  puts("\n Indique cuantos nombres va a ingresar de 15 caracteres maximo:");
  10.  scanf ("%d",&longitud);
  11.  ptrNombres = malloc( longitud * sizeof *ptrNombres );
  12.  for( indice = 0; indice < longitud; ++indice )
  13.     ptrNombres[indice] = malloc( 15 * sizeof **ptrNombres );
  14.  while ((ch = getchar()) != EOF && ch != '\n');
  15.  for(indice=0; indice<longitud; indice++){
  16.   printf("Nombre [%d]: ", indice+1);
  17.   scanf ("%s",*(ptrNombres+indice));
  18.   while ((ch = getchar()) != EOF && ch != '\n');
  19.  }
  20.  printf("\n");
  21.  for(indice=0; indice<longitud; indice++){
  22.    printf("[%d] %s  ", indice+1, *(ptrNombres+indice));
  23.  }
  24.  ingresoCorrecto(&indice,longitud);
  25.  printf("\n Su eleccion fue...: %s", *(ptrNombres+indice-1));
  26.  for (indice = 0; indice < longitud; indice++)
  27.    free(ptrNombres[indice]);
  28.  free(ptrNombres);
  29.  return 0;
  30. }
  31.  
  32. void ingresoCorrecto(int *ingreso, int longitud){
  33.  int ch=0, ok=0, temp=0;
  34.  do{
  35.    printf("\n\n ingrese un entero del [1] al [%d] para extraer un nombre..:", longitud);
  36.    ok = scanf("%d", &temp) == 1 && temp > 0 && temp <= longitud;
  37.    while ((ch = getchar()) != EOF && ch != '\n');
  38.  }while(!ok);
  39.  *ingreso = temp;
  40. }
  41.  

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. void ingresoCorrecto(int*, int);
  6.  
  7. int main(void){
  8. char *ptrNombres[15];
  9. int indice=0, longitud=0,ch;
  10.  puts("\n Indique cuantos nombres va a ingresar de 15 caracteres maximo:");
  11.  scanf ("%d",&longitud);
  12.  for ( indice = 0; indice < longitud; indice++)
  13.    ptrNombres[indice] = malloc(sizeof *ptrNombres[indice]);
  14.  while ((ch = getchar()) != EOF && ch != '\n');
  15. for(indice=0; indice<longitud; indice++){
  16.    printf("Nombre [%d]: ", indice+1);
  17.    scanf ("%s",*(ptrNombres+indice));
  18.    while ((ch = getchar()) != EOF && ch != '\n');
  19. }
  20. printf("\n");
  21. for(indice=0; indice<longitud; indice++){
  22. printf("[%d] %s  ", indice+1, *(ptrNombres+indice));
  23. }
  24. ingresoCorrecto(&indice,longitud);
  25. printf("\n Su eleccion fue...: %s", *(ptrNombres+indice-1));
  26.        free(ptrNombres);
  27. return 0;
  28. }
  29.  
  30. void ingresoCorrecto(int *ingreso, int longitud){
  31. int ch=0, ok=0, temp=0;
  32. do{
  33. printf("\n\n ingrese un entero del [1] al [%d] para extraer un nombre..:", longitud);
  34. ok = scanf("%d", &temp) == 1 && temp > 0 && temp <= longitud;
  35. while ((ch = getchar()) != EOF && ch != '\n');
  36. }while(!ok);
  37. *ingreso = temp;
  38. }
  39.  

Espero no se me haya ido la olla entre tanto puntero. ;) ;) ;)

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



« Última modificación: 21 Enero 2014, 04:03 am por leosansan » En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Pasar a función array de punteros.-
« Respuesta #3 en: 21 Enero 2014, 23:37 pm »

Hola
Ya casi lo tengo gracias a que pude copiar de los ejemplos de Leo y wiD^.-
Lo que necesitaría son 2 cositas más:
La primera.
Código
  1. char *ptrPalabras[15];
  2.  
¿Esto me asegura un array de punteros de N punteros y un ancho máximo
de 15 caracteres para cada palabra?.-
La segunda.
Código
  1. printf("\n %s", *(palabras+i));
  2.  



No me funciona, por favor si lo desean un poco de teoría del porque.-
Leo para vos que dedicas mucho tiempo mostrando códigos, discúlpame si no los tomo completos es que tomando trozos de cada ejemplo me resulta beneficioso pata mi aprendizaje.-

Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Pasar a función array de punteros.-
« Respuesta #4 en: 22 Enero 2014, 15:32 pm »

Tienes que diferenciar entre un error y un warning. Un error aborta la compilación. Un warning es cuando el compilador te avisa de "algo" que puede resultar ambiguo, extraño o que puede causar problemas, pero que puede seguir compilando sin problemas.

¿De que tipo es la variable palabras?
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Pasar a función array de punteros.-
« Respuesta #5 en: 22 Enero 2014, 15:44 pm »

Hola
Mil disculpas, creí que había incluido el código en el post y lo borre para hacer otra practica, me quede sin nada.-
Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pasar float con array usando punteros - help
Programación C/C++
Micah Genji 8 5,869 Último mensaje 30 Mayo 2010, 02:42 am
por .:BlackCoder:.
Pasar un array por una función
PHP
dimitrix 8 4,477 Último mensaje 19 Junio 2011, 22:47 pm
por cassiani
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 5,167 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
Pasar Array de una funcion a otra
Programación C/C++
YDOM 8 4,428 Último mensaje 2 Junio 2014, 01:14 am
por MessageBoxA
Array de punteros a función <=> FLT_MIN - FLT_MAX [C]
Programación C/C++
NOB2014 6 3,162 Último mensaje 8 Mayo 2016, 16:41 pm
por HardForo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines