Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/12/2008, 05:08
Wii-Hem
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 16 años, 1 mes
Puntos: 0
Problemas pasando estructuras a una función

Hola, necesito una ayudita con este programa. Por más vueltas que le doy no encuentro la solución.

El programa lo que hace es leer una serie de ciudades con su nombre, el número de habitantes y su código de provincia en una función y almacenártelos en estructuras, y después te los muestra en la función principal

(en verdad eso no es lo único que me piden, pero es para comprobar que el programa me va bien )

Sin embargo, al compilar en el Dev-C++ me dan los siguientes errores:

- new types may not be defined in a return type.
- two or more data types in declaration of 'leer ciudades'.

Los dos errores salen en la línea 24 (al principio de la función "leer ciudades").

El código es este:

Código:
/*Bibliotecas utilizadas por el programa*/

#include <string>
#include <iostream>
using namespace std;

/*Definición de constantes*/

#define MAX_ciudades 20

/*Definición de estructuras*/

struct ciudad
{ 
       string nombre;
       long habitantes;
       short codigo;
}

/*Procedimiento leer ciudades*/

void leer_ciudades (ciudad datos[MAX_ciudades], short cuantos)
{
     short numero_ciudad, i;
     
     for(i=0;i<cuantos;i++)
     {
     
        numero_ciudad=i+1;
     
        cout << "Introduce el nombre de la ciudad numero " << i+1 << ": ";
        cin >> datos[i].nombre;
  
        cout << "\nIntroduce sus habitantes: ";
        cin >> datos[i].habitantes;
  
        while(datos[i].habitantes<0)
        {
                                    cout << "El numero de habitantes no puede ser negativo.\n",
                                    cout << "Introduce el dato de nuevo: ";
                                    cin >> datos[i].habitantes;
        }
     
        cout << "\nIntroduce su codigo de provincia (de 1 a 50): ";
        cin >> datos[i].codigo;
     
        while( datos[i].codigo<=0 && datos[i].codigo>50 )
        {
                                 cout << "El codigo de provincia es erroneo.\n";
                                 cout << "Introduce el codigo de provincia de nuevo: ";
                                 cin >> datos[i].codigo;
        }
    }
} 

/***********************************************
/* FUNCIÓN PRINCIPAL
************************************************/

int main()
{
    short cuantos, i, j;
    struct ciudad datos[MAX_ciudades];
    
    cout << "\n\t\tARCHIVO DE CIUDADES\n\n";
    
    cout << "En primer lugar, introduce cuantas ciudades deseas incluir: ";
    cin >> cuantos;
    
    while(cuantos>MAX_ciudades)
    {
                      cout << "Lo sentimos, el numero de maximo de ciudades que puede gestionar este programa son 20.\n";
                      cout << "Introduce de nuevo el numero de ciudades: ";
                      cin >> cuantos;
    }
    
    leer_ciudades(datos, cuantos);
    
    for(j=0;j<cuantos;j++)
    {
                          cout << datos[j].nombre << "\n";
                          cout << datos[j].habitantes << "\n";
                          cout << datos[j].codigo << "\n";
    }
    
    system("pause");
    return 0;
    
}
Por favor, ¿me podéis aclarar este error?. Un saludo y gracias por adelantado