• Sábado 18 de Mayo de 2024, 22:41

Autor Tema:  Variable tipo apuntador  (Leído 1868 veces)

viktor479

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Variable tipo apuntador
« en: Miércoles 17 de Marzo de 2010, 03:13 »
0
Buen dia
En el taller de  sistemas debemos hacer el siguiente ejercicio un programa que imprima los datos basicos de 5 automoviles (marca,modelo,color,cilindraje) usando una estructura,el programa tal cual ya lo programe pero ahora el tutor requiere que incluyamos variables tipo apuntador y como recien empiezo a programar estoy un poco confundido agradeceria mucho su orientacion.como hago la asignacion de estas varibales estuve leyendo y la sintaxis seria por ejemplo char *marca=[20]; pero no funcionan.
Muchas Gracias
Estoy programando en Turbo C++4.5.
Código: C++
  1. //Ejercicio No.6 Estructura Automovil
  2. //Programado por Victor Avila
  3. # include <stdio.h>
  4. # include <conio.h>
  5.  
  6. void main (){
  7.  
  8.  
  9. int max=5;
  10.  
  11. printf ("Digite los datos basicos de los automovilesn");
  12. printf ("-------------------------------------------n");
  13. printf ("Recuerde que el maximo de automoviles es de 5nn");
  14.  
  15. struct automovil{
  16.     char marca [20] ;
  17.     int modelo;
  18.     char color [20];
  19.     int cilindraje;
  20.  
  21. }automovi[20];
  22.  
  23.        for (int i=0; i<=max; i++){
  24.  
  25.  
  26.     printf("Digite la Marca No.  %d",i);
  27.     scanf("%s",& automovi[i].marca);
  28.  
  29.     printf("Digite el modelo No.  %d",i);
  30.     scanf("%d",& automovi[i].modelo);
  31.  
  32.     printf("Digite el Color No.  %d",i);
  33.     scanf("%s",& automovi[i].color);
  34.  
  35.     printf("Digite el Cilindraje No.  %d",i);
  36.     scanf("%d",& automovi[i].cilindraje);
  37.  
  38.         }
  39.     printf ("los datos alamacnedos en la estructura son n");
  40.  
  41.       for (i=0; i<=max; i++){
  42.  
  43.     printf ("n Marca: %s",automovi[i].marca);
  44.     printf ("n Modelo: %d",automovi[i].modelo);
  45.     printf ("n Color: %s",automovi[i].color);
  46.     printf ("n Cilindraje: %d",automovi[i].cilindraje);
  47.     printf  ("n");
  48.                    }
  49.          getch();
  50.   }
  51.  
« última modificación: Miércoles 17 de Marzo de 2010, 05:09 por viktor479 »

jormar arellano

  • Nuevo Miembro
  • *
  • Mensajes: 10
  • Nacionalidad: ve
    • Ver Perfil
Re: Variable tipo apuntador
« Respuesta #1 en: Miércoles 17 de Marzo de 2010, 03:59 »
0
A que te refieres exactamente? necesitas ser más preciso...

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Variable tipo apuntador
« Respuesta #2 en: Miércoles 17 de Marzo de 2010, 15:54 »
0
Si tienes este codigo
Código: Text
  1. int mi_int;
  2. mi_int = 123;
  3.  

Para utilizar apuntadores tendrias que utilizar algo como esto
Código: Text
  1. int *mi_int; //declaras como apuntador
  2. mi_int = (int *)malloc(sizeof(int)); //reservas espacio suficiente para un entero
  3. *mi_int = 123; //asignas el valor
  4.  

En el ejemplo, reservas espacio para un solo entero. Si quieres reservar espacio para cadenas, tendrias que multiplicar el espacio necesario para un char (con sizeof(char)) y multiplicarlo por el numero de caracteres que tendria la cadena

jormar arellano

  • Nuevo Miembro
  • *
  • Mensajes: 10
  • Nacionalidad: ve
    • Ver Perfil
Re: Variable tipo apuntador
« Respuesta #3 en: Miércoles 17 de Marzo de 2010, 19:50 »
0
Es que ese es el problema, posman, no sabemos si esta utilizando memoria dinámica, o si necesecita modularizar su programa con funciones, o si necesita x cosa.

lo más probable es que necesite usar funciones para separar las acciones del programa principal. Te daré un ejemplo, teniendo en cuenta que puede ser enb vano, dada la poca especificación del problema:
Código: C++
  1.  
  2. #DEFINE MAX 5
  3. ...
  4. /*
  5.  * Esta función toma como parametro la direccion de memoria de tu arreglo de "struct automovil"
  6.  * En principio, no necesitas pasarla como parametro, ya que tu arreglo lo declaras como global.
  7.  * Lo más correcto sería declararte tu arreglo dentro del main, y usarlo (mucho más ideal, con memoria dinamica
  8.  */
  9. void leerDatos(struct automovil *autos)
  10. {
  11.     int i;
  12.     for  (i=0; i<=MAX; i++){
  13.         printf("Digite la Marca No.  %d",i);
  14.         scanf("%s", &(autos[i].marca) );
  15.         ...
  16.     }
  17. }
  18. ...
  19. void printDatos(struct automovil *autos)
  20. {
  21.     int i;
  22.     for  (i=0; i<=MAX; i++){
  23.         printf ("n Marca: %s",autos[i].marca);
  24.         ...
  25.     }
  26. }
  27. ...
  28.  
  29.  

viktor479

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Variable tipo apuntador
« Respuesta #4 en: Jueves 25 de Marzo de 2010, 06:02 »
0
Muchas gracias por sus aportes tienen mucha razon no fui my claro
pero estuve trabajando en el codigo y sus consejos y pues ya logre avanzar.
este es el codigo.
Código: C++
  1. #include<iostream.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4.  
  5.  
  6. struct vehiculo
  7. {
  8. char marca[20];
  9. int modelo;
  10. char color[20];
  11. char placa[20];
  12.  
  13. };
  14. int main(){
  15. int max;
  16. int *x;
  17. x=&max;
  18. *x=5;
  19.  
  20. vehiculo *autos=new vehiculo[6];
  21.  
  22. gotoxy (25,2);
  23. cout<<" PARQUEADERO EL CAMPANARIO "<<"n";
  24. gotoxy (25,3);
  25. cout<<"---------------------------"<<"n";
  26. cout<<"ntCONTROL DE INGRESO DE VEHICULOS"<<"n" ;
  27.  
  28.  
  29. for(int i=1;i<=max;i++)
  30. {
  31. cout<<(i+0)<<" vehiculo.n";
  32. cout<<"nDIGITE LA MARCA " << i <<" : ";
  33. cin>>autos[i].marca;
  34. cout<<"DIGITE EL MODELO : ";
  35. cin>>autos[i].modelo;
  36. cout<<"DIGITE EL COLOR " << i <<" : ";
  37. cin>>autos[i].color;
  38. cout<<"DIGITE EL PLACA " << i <<" : ";
  39. cin>>autos[i].placa;
  40.  
  41. cout<<"n";
  42. }
  43. clrscr();
  44. cout<<"LISTADO DE VEHICULOS REGISTRADOS "<<"n";
  45.  
  46. for(i=1;i<=max;i++)
  47. {
  48. cout<<endl<<(i+0)<<" vehiculo.n";
  49. cout<<" MARCA : "<<autos[i].marca<<"n";
  50. cout<<" MODELO : "<<autos[i].modelo<<"n";
  51. cout<<" COLOR : "<<autos[i].color<<"n";
  52. cout<<" PLACA : "<<autos[i].placa<<endl<<"nn";
  53. }
  54. getch();
  55. delete []autos;
  56. return 0;
  57. }
  58.  


Ahora si por favor me pueden orientar como hago para que al imprimir los datos por pantalla despues el programa me pida ingresar un nuevo vehiculo y muestre por pantalla los seis vehiculos.
muchas gracias han sido de gran ayuda sus aportes.