Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda con programa de Listas
Autor Mensaje
nanohueso Sin conexión
Campeon del cubo Rubik
Thats what she said
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 187
Agradecimientos dados: 132
Agradecimientos: 14 en 10 posts
Registro en: Feb 2012
Mensaje: #1
Ayuda con programa de Listas Ejercicios Informática I (Electrónica)
Hola gente, aca haciendo programas de listas, me volvi loco haciendo este que hace una funcion de insertar nodos ordenados alfabeticamente de A a la Z ,
copie el programa tambine aca http://www.copiatelo.com/index.php?show=m251242cf
el programa no me compila ni ahi y la verdad que ya me marie, si alguno puede darle una hojeada estaria mas que agradecido
un saludo a todos =)


/*Realizar un programa en C que implemente una aplicacion que permita ingresar por teclado datos en una LSE.
Los datos de la LSE seran datos personales de los alumnos de este curso: Nombre y Apellido (string de 30 caracteres
denominado apeNom), Legajo(long leg), Telefono (long tel)
Su programa debera realizar el ingreso de datos contemplando como condicion de salida la deteccion de la cadena "fin"
en lugar de un apeNom valido.
Los datos deberan ser guardados alfabeticamente segun apeNom en un archivo denominado personas.utn ubicado en el directorio de trabajo al finalizar el proceso*/

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

struct datos{
char ApeNom[30];
long leg;
long tel;
struct datos *next;
};
typedef struct datos DATOS;

void insertar_nodo_ordenado(DATOS **,DATOS *); //la funcion recibe la direccion del header y el nodo a agregar

int main()
{
DATOS *H;
H=NULL;
DATOS buffer;
printf("\nIngrese el nombre completo del estudiante ");
scanf("%s",buffer.ApeNom);
while(strcmp(buffer.ApeNom,"fin")!= 0)
{
insertar_nodo_ordenado(&H,&buffer);
printf("\nIngrese el nombre completo del estudiante ");
scanf("%s",buffer.ApeNom);
}
return 0;
}

void insertar_nodo_ordenado(DATOS **H,DATOS *buffer)
{
DATOS *nuevo;

if((*H)==NULL)
{
nuevo=(DATOS*)malloc(sizeof(DATOS));
strcpy(nuevo->ApeNom,buffer->ApeNom); //copio el nombre en el nuevo nodo
*H=nuevo;
nuevo->next=NULL;
}
else{

if((strcmp((*H)->ApeNom,buffer->ApeNom))>0)
{
nuevo=(DATOS*)malloc(sizeof(DATOS));
strcpy(nuevo->ApeNom,buffer->ApeNom);
nuevo->next=*H;
*H=nuevo;
}
else(((strcmp(*H->ApeNom,buffer->ApeNom))<0) || (strcmp(*H->ApeNom,buffer->ApeNom))==0))
{
DATOS *I;
I=*H;
while(I->next != NULL)
{
if((strcmp(I->ApeNom,buffer->ApeNom))>0)
{
nuevo=(DATOS*)malloc(sizeof(DATO));
strcpy(nuevo->ApeNom,buffer->ApeNom);
nuevo->next=i->next;
i->next=nuevo->next;
}
I=I->next;
}
//si sale del while es porque el nodo va al final de la lista
nuevo=(DATOS*)malloc(sizeof(DATO));
strcpy(nuevo->ApeNom,buffer->ApeNom);
I->next=nuevo;
nuevo->next=NULL;
}

}

}

}

}


30-07-2013 02:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.