/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

problema de cadena

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
ups!!



Registrado: 02 Sep 2007
Mensajes: 12

MensajePublicado: 10/09/2007 12:34 pm
Título: problema de cadena

Rolling Eyes hola, necesito nuevamente de su ayuda.

tengo que hacer un programa que lea una cadena y un numero entero k y nos arroje por pantalla <todas las palabras son largas> si todas las palabras son mayores o igual a las longitud de k, y <hay una palabra corta> en caso contrario..


Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy
Volver arriba
David_Polito



Registrado: 06 Jun 2006
Mensajes: 102
Ubicación: México

MensajePublicado: 10/09/2007 1:44 pm
Título:

Código:
#include <stdio.h>
#include <stdlib.h>
#define N 128
#define ESPACIO ' '

int main(void){
    char cadena[N] = "    Clade sad   ", *ptr = cadena;
    int longitud = 4, cont;
   
    while(*ptr == ESPACIO && *ptr++) ;
    if (!*ptr) exit(0);
   
    while(*ptr){
         cont = 0;
         while(*ptr != ESPACIO && *ptr)
            if (isalpha(*ptr++)) cont++;
         if (cont < longitud && cont){
            puts("Hay una palabra corta");
            exit(0);
         }
         ptr++;
   }
    puts("Todas las palabras son largas");
    return EXIT_SUCCESS;
}
Volver arriba
ups!!



Registrado: 02 Sep 2007
Mensajes: 12

MensajePublicado: 10/09/2007 1:48 pm
Título: problema de cadena

existe una formas mas sencilla en lenguaje c de hacer lo mismo??
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 11/09/2007 8:42 am
Título:

La forma que ya te indicaron me parece sencilla. Otra forma de realizar la operacion es utlizando las funciones de la biblioteca estandar de C strtok (para separar la cadena en palabras) y strlen (para obtener la longitud de cada una):
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SEPARADORES  " \t\v\r\n"

int main(void)
{
   char cad[] = "    Clade sad   ";
   char *p;
   size_t longitud_max = 4;
   int ninguna_es_mayor;
   
   ninguna_es_mayor = 1;
   p = strtok(cad, SEPARADORES);
   while (p != NULL){
      if (strlen(p) > longitud_max){
         ninguna_es_mayor = 0;
         break;
      }
     
      p = strtok(NULL, SEPARADORES);
   }
   
   if (ninguna_es_mayor)
      puts("Ninguna palabra es mayor");
   else
      puts("Por lo menos una palabra es mayor");
   
   return EXIT_SUCCESS;
}



Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com