SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Dhanny en Sábado 2 de Junio de 2007, 17:28

Título: Llenar Vector Con Letras
Publicado por: Dhanny en Sábado 2 de Junio de 2007, 17:28
Hola amigos los felicito por vuestro foro esta del uno.
Ahora paso a preguntar:

Toy comenzando en C y este ejercicio me dejo medio parado.

Necesito ingresar por ejemplo mi nombre de una sola vez y despues llenar un vector con ese nombre pero no encuntro la manera de hacerlo pueden ayudarme.

ej:

Ingrese Nombre= Marcelo

vector
x[m]
x[a]
x[r]
x[c]
x[e]
x[l]
x

me entienden para luego ordenar alfabeticamente el vector, esa parte ya la tengo lista con la funcion strcmp. Pueden postearme el codigo de como se hace.

Gracias y Felicidades por el Foro.
Título: Re: Llenar Vector Con Letras
Publicado por: AnioN en Sábado 2 de Junio de 2007, 17:49
Código: Text
  1. #include<stdio.h>
  2.  
  3. int main() {
  4.  
  5. char nombre[20];
  6.  
  7. printf("Ingrese nombre:");
  8. gets(nombre);
  9.  
  10. printf("El nombre que se ingreso es: %s", nombre);
  11.  
  12.  
  13. return 0;
  14.  
  15. }
  16.  
  17.  
  18.  
Título: Re: Llenar Vector Con Letras
Publicado por: Mollense en Sábado 2 de Junio de 2007, 17:50
En C/C++ las cadenas son un Array, podés acceder directamente de la siguiente manera:
Código: Text
  1. Nombre[i]
  2.  
y listo.
Título: Re: Llenar Vector Con Letras
Publicado por: Dhanny en Sábado 2 de Junio de 2007, 18:27
muchas gracias por las respuestas me dejan mas claro, viendo los dos ejemplos entonces así mostraria el arreglo si fuese de largo 5

Código: Text
  1.  
  2.  
  3. for(x=0;x<5;x++)
  4. {
  5.      printf("%s\n",nombre[x]);
  6. }
  7.  
  8.  
  9.  

ejecute eso para que fuese mostrandome las letras hacia abajo pero no me funciona.
Título: Re: Llenar Vector Con Letras
Publicado por: Dhanny en Sábado 2 de Junio de 2007, 19:04
ayuda please necesito imprimir el vector pero me da un error  ;)
Título: Re: Llenar Vector Con Letras
Publicado por: AnioN en Sábado 2 de Junio de 2007, 19:22
Código: Text
  1. #include<stdio.h>
  2. #define MAX 3
  3.  
  4. int main() {
  5.  
  6. char nombre[MAX];
  7. int x;
  8.  
  9. for(x=0;x<MAX;x++)
  10. {
  11.       printf("Ingrese nombre:");
  12.       fflush(stdin);
  13.       scanf("%c", &nombre[x]);
  14. }
  15.  
  16. for(x=0;x<MAX;x++)
  17. {
  18.       printf("%c", nombre[x]);
  19. }
  20.  
  21.  
  22.  
  23. return 0;
  24. }
  25.  
  26.  
Título: Re: Llenar Vector Con Letras
Publicado por: Mollense en Sábado 2 de Junio de 2007, 19:24
Claro, como bien te da el ejemplo AnioN. Estás imprimiendo un caracter(%c) y no un string(%s)
Título: Re: Llenar Vector Con Letras
Publicado por: Dhanny en Lunes 4 de Junio de 2007, 02:56
Cita de: "AnioN"
Código: Text
  1. #include<stdio.h>
  2. #define MAX 3
  3.  
  4. int main() {
  5.  
  6. char nombre[MAX];
  7. int x;
  8.  
  9. for(x=0;x<MAX;x++)
  10. {
  11.       printf("Ingrese nombre:");
  12.       fflush(stdin);
  13.       scanf("%c", &nombre[x]);
  14. }
  15.  
  16. for(x=0;x<MAX;x++)
  17. {
  18.       printf("%c", nombre[x]);
  19. }
  20.  
  21.  
  22.  
  23. return 0;
  24. }
  25.  
  26.  
que raro probe este ejemplo y sale tres veces ingrese nombre y despues me tira hacia afuera!!  estará bien?
Título: Re: Llenar Vector Con Letras
Publicado por: AnioN en Lunes 4 de Junio de 2007, 03:50
Cita de: "Dhanny"
Cita de: "AnioN"
Código: Text
  1. #include<stdio.h>
  2. #define MAX 3
  3.  
  4. int main() {
  5.  
  6. char nombre[MAX];
  7. int x;
  8.  
  9. for(x=0;x<MAX;x++)
  10. {
  11.       printf("Ingrese nombre:");
  12.       fflush(stdin);
  13.       scanf("%c", &nombre[x]);
  14. }
  15.  
  16. for(x=0;x<MAX;x++)
  17. {
  18.       printf("%c", nombre[x]);
  19. }
  20.  
  21.  
  22.  
  23. return 0;
  24. }
  25.  
  26.  
que raro probe este ejemplo y sale tres veces ingrese nombre y despues me tira hacia afuera!!  estará bien?
esta bien, lo que tenes que hacer es ingresar caracter a caracter. En el define puse 3 a modo de ejemplo, lo podes cambar por el valor que quieras.
Un ppoco mas pulido seria asi.
Código: Text
  1. #include<stdio.h>
  2. #define MAX 3
  3.  
  4. int main() {
  5.  
  6. char nombre[MAX+1];
  7. int x;
  8.  
  9. for(x=0;x<MAX;x++)
  10. {
  11.      printf("Ingrese el %d caracter del nombre:", x+1);
  12.      fflush(stdin);
  13.      scanf("%c", &nombre[x]);
  14. }
  15.  
  16. for(x=0;x<MAX;x++)
  17. {
  18.      printf("%c", nombre[x]);
  19. }
  20.  
  21.  
  22.  
  23. return 0;
  24. }
  25.  
Título: Re: Llenar Vector Con Letras
Publicado por: Dhanny en Lunes 4 de Junio de 2007, 03:55
Anion tiene que ser caracter a caracter? no puedo ingresar el nombre completo de una vez y luego mostrar caracter a caracter con un for?
Título: Re: Llenar Vector Con Letras
Publicado por: AnioN en Lunes 4 de Junio de 2007, 04:01
Cita de: "Dhanny"
Anion tiene que ser caracter a caracter? no puedo ingresar el nombre completo de una vez y luego mostrar caracter a caracter con un for?
Código: Text
  1. #include<stdio.h>
  2. #define MAX 15
  3.  
  4. int main() {
  5.  
  6. char nombre[MAX+1];
  7. int x;
  8.  
  9.     printf("Ingrese el nombre completo:");
  10.     fflush(stdin);
  11.     gets(nombre);
  12.  
  13. for(x=0;x<MAX;x++)
  14. {
  15.     printf("Letra numero %d : %c\n", x+1, nombre[x]);
  16. }
  17.  
  18. return 0;
  19. }
  20.  
Título: Re: Llenar Vector Con Letras
Publicado por: Dhanny en Lunes 4 de Junio de 2007, 17:14
logre ordenar un vector de numeros pero de letras ni idea pueden ayudarme?
este es que ocupe para ordenar el vector con numeros.

Código: Text
  1.  
  2.   for(x=0;x<10;x++)
  3.   {
  4.     for(l=x+1;l<10;l++)
  5.     {
  6.       if(ar[x]>ar[l])
  7.       {
  8.         aux=ar[x];
  9.         ar[x]=ar[l];
  10.         ar[l]=aux;
  11.       }
  12.     }
  13.   }
  14.  
  15.  
Título: Re: Llenar Vector Con Letras
Publicado por: Dhanny en Lunes 4 de Junio de 2007, 17:56
he hecho un codigo pero no he ocupado la funcion strcmp, estará bien todavia no se por que ordena siendo que son string y no numeros.

Código: Text
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<string.h>
  5.  
  6. void main()
  7. {
  8.  
  9.   char ar[15];
  10.   int x,l,aux;
  11.  
  12.   clrscr();
  13.   printf("Ingrese el nombre completo:");
  14.   fflush(stdin);
  15.   gets(ar);
  16.  
  17.   //
  18.   for(x=0;x<strlen(ar);x++)
  19.   {
  20.     for(l=x+1;l<strlen(ar);l++)
  21.     {
  22.       if(ar[x]>ar[l])
  23.       {
  24.         aux=ar[x];
  25.         ar[x]=ar[l];
  26.         ar[l]=aux;
  27.       }
  28.     }
  29.   }
  30.  
  31.   //
  32.  
  33.   for(x=0;x<strlen(ar);x++)
  34.   {
  35.   printf("Letra numero %d : %c\n", x+1, ar[x]);
  36.   }
  37.  
  38.  
  39.  
  40.   getch();
  41.  
  42. }
  43.  
  44.  

funciona super bien pero creo que no es lo correcto o no?
alguien tiene un ejemplo que funcione pero con strcmp