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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como puedo ordenar nombres con edades?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como puedo ordenar nombres con edades?  (Leído 2,174 veces)
JulianDronger

Desconectado Desconectado

Mensajes: 6


Ver Perfil
como puedo ordenar nombres con edades?
« en: 27 Febrero 2019, 18:53 pm »

No quiero que interpreten como que quiero que hagan una trabajo para mi, solo queria consejo sobre este ejercicio

Tengo este código, lo que busco es ingresar 5 nombres (mínimo) con 5 edad para cada nombre y que ordene los nombres alfabéticamente y me muestre las listas con los nombres y las edades pero el código falla apenas empieza pero si le saco del código a las variables que representan las edades entonces si funciona. Alguna ayuda? Programo en Qt en lenguaje C:

int n;

       printf("Ingrese cantidad de nombres a ingresar: ");
       scanf("%d",&n);

       char  s[n][20],aux[20];
       int   i,j, edad[n];
       float comp;

       for(i=0;i<n;i++)
       {
         printf("Ingrese nombre(es) y edad(es): ");
         scanf("Nombre: %s",s);
         printf("\n");
         scanf("Edad: %d", &edad);
         printf("\n");
       }
       for(i=0;i<n;i++){
           for(j=0;j<n-i;j++){
               comp = strcmp( s[j], s[j+1] );
               if(comp > 0){
                  strcpy(aux,s[j]);
                  strcpy(s[j],s[j+1]);
                  strcpy(s[j+1],aux);
              }
           }
       }
       printf("Los nombres ordenados alfabeticamente son:\n");
       for(i=0;i<n;i++){

          printf("%d.- Nombre: %s",i+1,s);
          printf("\t");
          printf("Edad %d", edad);
          printf("\n");
       }


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: como puedo ordenar nombres con edades?
« Respuesta #1 en: 27 Febrero 2019, 20:16 pm »

Antes de nada modifica tu mensaje e inserta tu código entre etiquetas de código GeSHi (encima del cuadro de texto hay un desplegable para elegir el lenguaje, C en este caso), sino es muy difícil de interpretar...

Ahora respecto a tu problema. Tienes algunos errores a la hora de leer variables con <scanf()> y creo que la mejor forma de implementar lo que quieres es usando una <struct>. Ahora te comento un poco cómo funciona porque imagino que no las has usado nunca. Están dirigidas a la programación orientada a objetos (POO) y consiste en almacenar distintas variables dentro de un nuevo tipo de variable que creas.
Imagina una persona que tiene nombre y edad. Para no guardar los datos por ahí sueltos, podemos crear una <struct Persona> y cada objeto/variable de tipo <Persona> tendrá un nombre (char[]) y una edad (int).
Código
  1. #define MAX_SIZE 20 // longitud maxima para el nombre
  2. struct Persona{
  3.    char nombre[MAX_SIZE];
  4.    int edad;
  5. }; // siempre acabado en ;

Ahora para crear un objeto/variable de tipo <Persona> hay que seguir los mismos pasos que para cualquier otro tipo de variable pero sustituyendo el tipo de variable (int/float/char/...) por "struct" + <nombre struct>. En este caso, "struct Persona <nombre variable>". Y para acceder a las variables que están guardadas dentro de <Persona> se utiliza el punto (.). Te pongo un ejemplo.
Código
  1. // creamos la struct como se ve arriba
  2. int main(){
  3.    struct Persona yo;
  4.    printf("Introduce tu nombre: ");
  5.    scanf("%s", yo.nombre); // recomendable usar fgets()
  6.    printf("Introduce tu edad: ");
  7.    scanf("%d", &yo.edad); // en el scanf() anterior tambien vale scanf("%s", &yo.nombre) pero no es necesario el &
  8.  
  9.    printf("Tu nombre es %s y tienes %d años\n", yo.nombre, yo.edad);
  10. }

He usado <scanf()> para guardar almacenar ambas variables para que veas cómo se usa pero las cadenas de caracteres es mejor que las guardes usando <fgets()>. El inconveniente es que se guardará también el <Enter> y cada vez que muestres la variable, acabará con un salto de línea. Eso se puede arreglar pero creo que mejor más adelante para no meter muchas cosas nuevas de golpe.

Ahora tienes que implementar tu código usando este ejemplo como guía, por ejemplo, crear un array de personas... :silbar:
Si tienes alguna duda al respecto siempre puedes preguntar. Suerte :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
JulianDronger

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: como puedo ordenar nombres con edades?
« Respuesta #2 en: 27 Febrero 2019, 22:18 pm »

Si eh usado structs antes, pero no los use en este ejercicio. Gracias me sirvió de mucho tu respuesta, temía que pensaran que les pedía hacer un ejercicio por mi, y no te preocupes, ya se como arreglar el error por si se guarda el ENTER. Gracias, una vez mas
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa para ordenar nombres alfabeticamente
Programación Visual Basic
elcoc_o 2 6,063 Último mensaje 18 Octubre 2010, 19:04 pm
por Psyke1
hacer compareTo con vector de char (para ordenar nombres)
Java
d!lan 2 3,242 Último mensaje 19 Febrero 2014, 16:41 pm
por NikNitro!
[Ayuda] Como puedo ordenar los elementos gráficos por coordenadas en Python
Scripting
Proxmond 3 4,357 Último mensaje 16 Junio 2014, 16:48 pm
por daryo
Ordenar alfabeticamente Nombres (Struct)
Programación C/C++
Ja_90 6 9,970 Último mensaje 22 Octubre 2014, 19:10 pm
por Ja_90
como puedo ordenar 2 arraylist ?
Java
holamega12 8 4,919 Último mensaje 15 Febrero 2015, 16:31 pm
por Usuario Invitado
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines