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

Ayuda urgente con cadena de caracteres

Estas en el tema de Ayuda urgente con cadena de caracteres en el foro de C/C++ en Foros del Web. Hola bueno este codigo ase que si ingreso: MERCEDES APAZA PERES me cuenta las letras y espacios en este caso seria 18 letras y 3 ...
  #1 (permalink)  
Antiguo 27/10/2010, 18:46
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 14 años, 6 meses
Puntos: 3
Ayuda urgente con cadena de caracteres

Hola bueno este codigo ase que si ingreso:
MERCEDES APAZA PERES
me cuenta las letras y espacios en este caso seria 18 letras y 3 espacios.

funciona bien el programa pero sucedio algo curioso en el colegio.
este trabajo presente al docente y me dijo que este cosigo no funciona,
mi preguntas es por que no funcionaria si funciona bien

for(i=0;dato[i]!=t;i++)

o

for(i=0;dato[i]!='\0';i++)

Osea el bucle termina en el salto de linea

por favor diganme por que estari mal.

Código C++:
Ver original
  1. #include <string.h>
  2. #include <conio.h>
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. main()
  7. {
  8.     char dato[80],s;
  9.     int i,suma=0,t='\0';
  10.     int espacio= 0;
  11.     cout<<"Escriba una cadena: ";
  12.     cin.getline(dato,80) ;
  13.     for(i=0;dato[i]!=t;i++)//Aqui es la discucion  ¿por que no funcionaria..?
  14.     {
  15.         if(dato[0]==' ')
  16.         {
  17.             t=dato[i];
  18.             s=2;
  19.         }
  20.         else if((dato[i]==' ') && (dato[i+1]==' '))
  21.         {
  22.             t=dato[i];
  23.             s=2;
  24.         }
  25.         else if(dato[i]==' ')
  26.         {
  27.             espacio=espacio+1;
  28.         }
  29.         else
  30.         {
  31.             suma=suma+1;
  32.         }
  33.  
  34.        
  35.     }
  36.     if(s==2)
  37.     {
  38.         cout<<"Datos no permitidos!"<<endl;
  39.     }
  40.     else
  41.     {
  42.         cout<<dato<<"  Tiene: "<<suma<<" Letras y "<<espacio<<" Espacios"<<endl;
  43.     }
  44.        
  45.  
  46.  return 0;
  47. }
  #2 (permalink)  
Antiguo 27/10/2010, 19:09
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Ayuda urgente con cadena de caracteres

Porque estas comparando un dato del tipo int con un dato del tipo char. Aunque el compilador te deja compilar, seguramente te debe dar una advertencia.

El probleme reside que los char ocupan menos memoria que los int. Para comparar dos sectores de distintos tamaño, hay dos opciones. O se agrepa mas memoria con el char generando basura o se acorta el int por lo que este maneje de momeria podria hacer fallar la comparacion.

Posiblemente funcione....Pero te recomiendo tener cuidado con estas cosas ya que cuando mas grande se hacen los programas mas lios puedes tener con estas dedicalesa.
  #3 (permalink)  
Antiguo 27/10/2010, 19:14
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 14 años, 6 meses
Puntos: 3
Respuesta: Ayuda urgente con cadena de caracteres

Gracias sam90 pero
entonces como deberia de ser
  #4 (permalink)  
Antiguo 27/10/2010, 19:27
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Ayuda urgente con cadena de caracteres

declara a t como un char. o simplemente la variable t no tiene porque existir!

for(i=0;dato[i]!='\0';i++)
  #5 (permalink)  
Antiguo 27/10/2010, 19:35
Avatar de soy_nicanor  
Fecha de Ingreso: mayo-2010
Mensajes: 374
Antigüedad: 14 años, 6 meses
Puntos: 3
Respuesta: Ayuda urgente con cadena de caracteres

Gracias pero quede con mucho mas duda

Etiquetas: caracteres, cadenas
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 14:03.