Foros del Web » Programación para mayores de 30 ;) » C/C++ »

programa de cadenas

Estas en el tema de programa de cadenas en el foro de C/C++ en Foros del Web. Pues tengo que hacer un programa que te diga las siglas de una frase, es decir las primeras letras de cada palabra. Y el caso ...
  #1 (permalink)  
Antiguo 19/09/2012, 09:10
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
programa de cadenas

Pues tengo que hacer un programa que te diga las siglas de una frase, es decir las primeras letras de cada palabra. Y el caso es que lo que he hecho me compila, pero no va, y nosé como podria orientarlo de otra manera.
Por ejemplo: ALTA VELOCIDAD ESPAÑOLA el programa me diria: AVE
Lo que llevo hasta ahora es esto:
Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 20
  4. #define FIN '\0'
  5.  
  6. void siglas(char cadena[],char cadena2[]);
  7.  
  8. int main(){
  9.    
  10.     char cadena[20],cadena2[20];
  11.     printf("Introduzca la frase:");
  12.     gets("cadena");
  13.     siglas(cadena,cadena2);
  14.     puts("cadena2");
  15.    
  16.  system("pause");return 0;  
  17. }
  18.  
  19.  
  20. void siglas(char cadena[],char cadena2[])
  21. {
  22.      int j=1,i;
  23.      cadena2[0]=cadena[0];
  24.      for(i=1;i<FIN;i++){
  25.      if(cadena[i]==' '){
  26.      cadena2[j]=cadena[i+1];
  27.      j++;}
  28.      }
  29. }


Muchas gracias!!

Última edición por adrianing; 19/09/2012 a las 09:35
  #2 (permalink)  
Antiguo 19/09/2012, 10:04
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: programa de cadenas

Hola. Te comento dos errores que pude observar en tu código:

Primero, el bucle for debes hacerlo desde un determinado número, hacia otro. Por lo tanto no puedes empezar desde un int de valor 1, y correr el bucle hasta el char "\0".:

Código C:
Ver original
  1. for(i=1;i<FIN;i++){

Creo que lo que deberías hacer es:

Código C:
Ver original
  1. for(i=0;i<20;i++){

Ya que 20 es el máximo que has especificado. Además, los arrays de caracteres empiezan desde el 0 (nótese el cambio i = 0)
De otra manera podrías hacer un bucle while, reemplazando al for.

Segundo, las cadenas no se comparan con el operador "==" sino con la función strcmp de string.h

Espero que te sea de ayuda.

  #3 (permalink)  
Antiguo 19/09/2012, 10:08
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: programa de cadenas

otra cosa, cuando usas gets y puts, los parametros que le envias estan mal... las 2 funciones esperan que les pasen un puntero a char y vos les estas pasando dos cadenas de texto, lo podes solucionar eliminando las comillas que estan demas
  #4 (permalink)  
Antiguo 19/09/2012, 10:33
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: programa de cadenas

vaya crack que sois, de verdad ;D , los dos me habeis ayudado en algo , carbon en lo del bucle for que tiene que ir hasta 20, y starfix en lo de quitar las comillas, haciendo estas dos cosas, va de maravilla jeje, ahora haber si lo pongo todo en mayusculo y lo termino.
Muchas gracias a los dos :):):)

Etiquetas: cadenas, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:30.