Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - g.izmo

#1
Programación C/C++ / Re: un contador de palabras
14 Octubre 2017, 17:09 PM
#include<stdio.h>
#include<conio.h>



main()
{
  int palabras=0;
  int error=1;
  char a;
  char b;

   while(error!=0) //Cuando se produzca un error se repetira el proceso. Como hemos declarado el error a 1, se iniciara.
   {
      error=0; // Devolvemos el valor 0 al error para que vuelva a contar errores
      puts("Introduzca frase valida:");
      b==' ';
      printf("%c",b); // Comenzamos con un espacio
      scanf("%c%c",&a,&b); //Se escanea el primer espacio que hemos introducido y la primera tecla que pulsemos
      while (a!='\r') // Mientras no se pulse intro se continuan escaneando caracteres
      {
         b==a; //Entonces b pasa a ser la a
         a=getche(); // Y a escanea y muestra la tecla
         if (b==' '&&a!=' ') {palabras=palabras+1;} // Si hay un espacio y un caracter juntos (b,a)
      }
      if(a=='\r') {printf("\nSe han escrito: %d palabras", palabras);break;} // El intro nos muestra el numero de palabras
    }
    getch();
}


El programa comienza bien ("Introduzca frase valida:") el espacio que pedimos al principio y lo que escribamos....

Pero no cuenta palabras, siempre muestra que hay 0 y cuando pulsamos enter hay que pulsarlo dos veces para que muestre las palabras(ssiempre 0)
#2
Programación C/C++ / Re: un contador de palabras
14 Octubre 2017, 15:46 PM
Si tengo dos variables 'a''b' puedo irlas escaneando por momentos y que 'a'(el nuevo caracter) introducido se escanee, y pase a ser 'b' cuando se introduzca otro caracter.

Lo que se me ocurre es:

puts("Introduzca frase valida:"); // Si no dejamos espacio, se pondra al declarar b como tal.
ordinal_b=32;
ordinal_a=getche();
printf("%c",b);

while(ordinal_a!=13)
                        ordinal_b=ordinal_a;
         ordinal_a=getche();
         if (ordinal_b=32 && ordinal_a!=32) {palabras=palabras+1;}
if(ordinal_a=13) {printf("Se han escrito: %d palabras", palabras);}


Lo que no se es si esta estructura mantendra la composicion de variables b,a mientras se escaneen todas las teclas pulsadas. si tienes aguna sugerencia me ayudarias muchisimo
 
#3
Programación C/C++ / Re: un contador de palabras
14 Octubre 2017, 14:06 PM
He pensado que si tengo dos caracteres como variables. Si hago que obligatoriamente empiece por espacio, puedo hacer que cada vez que la segunda variable sea una letra cuente como palabra, si es espacio nada, y si es caracter no valido te lo pida de nuevo.

Cada vez que se introduzca un nuevo caracter, será b, y a será la b anterior (anvanzan de uno en uno).

Podría tener dos comtadores, uno de palabras y otro, que en caso de haber introducido más de cero caracteres no validos te pida la ntroduccion de una nueva frase.


¿Que opciones tengo paraa repetir todo el proceso de nuevo si hay un caracter no valido en la frase?

Gracias por adelantado
#4
Programación C/C++ / un contador de palabras
13 Octubre 2017, 19:58 PM
Tengo que hacer un contador de palabras, (Mi nivel de programacion es bastante basico), y nos pide:
Contar palabras (Solo mayusculas, y sin acentos)
meter uno o mas espacios sin que cuenten
y cuando se presione enter te diga cuantas palabras hay.

en caso de meter caracter invalido, pide una frase de nuevo sin importar la anterior


Me podrian dar alguna idea, lo agradeceria mucho :)
#5
Cita de: ivancea96 en 13 Octubre 2017, 18:31 PM
Pusiste ";" al final de un if.


GRACIAS! Llevo 45 min y todos los erros por es.... como no me sale en la pantalla ni lo habia visto.... GRACIAS
#6
Estoy haciendo un ejercicio y me salen un monton de errores, necesito ayuda:


#include<stdio.h>
#include<conio.h>

main()
{
char caracter;
int ordinal;
int letras=0;
int vocales=0;

puts("Introduce frase valida:");
caracter=ordinal;
ordinal=getche();
while(ordinal!=13) //Mientras no le des al intro
    {
    if(ordinal>64 && ordinal<91 || ordinal>96 && ordinal<123 || ordinal>47 && ordinal<58 || ordinal==32) //Caracteres validos: Mayusculas, minusculas, numeros y espacio
    {
if (ordinal==65 || ordinal==69 || ordinal==73 || ordinal==79 || ordinal==85 || ordinal==97 || ordinal==101 || ordinal==105 || ordinal==111 || ordinal==117); //Todas las vocales, mayusculas, minusculas
   {
     letras=letras+1;
     vocales=vocales+1;
    }
else
   {letras=letras+1;} //Resto de letras
    ordinal=getche();
   }
   else {puts("ERROR: El caracter introducido no es valido.");
         break;} //Error y salida while
  }
if(ordinal==32) {printf("Se han introducido %f letras, de las cuales %f eran vocales.", letras,vocales);}


getch();
}


Engel Lex: Los códigos deben ir en etiquetas GeSHi