Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: EdgarKrieger en 17 Diciembre 2013, 19:43 pm



Título: Ayuda con programa con mayuscualas (cadena)
Publicado por: EdgarKrieger en 17 Diciembre 2013, 19:43 pm
Hola a todos soy yo de nuevo jejejeje, bueno tengo una pregunta tengo que hacer un programa que me pida que introduzca una frase con mayúsculas y minúsculas,y me diga cuantas mayúsculas tiene, me dijeron que lo tengo que hacer con la función toupper pero realmente no tengo la mas mínima idea por favor si alguien me puede ayudar muchas gracias.


Título: Re: Ayuda con programa con mayuscualas (cadena)
Publicado por: ivancea96 en 17 Diciembre 2013, 20:37 pm
Sinó, puedes mirar letra a letra si su númeroi en ascii corresponde a una mayúscula (65-90)


Título: Re: Ayuda con programa con mayuscualas (cadena)
Publicado por: leosansan en 17 Diciembre 2013, 20:46 pm
toupper y tolower son para transformar a mayúscula y minúscula respectivamente. En cambio isupper e islower son para comprobar si la letra es mayúscula o minúsucula, por lo que serán estas últimas las funciones a utilizar.

Fíjate que el espacio en blanco se cuenta como minúscula, por lo que si sólo quieres contar las letras habrá que desecharlos.

Y como muestra una salida:


Citar
La letra L es mayuscula.
La letra e  minuscula.
La letra o  minuscula.
La letra S es mayuscula.
La letra a  minuscula.
La letra n  minuscula.
La letra S es mayuscula.
La letra a  minuscula.
La letra n  minuscula.
La letra R es mayuscula.
La letra i  minuscula.
La letra R es mayuscula.
Y las letras en minuscula son 7.
Y las letras en mayusculas son 5.

En principio no suelo poner código a menos que el autor del tema lo haga y en realidad pregunte dudas o problemas del mismo.  Pero me has pillado sensible ya que a un tema anterior que te respondí tuviste la gentileza, que creo es lo normal, de dar las gracias. Y ese gesto te honra, así que ahí va mi propuesta, mejorable seguramente:

Código
  1. #include <stdio.h>
  2. #include <ctype.h> // para isupper
  3.  
  4. int main()
  5. {
  6.    int cont_min=0,cont_may=0,i;
  7.    char frase []="LeoSanSan RiR";//Desactiva esto y activa los de abajo
  8.    //char frase [300];
  9.   // printf("Ingrese un frase:\n");
  10.    //scanf("%300[^\n]", frase);
  11.    for (i=0;frase[i];i++){
  12.        if ( frase[i]!=' '){
  13.            if ((isupper(frase[i]))==0 ){
  14.                printf("\nLa letra %c  minuscula.", frase[i]);//SOBRA
  15.                cont_min++;
  16.            }
  17.            else {
  18.                printf("\nLa letra %c es mayuscula.", frase[i]);//SOBRA
  19.                cont_may++;
  20.            }
  21.        }
  22.    }
  23.    printf("\nLas letras en minuscula son %d.", cont_min);
  24.    printf("\nY las letras en mayusculas son %d.", cont_may);
  25.    return 0;
  26. }
  27.  

Otra forma es la que te indica ivancea96,más efectivo ya que el mío cuenta los signos y números como minúsculas. Pero como en el enunciado dices de hacer uso de funciones es por lo que te propongo el código anterior.

Saluditos! ..... !!!!        (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Ayuda con programa con mayuscualas (cadena)
Publicado por: EdgarKrieger en 17 Diciembre 2013, 21:53 pm
Muchas gracias a los dos, como dices leosansan el programa me lo piden con una función pero también no estaría mal hacerlo como dice ivancea96 jejejeje de nuevo gracias. ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)


Título: Re: Ayuda con programa con mayuscualas (cadena)
Publicado por: leosansan en 18 Diciembre 2013, 06:53 am
Perdón, se me había olvidado la función isalpha para tener en cuenta sólo los caracteres alfabéticos. Ahora ya no cuenta los espacio, números, caracteres ....:


Código
  1. #include <stdio.h>
  2. #include <ctype.h> // para isupper,isalpha
  3.  
  4. int main()
  5. {
  6.    int cont_min=0,cont_may=0,i;
  7.    char frase []="LeoSanSan RiR";//Desactiva esto y activa los de abajo
  8.    //char frase [300];
  9.    //printf("Ingrese un frase:\n");
  10.    //scanf("%300[^\n]", frase);
  11.    for (i=0;frase[i];i++){
  12.        if ( isalpha(frase[i])!=0){
  13.            if ((isupper(frase[i]))==0 ){
  14.                printf("\nLa letra %c  minuscula.", frase[i]);//SOBRA
  15.                cont_min++;
  16.            }
  17.            else {
  18.                printf("\nLa letra %c es mayuscula.", frase[i]);//SOBRA
  19.                cont_may++;
  20.            }
  21.        }
  22.    }
  23.    printf("\nLas letras en minuscula son %d.", cont_min);
  24.    printf("\nY las letras en mayusculas son %d.", cont_may);
  25.    return 0;
  26. }
  27.  

Saluditos! ..... !!!!        (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)