Ayuda en esta parte
debo hacer un programa en dev c++
que me cambie las letras de mayúsculas a minusculas
y que me cuente las palabras digitadas
ejemplo
No haBra NadA que Te puEda aSUStaR
deberia quedarme asi
no habra nada que te pueda asustar
contiene 7 palabras
ya tengo la primera parte de mayúscula a minúscula
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"
#include "iostream"
#include "time.h"
using namespace std;
void minusculas(char a[]);
int main (int argc, char** argv)
{
char p[50];
cout<<"escriba una cadena"<<endl;
gets(p);
minusculas(p);
puts(p);
return 0;
}
void minusculas(char a[])
{
int i=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]>='A'&&a[i]<='Z')
{
a[i]=a[i]+32;
}
}
}
pero no logro hacer el contador de palabras
tengo esto otro código pero me marca un error en los espacios
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "windows.h"
#include "iostream"
#include "time.h"
using namespace std;
int palabras(char a[]);
using namespace std;
void minusculas(char a[]);
int main (int argc, char** argv)
{
char p[50];
cout<<"escriba una cadena"<<endl;
gets(p);
minusculas(p);
puts(p);
return 0;
}
int palabras(char a[])
{
int i, cont=0;
bool pal=false;
for(i=0;a[i]!='\0';i++)
{
if ((pal==false&&(a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')))
{
cont ++;
pal=true;
}
else
{
if(a[i]==" ") // aqui el error
pal=true;
}
}
return(cont);
}
si alguien me explica como hacerlo le agredeceria
Cuando se trata de comparacion entre caracteres solo se ponen comillas simples
if(a[i]==' ') // aqui el error
pal=true;
gracias por la ayuda ya soluciones esa parte
pero al compilarlo no marca ningún error
pero me sale esto
L:\Estructura de datos\collect2.exe [Error] ld returned 1 exit status
Lo que necesitas es la función tolower. Mira, se puede hacer más sencillo así:
#include <iostream>
#include <string>
using namespace std;
// ------------------------------------------------------------------------
// Complejidad: O(N), donde N es el número de caracteres que tiene la frase
int main(){
string entrada, salida;
int contador = 0, indice = 0;
cout << "Introduce una frase: " << endl;
getline(cin, entrada); // Leemos la línea entera
entrada += " \n"; // Ponemos un salto de línea al final
while (entrada[indice] != '\n'){ // Mientras no lleguemos al final de línea...
if (entrada[indice] == ' ') // Si encontramos un espacio es que una palabra ha terminado
contador++; // Incrementamos el número de palabras
salida += tolower(entrada[indice]); // Pasamos (si hubiese) mayuscula a minuscula
indice++; // Y continuamos recorriendo la frase
}
cout << "Frase en minuscula: " << salida << endl;
cout << "Palabras totales: " << contador << endl;
system("PAUSE");
return 0;
}
La función tolower te convierte las mayúsculas a minúsculas directamente.