elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ordenamiento estructuras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ordenamiento estructuras  (Leído 3,081 veces)
programacion_c

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ordenamiento estructuras
« en: 31 Mayo 2012, 18:12 pm »

Hola a todos, Estoy haciendo un programa en c que recibe por teclado cadenas de caracteres, que se guarda en una estructura y luego hay que ordenarla. No encuentro cual es el fallo, a ver si me pudieses ayudar, gracias de antemano.

Este es el codigo:
[#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define Maxanzahl 100
#define Maxstrl 50


struct element {
  int nr;
  char *zk;
};

int main(){
 
  struct element *p[100];
 
  char *aux;
  char *temp=NULL;
  int i=0,j,k;
 
 
  temp=(char *)malloc(Maxstrl*sizeof(char));
 
 
  while(fgets(temp,Maxstrl,stdin)!=NULL){
    if(temp[strlen(temp)-1]=='\n'){
      temp[strlen(temp)-1]=='\0';
    }
    p=malloc(sizeof(struct element));
    p->nr=i;
    if (p!=NULL){
      p->zk = (char *)calloc(strlen(temp)+1,sizeof(char));
      strcpy(p->zk,temp);
      p->nr=i;
      i++;
    }
   
  }
 
  for (j=0; j<i-1; j++){
        for (k=0; k<i-j-1; k++){
           if ((strcmp(p[j]->zk, p[j+1]->zk)) > 0) {
               aux = p[j]->zk;
               p[j]->zk = p[j+1]->zk;
               p[j+1]->zk = aux;
           }
   }
 
}


printf("Salida:\n");
    for (j=0; j<i ; j++){
        printf("%d %s\n",p[j]->nr+1 , p[j]->zk);
    }
 
for (j=0; j<i ; j++){
        free(p[j]->zk);
        free(p[j]);
}
   
    free(temp);
   
  return 0;
  system("pause");
}


]


En línea

programacion_c

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ordenamiento estructuras
« Respuesta #1 en: 31 Mayo 2012, 19:06 pm »

He corregido el codigo, pero sigue sin ordenar, por favor una ayudita..

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define Maxanzahl 100
#define Maxstrl 50


struct element {
  int nr;
  char *zk;
};

int main(){
 
  struct element *p[100];
 
  char *aux;
  char *temp=NULL;
  int i=0,j,k;
 
 
  temp=(char *)malloc(Maxstrl*sizeof(char));
 
 
  while(fgets(temp,Maxstrl,stdin)!=NULL){
    if(temp[strlen(temp)-1]=='\n'){
      temp[strlen(temp)-1]='\0';
    }
    p=malloc(sizeof(struct element));
    p->nr=i;
    if (p!=NULL){
      p->zk = (char *)calloc(strlen(temp)+1,sizeof(char));
      strcpy(p->zk,temp);
      p->nr=i;
      i++;
    }
   
  }
 
  for (j=0; j<i-1; j++){
        for (k=0; k<i-j-1; k++){
           if ((strcmp(p[j]->zk, p[j+1]->zk)) > 0) {
               aux = p[j]->zk;
               p[j]->zk = p[j+1]->zk;
               p[j+1]->zk = aux;
           }
   }
 
}


printf("Salida:\n");
    for (j=0; j<i ; j++){
        printf("%d %s\n",p[j]->nr+1 , p[j]->zk);
    }
 
for (j=0; j<i ; j++){
        free(p[j]->zk);
        free(p[j]);
}
   
    free(temp);
   
  return 0;
  system("pause");
}


En línea

programacion_c

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ordenamiento estructuras
« Respuesta #2 en: 31 Mayo 2012, 19:08 pm »

Donde pone p->i o p=malloc, en verdad es p, pero no se pq no me lo pone bien.
En línea

programacion_c

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ordenamiento estructuras
« Respuesta #3 en: 31 Mayo 2012, 19:10 pm »

p->i o p=malloc     Es p i , y la i entre corchetes pero no me sale cuando la escribo por aki
En línea

programacion_c

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ordenamiento estructuras
« Respuesta #4 en: 31 Mayo 2012, 19:21 pm »

Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define Maxanzahl 100
#define Maxstrl 50


struct element {
  int nr;
  char *zk;
};

int main(){
 
  struct element *p[100];
 
  char *aux;
  char *temp=NULL;
  int i=0,j,k;
 
 
  temp=(char *)malloc(Maxstrl*sizeof(char));
 
 
  while(fgets(temp,Maxstrl,stdin)!=NULL){
    if(temp[strlen(temp)-1]=='\n'){
      temp[strlen(temp)-1]='\0';
    }
    p[i]=malloc(sizeof(struct element));
    p[i]->nr=i;
    if (p[i]!=NULL){
      p[i]->zk = (char *)calloc(strlen(temp)+1,sizeof(char));
      strcpy(p[i]->zk,temp);
      p[i]->nr=i;
      i++;
    }
   
  }
 
  for (j=0; j<i-1; j++){
        for (k=0; k<i-j-1; k++){
           if ((strcmp(p[j]->zk, p[j+1]->zk)) > 0) {
               aux = p[j]->zk;
               p[j]->zk = p[j+1]->zk;
               p[j+1]->zk = aux;
           }
}
 
}


printf("Salida:\n");
    for (j=0; j<i ; j++){
        printf("%d %s\n",p[j]->nr+1 , p[j]->zk);
    }
 
for (j=0; j<i ; j++){
        free(p[j]->zk);
        free(p[j]);
}
   
    free(temp);
   
  return 0;
  system("pause");
}

En línea

programacion_c

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ordenamiento estructuras
« Respuesta #5 en: 31 Mayo 2012, 20:05 pm »

Por si a alguien le sirve, el problema estaba en el bucle for

for (j=0; j<i-1; j++){
        for (k=0; k<i-j-1; k++){
           if ((strcmp(p[j]->zk, p[j+1]->zk)) > 0) {
               aux = p[j]->zk;
               p[j]->zk = p[j+1]->zk;
               p[j+1]->zk = aux;
           }
   }
 
}

hay que poner una "k" donde va la "j".

for (j=0; j<i-1; j++){
        for (k=0; k<i-j-1; k++){
           if ((strcmp(p[k]->zk, p[k+1]->zk)) > 0) {
               aux = p[k]->zk;
               p[k]->zk = p[k+1]->zk;
               p[k+1]->zk = aux;
           }
   }
 
}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Metodos de Ordenamiento en c#
.NET (C#, VB.NET, ASP)
alexvem 0 38,774 Último mensaje 4 Agosto 2008, 18:02 pm
por alexvem
Metodos de Ordenamiento
Programación Visual Basic
...:::Téotl:::... 4 13,593 Último mensaje 15 Junio 2012, 22:55 pm
por raul338
metodo de ordenamiento
Java
mojittoo 2 6,066 Último mensaje 24 Mayo 2009, 13:35 pm
por Aeros
Ordenamiento burbuja
Programación C/C++
jravelar 5 7,080 Último mensaje 29 Abril 2010, 17:13 pm
por Tha_Traker
METODOS DE ORDENAMIENTO
Programación C/C++
ANTÓN RAMIREZ 1 14,799 Último mensaje 12 Diciembre 2010, 12:53 pm
por Garfield07
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines