Ayuda con programa con mayuscualas (cadena)

Iniciado por EdgarKrieger, 17 Diciembre 2013, 19:43 PM

0 Miembros y 1 Visitante están viendo este tema.

EdgarKrieger

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.
"Las matemáticas son el lenguaje, el idioma que utilizo Dios para escribir el mundo"
Galileo Galilei

ivancea96

Sinó, puedes mirar letra a letra si su númeroi en ascii corresponde a una mayúscula (65-90)

leosansan

#2
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 (cpp) [Seleccionar]

#include <stdio.h>
#include <ctype.h> // para isupper

int main()
{
   int cont_min=0,cont_may=0,i;
   char frase []="LeoSanSan RiR";//Desactiva esto y activa los de abajo
   //char frase [300];
  // printf("Ingrese un frase:\n");
   //scanf("%300[^\n]", frase);
   for (i=0;frase[i];i++){
       if ( frase[i]!=' '){
           if ((isupper(frase[i]))==0 ){
               printf("\nLa letra %c  minuscula.", frase[i]);//SOBRA
               cont_min++;
           }
           else {
               printf("\nLa letra %c es mayuscula.", frase[i]);//SOBRA
               cont_may++;
           }
       }
   }
   printf("\nLas letras en minuscula son %d.", cont_min);
   printf("\nY las letras en mayusculas son %d.", cont_may);
   return 0;
}


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! ..... !!!!        

EdgarKrieger

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. ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
"Las matemáticas son el lenguaje, el idioma que utilizo Dios para escribir el mundo"
Galileo Galilei

leosansan

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 (cpp) [Seleccionar]

#include <stdio.h>
#include <ctype.h> // para isupper,isalpha

int main()
{
   int cont_min=0,cont_may=0,i;
   char frase []="LeoSanSan RiR";//Desactiva esto y activa los de abajo
   //char frase [300];
   //printf("Ingrese un frase:\n");
   //scanf("%300[^\n]", frase);
   for (i=0;frase[i];i++){
       if ( isalpha(frase[i])!=0){
           if ((isupper(frase[i]))==0 ){
               printf("\nLa letra %c  minuscula.", frase[i]);//SOBRA
               cont_min++;
           }
           else {
               printf("\nLa letra %c es mayuscula.", frase[i]);//SOBRA
               cont_may++;
           }
       }
   }
   printf("\nLas letras en minuscula son %d.", cont_min);
   printf("\nY las letras en mayusculas son %d.", cont_may);
   return 0;
}


Saluditos! ..... !!!!