elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa capitalizador
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Programa capitalizador  (Leído 4,721 veces)
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Programa capitalizador
« Respuesta #10 en: 21 Abril 2014, 21:57 pm »

A ver si me logro explicar, ya que ni las imágenes parecen creibles.

Código
  1. if (frase[i]==' ')

es decir en la posición "i" hay un espacio. ¿Qué hago?.

Código
  1. frase[(i++) +1]=

cojo la posición "(i++)+1", es decir la posición "i+1" y "a continuación" (==> lo cual implica incremento de la "i)" hago:

Código
  1. =tolower(frase[i]);

donde la "i" que aparece debe haberse incrementado por el post-incremento previo y es ya la posición implícita "i+1".

Espero que haya quedado meridianamenteclara mi explicación.

Y para más claridad las imágenes que colgué en el mensaje anterior.

Y sí, las saqué del Code::Blocks 13.12 y ya me parecía excesivo colgar más.

Conclusión, a mi si me funciona así y a ti te funciona de la otra manera. :silbar:

Tampoco quiero hacer de este tema una controversia  sobre compiladores y demás. Sólo puse las imágenes para que quedará constancia que a mi si me funcionaba.






« Última modificación: 21 Abril 2014, 22:01 pm por leosansan » En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Programa capitalizador
« Respuesta #11 en: 21 Abril 2014, 22:19 pm »

La verdad que es muy raro ahora que lo he analizado a fondo lo probe de esta manera
Código
  1. frase[++i] = toupper(frase[i]);
Que es conceptualmente igual a esto frase[(i++)+1] pero con la diferencia de que asi me da la salida correcta con el Code::Blosks

Saludos..


« Última modificación: 21 Abril 2014, 22:21 pm por Blaster » En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Programa capitalizador
« Respuesta #12 en: 21 Abril 2014, 22:20 pm »

¡Buenas!

Ya que te han dado soluciones, te dejo aquí otra. Simplemente para que veas que si lo único que tiene que hacer el programa es poner en mayúsculas la primera letra de cada palabra y el resto en minúsculas, no te hace falta ninguna cadena (otra cosa sería si tuvieses que utilizar una función...):
Código
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.    int c,primera = 1;
  7.  
  8.    while((c = getchar()) != '\n')
  9.    {
  10.        if(isspace(c))
  11.        {
  12.            if(!primera)
  13.                primera = 1;
  14.  
  15.            putchar(c);
  16.        }
  17.        else if(primera)
  18.        {
  19.            putchar(toupper(c));
  20.            primera = 0;
  21.        }
  22.        else
  23.            putchar(tolower(c));
  24.  
  25.    }
  26.  
  27.    return 0;
  28. }
  29.  

¡Saludos!

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

Wop, todo eso suena a problemas en el orden de evaluación de los distintos compiladores (o igual incluso entre dos versiones distintas de un mismo compilador...). No se si el lenguaje define el orden de evaluación en estos casos o si depende del capricho del (de los) programador(es) del compilador...
« Última modificación: 21 Abril 2014, 22:34 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Programa capitalizador
« Respuesta #13 en: 22 Abril 2014, 00:29 am »

Si se deja más de un espacio los programas las soluciones de leosansan y Blaster el programa falla.

En cambio el programa de do-while tiene en consideración ese detalle.

Aquí otra forma (incluyendo si se dejan varios espacios en blanco)
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.  
  7.    string text = "i love this game ok?";
  8.    int length = text.length();
  9.    text[0] = toupper(text[0]);
  10.  
  11.    for(int index=1;index<length;index++) {
  12.        if(text[index]!=' ') {
  13.            continue;
  14.        }
  15.  
  16.        if(text[index]=' ') {
  17.            cout<<' ';
  18.            index++;
  19.            text[index]=toupper(text[index]);
  20.        }
  21.    }
  22.  
  23.    cout << "La frase capitalizada es: " << text << endl;
  24.  
  25.    return 0;
  26. }
  27.  
« Última modificación: 22 Abril 2014, 00:31 am por Darhius » En línea

abc
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa que hace click en un lugar fuera del programa [c#]
.NET (C#, VB.NET, ASP)
Un usuario 1 2,931 Último mensaje 24 Octubre 2006, 22:58 pm
por SeniorX
programa de matriz aver si el programa q estoy haciendo esta bien « 1 2 »
Programación C/C++
eduardo17445 10 7,399 Último mensaje 23 Octubre 2012, 00:11 am
por flony
[Ayuda] ¿Cómo ejecutar otro programa desde mi programa de C#?
.NET (C#, VB.NET, ASP)
Zodiak98 1 7,212 Último mensaje 8 Diciembre 2013, 01:51 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines