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

[SOLUCIONADO] Problema con estructura de datos "Lista"

Estas en el tema de Problema con estructura de datos "Lista" en el foro de C/C++ en Foros del Web. Que tal a todos, espero que anden todos de lujo. Tengo un problema con una lista enlazada, la cual estoy usando una struct y por ...
  #1 (permalink)  
Antiguo 14/10/2012, 14:58
Avatar de Kanuto1272  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico DF
Mensajes: 21
Antigüedad: 14 años, 1 mes
Puntos: 0
Información Problema con estructura de datos "Lista"

Que tal a todos, espero que anden todos de lujo.

Tengo un problema con una lista enlazada, la cual estoy usando una struct y por medio de apuntadores (punteros) la hace dinámica.

Tengo problemas en asignar datos en las partes que conforman mi estructura, por ejemplo, estoy haciendo una estructura "alumnos" y este cuenta con "nombre" y "boleta", al momento de pasar mis datos por medio de punteros me dice el compildador: "Lvalue requiered".

Espero que me puedan ayudar por que ya casi termino este programa y solo ese ese pequeño error. Gracias.

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

struct alumnos
{
char nombre[50];
char boleta[10];
alumnos *sgte;
};
struct alumnos *puntini, *puntaux, *puntfin; //punteros de tipo nodo que sirven para el manejo de alumno

insertar();
mostrar();




///////////////////////////// MAIN/////////////////////////////////////////////
main()
{
int OPC=0;
while(OPC<4)
{
printf("Menu de registros de Alumos");
printf("\n\n");
printf("1. Ingresar un alumno.\n");
printf("2. Mostrar alumnos.\n");
printf("Escoja una opcion: ");
scanf("%d",&OPC);
clrscr();
switch(OPC)
{
case 1:
insertar();
break;
case 2:
mostrar();
break;
case 3:
break;
default: printf("OPCION INVALIDA");
}
}
}







////////////// Funcion insertar /////////////////////////////////

insertar()
{
char _nombre[50];
char _boleta[10];

printf("Ingrese el nombre del alumno: ");
scanf("%s",&_nombre);
printf("Ingrese la boleta del alumno: ");
scanf("%s",&_boleta);

if(puntini==NULL)
{
puntini=new(alumnos);
puntini->nombre=_nombre; //Aqui hay error :(
puntini->boleta=_boleta; //Aqui hay error :(
puntfin=puntini;
}
else
{
puntaux=new(alumnos);
puntfin->sgte=puntaux;
puntaux->nombre=_nombre; //Aqui hay error :(
puntaux->boleta=_boleta; //Aqui hay error :(
puntfin=puntaux;
}
puntfin->sgte=NULL;
}

////////////// Funcion mostrar /////////////////////////////////

mostrar()
{
puntaux=puntini;
while(puntaux!=NULL)
{
printf("****************************************** ******\n");
printf("Alumno: %s\n",puntaux->nombre);
printf("Boleta: %s\n",puntaux->boleta);
printf("****************************************** ******\n\n");
puntaux=puntaux->sgte;
}
}
  #2 (permalink)  
Antiguo 15/10/2012, 01:19
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Problema con estructura de datos "Lista"

puntini->nombre y puntini->boleta son cadenas de caracteres, al igual que _nombre y _boleta. Para copiar cadenas de caracteres no puedes utilizar =, debes utilizar la función strcpy:

strcpy (puntini->nombre, _nombre);
  #3 (permalink)  
Antiguo 15/10/2012, 07:40
Avatar de cronopiomx  
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años, 6 meses
Puntos: 28
Respuesta: Problema con estructura de datos "Lista"

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
struct alumnos
{
char nombre[50];
char boleta[10];
alumnos *sgte;
};
alumnos *puntini, *puntaux, *puntfin; //punteros de tipo nodo que sirven para el manejo de alumno

void insertar();
void mostrar();




///////////////////////////// MAIN/////////////////////////////////////////////
main()
{
int OPC=0;
while(OPC<4)
{
printf("Menu de registros de Alumos");
printf("\n\n");
printf("1. Ingresar un alumno.\n");
printf("2. Mostrar alumnos.\n");
printf("Escoja una opcion: ");
scanf("%d",&OPC);
//clrscr();
switch(OPC)
{
case 1:
insertar();
break;
case 2:
mostrar();
break;
case 3:
break;
default: printf("OPCION INVALIDA");
}
}
}







////////////// Funcion insertar /////////////////////////////////

void insertar()
{
char _nombre[50];
char _boleta[10];

printf("Ingrese el nombre del alumno: ");
scanf("%s",&_nombre);
printf("Ingrese la boleta del alumno: ");
scanf("%s",&_boleta);

if(puntini==NULL)
{
puntini = new (alumnos);
strcpy(puntini->nombre,_nombre); //Aqui hay error :(
strcpy(puntini->boleta, _boleta); //Aqui hay error :(
puntfin=puntini;
}
else
{
puntaux=new(alumnos);
puntfin->sgte =puntaux;
strcpy(puntaux->nombre, _nombre); //Aqui hay error :(
strcpy(puntaux->boleta, _boleta); //Aqui hay error :(
puntfin=puntaux;
}
puntfin->sgte=NULL;
}

////////////// Funcion mostrar /////////////////////////////////

void mostrar()
{
puntaux=puntini;
while(puntaux!=NULL)
{
printf("****************************************** ******\n");
printf("Alumno: %s\n",puntaux->nombre);
printf("Boleta: %s\n",puntaux->boleta);
printf("****************************************** ******\n\n");
puntaux=puntaux->sgte;
}
}
  #4 (permalink)  
Antiguo 15/10/2012, 22:27
Avatar de Kanuto1272  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico DF
Mensajes: 21
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema con estructura de datos "Lista"

Que tonto soy!! tienen razón, muchas gracias por el dato, enserio muchisimas gracias CronopioMX y Fw190 :)
  #5 (permalink)  
Antiguo 29/10/2012, 21:09
 
Fecha de Ingreso: octubre-2012
Ubicación: Lima
Mensajes: 31
Antigüedad: 12 años
Puntos: 1
Respuesta: Problema con estructura de datos "Lista"

Cita:
Iniciado por Fw190 Ver Mensaje
puntini->nombre y puntini->boleta son cadenas de caracteres, al igual que _nombre y _boleta. Para copiar cadenas de caracteres no puedes utilizar =, debes utilizar la función strcpy:

strcpy (puntini->nombre, _nombre);
y como extra trata de usar 2 estrucutras, una para tu lista(nodo) y otra para los alumnos asi se ve mas entendible y es mas optimo .saludos.
__________________
Lo mas curioso en esta vida es que todo se hace mas simple cuando lo divides de 2 en 2.

Etiquetas: lenguajec++, listas, punteros
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:44.