[C con Clase] Duda Sobre Graficos

PABLO 22 pablo22_4 en hotmail.com
Lun Nov 26 01:13:59 CET 2012



Hola tengo una consulta la cual me ha superado muy lejos no encuentro el error, nunca use la lista pero espero que alguien me ayude. Y si la estoy usando mal que me lo hagan saber .Desde ya muchas gracias.
Mi codigo es sobre una practica de listas la cual me tira un error en la parte de ordenacion la verdad nose donde esta el error por que en la parte donde se pasan la lista entre dos funcionesuna adentro de la otra ahi creo q esta el error pero nose cual es ...Ayuda por favorr..En las funciones copiar(coche**,coche**) y ordenar (coche**,int *)

#include <stdio.h>#include <stdlib.h>#include <conio.h>#define V         1#define F         0#define M         20
struct tauto{       int codigo;       char marca[M];       char modelo[M];       char color[M];       struct tauto *sig;};typedef struct tauto coche;

//Prototipos.-void menu();void agregar (coche ** , int *);void borrar  (coche ** , int *);void buscar  (coche ** , int *);void ordenar (coche ** , int *);void mostrar (coche ** , int *);void copiar  (coche  ** , coche  ** );
int main(){    int ind=0,*indx;       //Indice de cantidad de elementos en la lista    indx=&ind;        char opcion='z';         //Opcion para el menu        coche *cabeza;    cabeza=NULL;                     //======== Bucle Menu ========//    for ( ; opcion!='s' && opcion!='S' ; )    {        menu();        fflush(stdin);        printf("%c\n",opcion=getch());        switch (opcion)        {               case '1': agregar(&cabeza,indx);                         break;                case '2': borrar(&cabeza,indx);                         break;               case '3': buscar(&cabeza,indx);                         break;               case '4': ordenar(&cabeza,indx);                         break;               case '5': mostrar(&cabeza,indx);                         break;               case 'S':;               case 's': printf("\nCerrando programa...\n");                         break;               default:                       printf("\nIngrese una opcion valida...\n\n");                       system("pause");                       break;            }    }    //======== Fin Bucle Menu ========//    system("pause");    return 0;}
void agregar( coche **cabeza, int *indx){     coche *p;     p=NULL;     if ( (*cabeza)==NULL )     {        printf("Lista vacia.-\n");                p=(coche *)malloc(sizeof(coche));             printf("\nAuto nro %i : ",*indx+1);        printf("\n\tCodigo :  ");        scanf("%i",&p->codigo);        printf("\tMarca :   ");        scanf("%s",p->marca);        printf("\tModelo :  ");        scanf("%s",p->modelo);        printf("\tColor :   ");        scanf("%s",p->color);                p->sig=NULL;        (*cabeza)=p;     }     else     {        p=(coche *)malloc(sizeof(coche));             printf("\nAuto nro %i : ",*indx+1);        printf("\n\tCodigo :  ");        scanf("%i",&p->codigo);        printf("\tMarca :   ");        scanf("%s",p->marca);        printf("\tModelo :  ");        scanf("%s",p->modelo);        printf("\tColor :   ");        scanf("%s",p->color);                p->sig=(*cabeza);        (*cabeza)=p;     }     (*indx)=(*indx+1);     printf("\n");     system("pause");}
void borrar ( coche **cabeza,int *indx ){     int i,codigo=0,flag=F;          coche *p,*anterior=NULL;     p=(*cabeza);          printf("\nIngrese el codigo del auto a borrar : ");     scanf("%i",&codigo);          for (i=0;i<(*indx);i++)     {         if  ( anterior==NULL )         {             if  ( p->codigo==codigo )            {                  (*cabeza)=p->sig;                  free(p);                  //p=cabeza;                  (*indx)=(*indx-1);                  flag=V;                  printf("\nSe borro con exito! .- \n");                  break;            }else            {                 anterior=p;                 p=p->sig;            }         }         else          {              if  ( p->codigo==codigo )              {                  anterior->sig=p->sig;                  free(p);                  (*indx)=(*indx-1);                  flag=V;                  printf("\nSe borro con exito! .- \n");                  break;              }else              {                   anterior=p;                   p=p->sig;              }         }     }     if ( flag == F )        printf("\nNo se encontro el auto.- \n");     printf("\n");     system("pause");     }

void buscar ( coche **cabeza,int *indx ) {     int i,flag=F;     char mod[M];          coche *p;     p=(*cabeza);          printf("\nIngrese el modelo a buscar : ");     scanf("%s",&mod);     printf("Auto : ");          for ( i=0;i<(*indx);i++ )     {         if ( strcmp(p->modelo,mod)==0 )         {            printf("\n\tCodigo :  %i",p->codigo);            printf("\n\tMarca :   %s",p->marca);             printf("\n\tModelo :  %s",p->modelo);            printf("\n\tColor :   %s\n\n",p->color);            flag=V;            break;         }else              p=p->sig;     }     if ( flag == F )        printf("\n\tNo encontrado.-\n");     printf("\n");     system("pause");}

void mostrar( coche **cabeza,int *indx){     int i;     coche *p;     p=(*cabeza);          printf("\n======Mostrando======\n");     printf("\nElementos en la lista : %i \n",*indx);     for (i=0;i<(*indx);i++)     {         printf("\nAuto nro %i : ",i+1);         printf("\n\tCodigo :  %i",p->codigo);         printf("\n\tMarca :   %s",p->marca);          printf("\n\tModelo :  %s",p->modelo);         printf("\n\tColor :   %s\n\n",p->color);                  p=p->sig;     }     printf("\n");     system("pause");}
void copiar (coche **d, coche **f){     coche *temp,*dest,*fuent;          dest=(*d);     fuent=(*f);          temp->codigo=dest->codigo;     strcpy ( temp->marca,dest->marca );         strcpy ( temp->modelo,dest->modelo );         strcpy ( temp->color,dest->color );              dest->codigo=fuent->codigo;     strcpy ( dest->marca,fuent->marca );         strcpy ( dest->modelo,fuent->modelo );         strcpy ( dest->color,fuent->color );              fuent->codigo=temp->codigo;     strcpy ( fuent->marca,temp->marca );         strcpy ( fuent->modelo,temp->modelo );         strcpy ( fuent->color,temp->color );     }
void ordenar( coche **cabeza,int *indx ){     int i,j;     coche *p,*aux;     p=(*cabeza);          printf("\nElementos en la lista : %i \n",*indx);     for (i=0;i<(*indx)-1;i++)     {            aux=p;               for (j=i+1;j<(*indx);j++)         {             printf("\n[%i][%i]",i,j);             aux=aux->sig;             if (strcmp(p->marca,aux->marca)>0)             {                  printf("\ncambio");                copiar(&p,&aux);             }         }         p=p->sig;     }     printf("\nLista Ordenanda .-\n");     system("pause");}
   void menu(){     system("cls");     printf("\n==============MENU==============");     printf("\n1)Agregar");     printf("\n2)Borrar");     printf("\n3)Buscar");     printf("\n4)Ordenar");     printf("\n5)Mostrar");     printf("\nS)Salir.-");          printf("\n\n\t\tOpcion : ");}














 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20121126/84613cc6/attachment.html>


Más información sobre la lista de distribución Cconclase