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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / 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");
}


]
2  Programación / Programación C/C++ / Memoria dinamica matriz en: 24 Abril 2012, 23:42 pm
Hola tengo que hacer un programa en c que lea nombres desde teclado y los ordene alfabeticamente.

He hecho el programa para que acepte 10 nombres. El codigo es el siguiente :

codigo[#include <stdio.h>
#include <stdlib.h>
void main(void)
{
    char **cadena, *aux;
    int i, j, n;
    char temp[20];
    printf("%s%s\n", "Este programa ordena diez nombres",
        "introducidos por teclado.");
    printf("Introduzca los diez nombres:\n");
    cadena = (char**)malloc(10*sizeof(char*));
    for (i=0; i<10; i++) {
        printf("Nombre %d: ", i+1);
        scanf(" %[^\n]", temp);
        cadena = (char*)malloc((strlen(temp)+1)*sizeof(char));
        strcpy(cadena, temp);
    }
    for (i=0; i<9; i++)
        for (j=i+1; j<10; j++)
           if ((strcmp(cadena, cadena[j])) > 0) {
               aux = cadena;
               cadena = cadena[j];
               cadena[j] = aux;
           }
    printf("La lista ordenada es:\n");
    for (i=0; i<10 ; i++)
        printf("%s\n", cadena);
}]

Mi pregunta es, que es lo que tendria que cambiar para que el programa acepte "n" nombre hasta el caracter EOF.
Lo he intentado de varias formas pero siempre me da warning por culpa de los punteros.
Alguien me podria ayudar,?
Muchas gracias
3  Programación / Programación C/C++ / programacion C en eclipse ubuntu en: 24 Abril 2012, 04:00 am
Hola, he instalado el programa eclipse en mi kubuntu, instalé tambien los plugins para CDT.
Cuando voy a ejecutar un programa, no me aparece "Local Application C/C++" en la configuracion de ejecutar, y no consigo saber el por qué
Alguien tiene alguna de idea?
Gracias
4  Programación / Programación C/C++ / Ordenar matriz alfabeticamente en: 23 Abril 2012, 23:06 pm
Hola, soy nuevo por aqui y queria hacerles una consulta.

Mi problema es el siguiente : Necesito copiar una cadena de caracteres dada por teclado en un array bidimensional.
Despues ordenar el array alfabeticamente y mostrarla por pantalla. El codigo es el siguiente:

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

int main(){
  
  char x[Maxstrl];
  char str[Maxstrl];
  char M[Maxanzahl][Maxstrl];
  int i,j,min,m,k=0;
  
  for(i=0;i<Maxanzahl;i++){
       for(j=0;j<Maxstrl;j++){
       M[j]= ' ';
       }

}
  
  while(fgets(str,Maxstrl,stdin)!=NULL){
    if(str[strlen(str)-1]=='\n'){
      str[strlen(str)-1]='\0';
      strcpy(M[k],str);
      k++;
    }
 }
  for(j=0;j<strlen(str);j++){
       if(strcmp(M[j],M[j+1])>0){
      strcpy(x,M[j]);
      strcpy(M[j+1],M[j]);
      strcpy(M[j+1],x);
    }
  for(i=0;i<strlen(str);i++){
    for(j=0;j<Maxstrl;j++){
      printf("%c\t",M[j]);
    }
    printf("\n");
  }
  return 0;
  
}

Muchas gracias por anticipado

EI: juntando mensajes.

No consigo ordenar bien el array bidimensional y mostrarlo por pantalla. Agradeceria alguna ayuda
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines