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

Ayuda con este programa

Estas en el tema de Ayuda con este programa en el foro de C/C++ en Foros del Web. Buenos días. Se que el programa es sencillo pero no soy un experto en programación C++, les agradezco me ayuden me aparecen varios errores que ...
  #1 (permalink)  
Antiguo 07/03/2011, 10:27
Avatar de iderivera  
Fecha de Ingreso: julio-2008
Ubicación: Sincelejo
Mensajes: 28
Antigüedad: 15 años, 9 meses
Puntos: 0
Ayuda con este programa

Buenos días.

Se que el programa es sencillo pero no soy un experto en programación C++, les agradezco me ayuden me aparecen varios errores que no he logrado solucionar.

Les dejo el enunciado y código fuente de lo que logrado hacer.

------------------------------------------------------------------------------------------------------
Aplicación de la Memoria Dinámica.
Implemente un programa en C++ usando memoria dinámica con las funciones Malloc() y Free() para que imprima el registro de 4 personas (Nombre, edad y teléfono ). Como resultado se espera el código fuente debidamente documentado cada línea y la captura de pantalla de la imagen del resultado después de la ejecución.

------------------------------------------------------------------------------------------------------
CODIGO

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

// Definición de la función principal
void main()
{
int n=10, i;
int *p;
// Definición de la estructura persona
typedef struct
{
char nombre[20];
int edad;
int telefono[10];
} persona;

// Definición del puntero p de tipo persona utilizado para reservar memoria persona

cout<<"PROGRAMA QUE GUARDA EL REGISTRO DE PERSONAS"<<"\n";
cout<<"\n NUMERO DE PERSONAS A INGRESAR : "; cin>>n;

// Reserva de memoria dinámica a través de malloc ( )
p =(persona *)malloc(sizeof(persona));

// El ciclo for usado para la entrada de los datos de las personas
for(i=1;i<=n;i++) {
cout>>"\n DIGITE EL NOMBRE " >> i <<" : ";
cin>>p[i].nombre;
cout<<"DIGITE LA EDAD : ";
cin>>p[i].edad; cout<<"\n";
cout<<"DIGITE El NUMERO TELEFONICO : ";
cin>>p[i].telefono; cout<<"\n";

// El ciclo for usado para la impresión o visulización de los datos registrados
for(i=1;i<=n;i++) {
cout<<" NOMBRE : "<<p[i].nombre <<"\n";
cout<<" EDAD : "<<p[i].edad <<"\n\n";
out<<" TELEFONO : "<<p[i].telefono <<"\n\n";
}
getch();
// La función free ( ) libera la memoria asignada al apuntador p
free (p);
}
}
  #2 (permalink)  
Antiguo 07/03/2011, 16:00
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Ayuda con este programa

ehhhh te falta agregar despues de las invocaciones esta linea

using namespace std;

y fijate tienes errores de tipeo

si es cout es << y si es cin es >>

trata de agregar el ;

saludos
  #3 (permalink)  
Antiguo 07/03/2011, 17:16
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: Ayuda con este programa

NUNCA hagas una funcion "void main()", es un fallo muy comun que hay que corregir.
La funcion es " int main()" y al final del programa debes poner "return 0".

Ademas, typedef es para acortar el nombre de algo, ponerle un alias, por Ejemplo:
typedef unsigned int US;
a partir de ahi, cada vez que pongas US sera un unsigned int, asi que no se porque lo pones en un struct (ademas de que el struct ya se esta poniendo en desuso y se recomienda usar en vez de struct la palabra class).

Por lo demas, yo nunca he usado malloc () y free(), en vez de ello hago uso de new y delete, pero bueno..

Espero serte de ayuda! :)
  #4 (permalink)  
Antiguo 08/03/2011, 06:06
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Ayuda con este programa

1. UTILIZA LA ETIQUEDA CODE PARA MOSTRAR EL CODIGO
2. Te conviene declarar la estructura que usas como global.
3. Para los saltos de linea en C++ se puede usar endl en vez de "\n"
4. Para cout debes usar << y para cin debes usar >>.
5. Si quieres usar la variable p para hacer referencia a la estructura entonces debes declararla como un puntero a la estructura, no a entero.
6. Debes cerrar el primer for que abriste para que cargue los registros.
7. A las librerías en C++ ya no necesitan que les pongas el .h
8. Te aconsejo que uses un arreglo de tipo char para el telefono.
9. En el malloc tienes que reservar espacio para el tamaño de la estructura pero multiplicarlo por el número de registros. Sino solo te podra guardar un registro, entiendes??
Con todo eso, el código quedaría más o menos asi
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. // Definición de la estructura persona
  7. typedef struct {
  8.     char nombre[20];
  9.     int edad;
  10.     char telefono[10];
  11. } persona;
  12.  
  13. // Definición de la función principal
  14. int main(char* argc, int argv) {
  15.     int n=10, i;
  16.     persona *p;
  17.    
  18.     // Definición del puntero p de tipo persona utilizado para reservar memoria persona
  19.     cout << "PROGRAMA QUE GUARDA EL REGISTRO DE PERSONAS" << endl;
  20.     cout << endl << "NUMERO DE PERSONAS A INGRESAR: ";
  21.     cin >> n;
  22.    
  23.     // Reserva de memoria dinámica a través de malloc()
  24.     p = (persona*)malloc(sizeof(persona)*n);
  25.    
  26.     // El ciclo for usado para la entrada de los datos de las personas
  27.     for(i=0; i<n; i++) {
  28.         cout << endl << "DIGITE EL NOMBRE " << i << ": ";
  29.         cin >> p[i].nombre;
  30.         cout << "DIGITE LA EDAD: ";
  31.         cin >> p[i].edad;
  32.         cout << "DIGITE El NUMERO TELEFONICO: ";
  33.         cin >> p[i].telefono;
  34.     }
  35.    
  36.     // El ciclo for usado para la impresión o visulización de los datos registrados
  37.     for(i=0; i<n; i++) {
  38.         cout << " NOMBRE: " << p[i].nombre << endl;
  39.         cout << " EDAD: " << p[i].edad << endl;
  40.         cout << " TELEFONO: " << p[i].telefono << endl;
  41.     }
  42.    
  43.     // La función free ( ) libera la memoria asignada al apuntador p
  44.     free(p);
  45.    
  46.     system("PAUSE");
  47.     return 0;
  48. }
  #5 (permalink)  
Antiguo 09/03/2011, 09:29
Avatar de iderivera  
Fecha de Ingreso: julio-2008
Ubicación: Sincelejo
Mensajes: 28
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con este programa

Muchas gracias por la ayuda y recomendaciones las voy a tener muy en cuenta, que Dios los bendiga, saludos.

iderivera



Cita:
Iniciado por Gott Ver Mensaje
1. UTILIZA LA ETIQUEDA CODE PARA MOSTRAR EL CODIGO
2. Te conviene declarar la estructura que usas como global.
3. Para los saltos de linea en C++ se puede usar endl en vez de "\n"
4. Para cout debes usar << y para cin debes usar >>.
5. Si quieres usar la variable p para hacer referencia a la estructura entonces debes declararla como un puntero a la estructura, no a entero.
6. Debes cerrar el primer for que abriste para que cargue los registros.
7. A las librerías en C++ ya no necesitan que les pongas el .h
8. Te aconsejo que uses un arreglo de tipo char para el telefono.
9. En el malloc tienes que reservar espacio para el tamaño de la estructura pero multiplicarlo por el número de registros. Sino solo te podra guardar un registro, entiendes??
Con todo eso, el código quedaría más o menos asi
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. // Definición de la estructura persona
  7. typedef struct {
  8.     char nombre[20];
  9.     int edad;
  10.     char telefono[10];
  11. } persona;
  12.  
  13. // Definición de la función principal
  14. int main(char* argc, int argv) {
  15.     int n=10, i;
  16.     persona *p;
  17.    
  18.     // Definición del puntero p de tipo persona utilizado para reservar memoria persona
  19.     cout << "PROGRAMA QUE GUARDA EL REGISTRO DE PERSONAS" << endl;
  20.     cout << endl << "NUMERO DE PERSONAS A INGRESAR: ";
  21.     cin >> n;
  22.    
  23.     // Reserva de memoria dinámica a través de malloc()
  24.     p = (persona*)malloc(sizeof(persona)*n);
  25.    
  26.     // El ciclo for usado para la entrada de los datos de las personas
  27.     for(i=0; i<n; i++) {
  28.         cout << endl << "DIGITE EL NOMBRE " << i << ": ";
  29.         cin >> p[i].nombre;
  30.         cout << "DIGITE LA EDAD: ";
  31.         cin >> p[i].edad;
  32.         cout << "DIGITE El NUMERO TELEFONICO: ";
  33.         cin >> p[i].telefono;
  34.     }
  35.    
  36.     // El ciclo for usado para la impresión o visulización de los datos registrados
  37.     for(i=0; i<n; i++) {
  38.         cout << " NOMBRE: " << p[i].nombre << endl;
  39.         cout << " EDAD: " << p[i].edad << endl;
  40.         cout << " TELEFONO: " << p[i].telefono << endl;
  41.     }
  42.    
  43.     // La función free ( ) libera la memoria asignada al apuntador p
  44.     free(p);
  45.    
  46.     system("PAUSE");
  47.     return 0;
  48. }
  #6 (permalink)  
Antiguo 09/03/2011, 09:32
Avatar de iderivera  
Fecha de Ingreso: julio-2008
Ubicación: Sincelejo
Mensajes: 28
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con este programa

Nuevamente de veras muchas gracias por la ayuda a " Gott, el_java_07 y Baker1562" un saludo muy especial desde Colombia.
  #7 (permalink)  
Antiguo 09/03/2011, 14:53
Avatar de baker1562  
Fecha de Ingreso: marzo-2011
Ubicación: Puntarenas
Mensajes: 261
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Ayuda con este programa

Pura Vida amigo!! :)

Etiquetas: programa
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 17:16.