Autor
|
Tema: Pasar a función array de punteros.- (Leído 3,827 veces)
|
NOB2014
Desconectado
Mensajes: 366
|
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?.- 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.- #include <stdio.h> #include <stdlib.h> void ingresoCorrecto(int*, int); int main(void){ char *ptrNombres[] = {"Rosita", "Alberto", "Claudio", "Yanina", "Pedrito", "Jorge", "Daniel", "Leo"}; int indice=0, longitud=0; longitud = sizeof ptrNombres / sizeof *ptrNombres; for(indice=0; indice<longitud; indice++){ printf("[%d] %s - ", indice , ptrNombres [indice ]); } ingresoCorrecto(&indice,longitud); printf("\n Su eleccion fue...: %s", ptrNombres [indice ]); return 0; } void ingresoCorrecto(int *ingreso, int longitud){ int ch=0, ok=0, temp=0; do{ printf("\n\n ingrese un entero del [0] al [%d] para extraer un nombre..:", longitud -1); ok = scanf("%d", &temp ) == 1 && temp >= 0 && temp <= longitud -1; while ((ch = getchar()) != EOF && ch != '\n'); }while(!ok); *ingreso = temp; }
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
Mensajes: 93
?
|
Mira, no estoy muy avanzado en C, pero para hacer lo segundo podés hacer esto. int MAX_NOMBRES printf("\n Ingrese un entero para establecer la cantidad de nombres a ordenar...:"); scanf("%d", MAX_NOMBRES) 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
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
..................................... 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: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:#include <stdio.h> #include <stdlib.h> void ingresoCorrecto(int*, int); int main(void){ char **ptrNombres; int indice=0, longitud=0,ch; puts("\n Indique cuantos nombres va a ingresar de 15 caracteres maximo:"); scanf ("%d",&longitud); ptrNombres = malloc( longitud * sizeof *ptrNombres ); for( indice = 0; indice < longitud; ++indice ) ptrNombres[indice] = malloc( 15 * sizeof **ptrNombres ); while ((ch = getchar()) != EOF && ch != '\n'); for(indice=0; indice<longitud; indice++){ printf("Nombre [%d]: ", indice+1); scanf ("%s",*(ptrNombres+indice)); while ((ch = getchar()) != EOF && ch != '\n'); } printf("\n"); for(indice=0; indice<longitud; indice++){ printf("[%d] %s ", indice+1, *(ptrNombres+indice)); } ingresoCorrecto(&indice,longitud); printf("\n Su eleccion fue...: %s", *(ptrNombres+indice-1)); for (indice = 0; indice < longitud; indice++) free(ptrNombres[indice]); free(ptrNombres); return 0; } void ingresoCorrecto(int *ingreso, int longitud){ int ch=0, ok=0, temp=0; do{ printf("\n\n ingrese un entero del [1] al [%d] para extraer un nombre..:", longitud); ok = scanf("%d", &temp) == 1 && temp > 0 && temp <= longitud; while ((ch = getchar()) != EOF && ch != '\n'); }while(!ok); *ingreso = temp; }
#include <stdio.h> #include <stdlib.h> void ingresoCorrecto(int*, int); int main(void){ char *ptrNombres[15]; int indice=0, longitud=0,ch; puts("\n Indique cuantos nombres va a ingresar de 15 caracteres maximo:"); scanf ("%d",&longitud); for ( indice = 0; indice < longitud; indice++) ptrNombres[indice] = malloc(sizeof *ptrNombres[indice]); while ((ch = getchar()) != EOF && ch != '\n'); for(indice=0; indice<longitud; indice++){ printf("Nombre [%d]: ", indice+1); scanf ("%s",*(ptrNombres+indice)); while ((ch = getchar()) != EOF && ch != '\n'); } printf("\n"); for(indice=0; indice<longitud; indice++){ printf("[%d] %s ", indice+1, *(ptrNombres+indice)); } ingresoCorrecto(&indice,longitud); printf("\n Su eleccion fue...: %s", *(ptrNombres+indice-1)); free(ptrNombres); return 0; } void ingresoCorrecto(int *ingreso, int longitud){ int ch=0, ok=0, temp=0; do{ printf("\n\n ingrese un entero del [1] al [%d] para extraer un nombre..:", longitud); ok = scanf("%d", &temp) == 1 && temp > 0 && temp <= longitud; while ((ch = getchar()) != EOF && ch != '\n'); }while(!ok); *ingreso = temp; }
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
Mensajes: 366
|
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. char *ptrPalabras[15];
¿Esto me asegura un array de punteros de N punteros y un ancho máximo de 15 caracteres para cada palabra?.- La segunda. printf("\n %s", *(palabras +i ));
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
Mensajes: 1.211
|
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
|
|
|
|
NOB2014
Desconectado
Mensajes: 366
|
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.-
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
pasar float con array usando punteros - help
Programación C/C++
|
Micah Genji
|
8
|
5,911
|
30 Mayo 2010, 02:42 am
por .:BlackCoder:.
|
|
|
Pasar un array por una función
PHP
|
dimitrix
|
8
|
4,495
|
19 Junio 2011, 22:47 pm
por cassiani
|
|
|
Duda Punteros Dobles/Array de punteros
Programación C/C++
|
MisterJava
|
2
|
5,204
|
30 Diciembre 2012, 20:19 pm
por MisterJava
|
|
|
Pasar Array de una funcion a otra
Programación C/C++
|
YDOM
|
8
|
4,598
|
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,228
|
8 Mayo 2016, 16:41 pm
por HardForo
|
|