Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/02/2008, 17:16
drbit
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 18 años, 8 meses
Puntos: 3
Re: problemas con estructuras

Las instancias de las estructuras en C++ son como las instancias de cualquier otro tipo, en tanto que si las pasas como argumento a una función sin utilizar ni punteros o referencias, dentro de la función estás trabajando con una variable que es una copia de la original.

Es por eso que te queda sin inicializar la biblioteca de main() y ves basura al mostrarla. En el ejemplo lo único que cambio de tu código es la declaración del prototipo y la declaración de argumentos de la función cargar, para que reciban una referencia a la biblioteca (no se hace copia y accedes diractamente a la instancia global de main).

La segunda pregunta no entiendo bien a que te referis. Saludos espero que te sirva.



Código:
# include <iostream>
#include <string>
#include <sstream>
#include <conio.h>
#define j 3
using namespace std;
void cargar( struct biblioteca& );
void mostrar( biblioteca );
int i;

struct libro{
  char titulo[10];
  char autor[6];
  char categoria[10];
};
struct biblioteca{
  libro l [j];
  char direccion[8];
};
int main (){

  biblioteca bli;
  cargar(bli);
  getch();
  mostrar(bli);

}
void cargar (biblioteca& bli)
{
  cout<<"Ingresar la direccion : ";
  cin >> bli.direccion;
  for(i=0;i<j;i++){
    cout<<"Ingresar titulo : ";
    cin>>bli.l[i].titulo;
    cout<<"ingresar autor :";
    cin>>bli.l[i].autor;
    cout<<"ingresar categoria: ";
    cin>>bli.l[i].categoria;
    cout<<endl;
  }
}
void mostrar (biblioteca bli){
  cout<<"la direccion es : "<<bli.direccion<<endl;
  for(i=0;i<j;i++){
    cout<<endl;
    cout<<"los titulos son: "<<bli.l[i].titulo<<endl;

    cout<<"los autores son : "<<bli.l[i].autor<<endl;
    cout<<"las categorias son : "<<bli.l[i].categoria<<endl;
    getch();
  }
}
__________________
programación php