Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Vector de punteros

Estas en el tema de Vector de punteros en el foro de C/C++ en Foros del Web. Buenas tardes! Tengo una duda.. un vector de punteros no es lo mismo que un puntero a vector no? Si tengo un vector a estructura ...
  #1 (permalink)  
Antiguo 18/02/2015, 10:56
Avatar de ElenaJuarez  
Fecha de Ingreso: febrero-2015
Ubicación: Buenos Aires
Mensajes: 8
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Vector de punteros

Buenas tardes! Tengo una duda.. un vector de punteros no es lo mismo que un puntero a vector no? Si tengo un vector a estructura y tengo que ordenar un vector de punteros, primero tendria que generar un vector con las direcciones del campo a ordenar? Disculpen si no soy muy clara!! Gracias!
  #2 (permalink)  
Antiguo 18/02/2015, 12:36
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Vector de punteros

Pues no, no eres muy clara.

Intenta explicar lo que te dan y lo que te piden.
  #3 (permalink)  
Antiguo 18/02/2015, 12:50
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Vector de punteros

no! Puede ser, pero no es exclusivamente eso.

Por ejemplo las funciones pueden ser apuntadas, y lo puedes guardar en un vector. Tendrías un vector de funciones. XDD

Podrías tener vectores de clases, de simples enteros o otros tipos de datos simples, de estructuras, de vectores, de matrices, de funciones etc etc.

Un puntero no es mas que una variable, y si es una variable puede ser guardada en un vector, o ser apuntada por otro puntero(punteros dobles).

Para generar un vector con las direcciones como dices, lo que tendrías que hacer es tener un vector con 10 estructuras por ejemplo.
struct E{
}

struct E p[10];

Ya tienes un arreglo de 10 posiciones(punteros) que apuntan a 10 estructuras(punteros). Las estructuras funcionan como vectores, o sea que en realidad una estructura apunta a la primera dirección de la primera variable que encuentre dentro de esa misma estructura.

Ten claro que un vector te sirve para almacenar datos de tipos iguales, y una estructura para almacenar datos de diferente tipo, pero eso es lo que es en ambos casos: Un puntero que apunta al la primera variable del conjunto(punteros).

No se si me explico bien pero bueno XD

suerte!
  #4 (permalink)  
Antiguo 18/02/2015, 13:15
Avatar de ElenaJuarez  
Fecha de Ingreso: febrero-2015
Ubicación: Buenos Aires
Mensajes: 8
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Vector de punteros

Hola de nuevo, si vangodp entendí,gracias. Estuve buscando en un libro, intente hacer un ejercicio y nada no me sale ordenar, pero creo que algo entendí el concepto. Yo intento explicar para no transcribir todo el ejercicio. Lo que intenté fue esto:
Código C:
Ver original
  1. #include<stdio.h>
  2. #define MAX 3
  3. struct DATOS{
  4.    
  5.     char nombre[30];
  6.     int nota;
  7.    
  8. };
  9.  
  10.  
  11. void ingreso(struct DATOS [], int );
  12. void mostrar(struct DATOS [], int );
  13. //void ordenar(* [], int L);
  14.  
  15. void main(){
  16.    
  17.     struct DATOS vec[MAX], *punt[MAX],*paux;
  18.     int i,k;
  19.    
  20.     ingreso(vec,MAX);
  21.     //inicializacio0n de punteros
  22.    
  23.     for(i=0;i<MAX;i++){
  24.         punt[i]=&vec[i];
  25.     }
  26.    
  27.     //ordenamiento
  28.    
  29.     for(i=0;i<MAX;i++){
  30.         for(k=0;k<MAX-i-1;k++){
  31.             if(punt[k]->nota < punt[k+1]->nota){
  32.                
  33.                 paux=punt[k];
  34.                 punt[k]=punt[k+1];
  35.                 punt[k+1]=paux;
  36.             }
  37.         }
  38.     }
  39.    
  40.     mostrar(vec,MAX);
  41.    
  42.    
  43. }
  44.  
  45.  
  46. void ingreso(struct DATOS v[], int L){
  47.    
  48.     int i;
  49.    
  50.     for(i=0;i<L;i++){
  51.        
  52.         printf("\nIngrese nombre: ");
  53.         gets(v[i].nombre);
  54.         printf("\nIngrese nota: ");
  55.         scanf("%d", &v[i].nota);
  56.         getchar();
  57.     }
  58.    
  59. }
  60.  
  61. void mostrar(struct DATOS v[], int L){
  62.    
  63.     int i;
  64.    
  65.     for(i=0;i<L;i++){
  66.        
  67.         printf("\nNombre: %s",v[i].nombre);
  68.         printf("\nNota: %d",v[i].nota);
  69.    
  70.     }
  71.    
  72. }


Pero no ordena, puede ser por algo mal en el vector de punteros? O sea, ordenar normalmente puedo, pero esto de los punteros no lo asimilo todavía.
Ahh tambien me gustaría poder ordenar con una funcion, pero ni me salió!!!
  #5 (permalink)  
Antiguo 18/02/2015, 23:40
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Vector de punteros

Lo siento pero no ocupas punteros para esta tarea.

Si tu profesor te dice que lo hagas con punteros a fuerza posiblemente es un idiota, porque se me ocurren al menos 5 mejores casos de como utilizar punteros.

Otra cosa, no uses gets mi gcc se estuvo quejando por eso.
Código C:
Ver original
  1. #include<stdio.h>
  2. #define MAX 3
  3. struct DATOS{
  4.  
  5.     char nombre[30];
  6.     int nota;
  7.  
  8. };
  9.  
  10.  
  11. void ingreso(struct DATOS [], int );
  12. void mostrar(struct DATOS [], int );
  13. //void ordenar(* [], int L);
  14.  
  15. void main(){
  16.  
  17.     struct DATOS vec[MAX], aux;
  18.     int i,k;
  19.  
  20.     ingreso(vec,MAX);
  21.  
  22.     //ordenamiento
  23.     for(i=0;i<MAX;i++){
  24.         for(k=0;k<MAX-i-1;k++){
  25.             if(vec[k].nota < vec[k+1].nota){
  26.  
  27.                 aux=vec[k];
  28.                 vec[k]=vec[k+1];
  29.                 vec[k+1]=aux;
  30.             }
  31.         }
  32.     }
  33.  
  34.     mostrar(vec,MAX);
  35.  
  36.  
  37. }
  38.  
  39.  
  40. void ingreso(struct DATOS v[], int L){
  41.  
  42.     int i;
  43.  
  44.     for(i=0;i<L;i++){
  45.  
  46.         printf("\nIngrese nombre: ");
  47.         gets(v[i].nombre);
  48.         printf("\nIngrese nota: ");
  49.         scanf("%d", &v[i].nota);
  50.         getchar();
  51.     }
  52.  
  53. }
  54.  
  55. void mostrar(struct DATOS v[], int L){
  56.  
  57.     int i;
  58.  
  59.     for(i=0;i<L;i++){
  60.  
  61.         printf("\nNombre: %s",v[i].nombre);
  62.         printf("\nNota: %d",v[i].nota);
  63.  
  64.     }
  65.  
  66. }
  #6 (permalink)  
Antiguo 19/02/2015, 00:35
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Vector de punteros

Cita:
... un vector de punteros no es lo mismo que un puntero a vector no?
Supongo que llamas "vector" a lo que mayormente suele llamarse "array". Es que a lo largo del tiempo cada uno lo fue traduciendo como pudo, y hoy se lo encuentra con tantos nombres distintos que ya me perdí. Pero bueno, si se trata de lo que en inglés se llama array, efectivamente, un vector de punteros no es lo mismo que un puntero a vector.
Código:
int* arr[10];    // arr es un array de 10 punteros a int
int (*arr)[10]; // arr es un puntero a un array de 10 enteros

Etiquetas: punteros, vector
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:37.