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 - amchacon

#251
Programación C/C++ / Re: Problema extraño
13 Marzo 2014, 22:12 PM
Cita de: yoel_alejandro en 13 Marzo 2014, 19:19 PM
Sólo digo que me parece bien raro ese lenguaje. ¿Quién lo usa? ¿Es algo parecido a los sms?
En España lo usan gente de cultura muyyy baja... Nosotros les llamamos "Canis"
http://www.frikipedia.es/friki/Cani

Imaginate a esos especimenes escribiendo en el facebook. Su escritura no es muy diferente de lo que sale en el ejemplo xD.

Cuando suben una foto suelen poner títulos así:
Citardulse i cavron este ninioh vasilon
Esta nenah ..... parteh la panah con estiloh dorchin gabanah
Flamenkah con arteh ....... dispuestah a camelarteh
niniah, recojeh esas babas, que este morenoh se resbalah
Si eR RixaRd Te VasIlah Tu Te Callah y lo asimilahhh
er pedoh esh un aireh oshkuro que saleh por tuh culohh
TehH SusHh VoiHhH a EsTaYaRhHhH
#252
Cambia la condición del bucle por la del if:

Código (cpp) [Seleccionar]
while(!key[KEY_P]);
#253
Programación C/C++ / Re: Problema extraño
13 Marzo 2014, 13:32 PM
Hize una pregunta y resulta que habían puesto el ejemplo mal:
CitarSin Ser XuLaA NiI BaziLonaA Soy TuU eNbiDiAa KamPeOnaA

No es XuLaa sino XulaA, esa mayuscula estaba mal.

Madre mía, retoqué un poco las ch y lo del salto de linea. Ahora ya me va...
#254
Programación C/C++ / Re: Problema extraño
13 Marzo 2014, 12:45 PM
Cita de: eferion en 13 Marzo 2014, 12:42 PM
Por cierto... si pruebo el código que has puesto... se come la última línea...
¿Lo has cogido de los archivos o del foro?

Lo digo porque el foro se salta el último salto de línea *_*
#255
Programación C/C++ / Re: Problema extraño
13 Marzo 2014, 12:34 PM
No he sido yo. Esque el foro me cambia la palabra, lo he editado ya 3 veces Oo

Pongo los archivos en descarga mejor:
https://dl.dropboxusercontent.com/u/69551225/Cani%20Lenguaje.zip
#256
Programación C/C++ / Re: [DUDA] Matrices
13 Marzo 2014, 12:19 PM
Cita de: kayron8 en 13 Marzo 2014, 12:14 PMUna ultima cosilla, para que quede "mas lógico/normal", ¿no hay alguna forma que el 1 corresponda al lunes y no al 0 y así sucesivamente?
Al número que te de el usuario, restale 1 ;)
#257
Programación C/C++ / Problema extraño
13 Marzo 2014, 12:00 PM
Buenas.

Voy a a hacer un post un poco largo, de modo que los vagos deberían dejar de leer ^^

Estoy haciendo problemas de estos con juez automatico, el problema en el que estoy es el siguiente:

CitarE. KaniI LanGuAgeE

Por razones que no vienen al caso, se quiere convertir grandes clásicos de la literatura española (El Quijote,Don Juan Tenorio, Teo va al parque, etc. . . ) a un lenguaje más cercano a la juventud de hoy en día.

Así pues, se está pensando en realizar un programa que utilice una serie de reglas de conversión al lenguaje conocido como kaNiI LanGuAgeE.

A continuación explicamos dichas reglas:

1. Se eliminan las haches (excepto ch que se transformará en x).
2. Cuando existan una o más vocales juntas, se convierten en mayúscula las de las posiciones pares, contando
la primera vocal como posición 1.
3. Las consonantes siguen una regla similar, pero no tienen que ser consecutivas para pasarlas a mayúsculas. En
este caso, las consonantes se alternan entre mayúsculas y minúsculas dentro de una misma palabra, empezando por mayúscula. (hola caracola!oLaA KaraKolaA) Por simplicidad se puede considerar consonante todo aquello que no es vocal.
4. Si la palabra acaba en vocal se añade la misma vocal (se sigue aplicando la regla de las mayúsculas (regla 2)) (Primo!PriMoO, vivia !BibiAa).
5. Las c con sonido z (ce, ci) se cambian por z, mientras que el resto se cambian por k.
6. Las b cambian por v y las v por b.
7. Las letras ch cambian por x.
8. Las letras que ya están en mayúscula se mantienen: (HOLA CARACOLA!OLAA KARAKOLAA).
9. Una consonante estará en mayúscula si cumple la regla 3 o si la letra original está en mayúscula. Para el
caso especial de la ch (al sustituirse por x), seguirá la regla tomando en cuenta si la c de la ch original es
mayúscula o no. (revancha!RebaNxaA, rebanCHa!RevaNXaA, reVancHa !ReBaNxaA)
10. Una vocal estará en mayúscula si cumple la regla 2 o si la letra original está en mayúscula. (que ! QuEe, quE!QuEE)

Se recomienda revisar los ejemplos detenidamente para ver como se aplican estas reglas. Y utilizar herramientas como diff para ver con más detalle en qué partes está fallando el programa.

Por simplicidad las frases solo contendrán carácteres de a-z y A-Z y espacios como delimitadores. También, debido al caso especial de la eliminación de la h, no existe ninguna palabra que acabe por h.

Y te dan ejemplo la entrada:
CitarNo es verdad angel de amor que en esta apartada orilla mas pura la
luna brilla y acaso se respira mejor
En un lugar de la mancha de cuyo nombre no quiero acordarme vivia
Con diez canyones por banda viento en popa a toda vela no corta el
mar sino vuela un velero bergantil aquel pirata el temido
Este es
un ejemplo
mas corto
Para que
podais gastar la
herramienta diff
y os salgan bien
las cosas
ahi es nada
y ahora
unas frases tipicas
si apruebo todas mi madre me
compra la moto
sin ser chula ni vacilona soy tu envidia campeona

Y la salida:

CitarNoO eS verdad aNgeL DeE aMor QuEe eN eStaA aParTadaA oRilLaA Mas PuraA LaA
LunaA VriLlaA Y aKasoO SeE ResPiraA MejoR
EN uN LugaR DeE LaA ManXaA DeE KuyoO NomVreE NoO QuIeroO aKorDarMeE BibiAa
Kon DiEz KanYoneS Por VanDaA BiEnToO eN PopaA aA TodaA BelaA NoO KorTaA eL
Mar SinoO BuElaA uN BeleRoO VerGanTil aQuEl PiraTaA eL TemiDoO
ESteE eS
uN eJemPloO
Mas KorToO
ParaA QuEe
PodaIS GasTar LaA
eRraMiEnTaA DifF
Y oS SalGan ViEn
Las KosaS
aIi eS NadaA
Y aORaA
uNas FraSes TipiKas
SiI aPruEVoO TodaS MiI MadReE MeE
KomPraA LaA MotoO
Sin Ser XuLaA NiI BaziLonaA Soy TuU eNbiDiAa KamPeOnaA

Total que me pongo a ello y saco este código:
Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;

string Traducir(string &e);

int main()
{
   ifstream fin("Ekani1.in");
   ofstream fout("salida.txt");
   string palabra,linea;
   getline(fin,linea);
   
   while (fin.good())
   {

       {
           stringstream Buffer(linea);
           unsigned int i = 0;
           while (Buffer.good())
           {
               while (i < linea.size() && linea[i] == ' ')
               {
                   fout<<' ';
                   i++;
               }

               Buffer>>palabra;

               i += palabra.size();
               fout<<Traducir(palabra);
               palabra.clear();
           }
           fout<<endl;

       }
       getline(fin,linea);
   }

   return 0;
}

inline bool esVocal(char a)
{
   return a == 'a' || a == 'e' || a == 'i' || a == 'o' || a== 'u' || a == 'A' || a == 'E' || a == 'I' ||a == 'O' ||a=='U';
}

string Traducir(string &e)
{
   string buffer;
   int consonante = 1;
   char letra;

   if (esVocal(e[e.size()-1])) // Si la ultima es vocal, añadimos una vocal al final
       e += e[e.size()-1];

   for (unsigned int i = 0; i < e.size(); i++)
   {
       if (esVocal(e[i])) // es vocal?
       {
           buffer += e[i]; // la anyadimos
           bool mayus = 1;
           i++;

           // listamos todas las vocales adyacentes (y las h, ya que son "mudas")

           while (i < e.size() && (esVocal(e[i]) || e[i] == 'h' || e[i] == 'H'))
           {
               if (e[i] == 'h' || e[i] == 'H'){i++; continue;} // las haches se descartan

               if (mayus == 1) buffer += toupper(e[i]); // si toca mayuscula, anyadimos una mayuscula
               else buffer += e[i]; // sino, la anyadimos tal cual

               mayus = !mayus;
               i++;
           }
           i--;
           continue;
       }

       // no es vocal

       if (e[i] == 'h' || e[i] == 'H') // si es h, se ignora
       {
           if (i != 0 && (e[i-1] == 'c' || e[i-1] == 'C')) // si la anterior era una c
           {
               if (e[i-1] == 'C') letra = 'X'; // la sustituimos por una X
               else letra = 'x'; // o x minuscula

               if (consonante % 2 == 0) // si es una posicion par, toca mayuscula
               {
                   buffer[buffer.size()-1] = toupper(letra); // cambiamos la ultima posicion
                   consonante = 1;
               }
               else buffer[buffer.size()-1] = letra;

           }
           continue;
       }

       letra = e[i]; // la letra se anyade al final, segun resulte ser mayuscula o minuscula
       consonante++;
       //  else buffer += e[i];
//
       if (e[i] == 'b') // sustituir b por v
       {
           letra = 'v';
       }
       else if (e[i] == 'B') // sustituir B por V
       {
           letra = 'V';
       }
       else if (e[i] == 'v')
       {
           letra = 'b';
       }
       else if (e[i] == 'V')
       {
           letra = 'B';
       }

       else if (e[i] == 'c' || e[i] == 'C') // las c, por z o por k
       {
           if (i+1 < e.size() && (e[i+1] =='e' || e[i+1] == 'E' ||e[i+1] == 'i' || e[i+1] == 'I'))
           {
               if (e[i] == 'c') letra = 'z';
               else letra = 'Z';
              // i++;
           }
           else
           {
               if (e[i] == 'c') letra = 'k';
               else letra = 'K';
           }
       }

       if (consonante % 2 == 0) // si es una consonante en posicion par
       {
           buffer += toupper(letra); // se anyade mayuscula
           consonante = 0;
       }
       else buffer += letra; // se anyade tal cual
   }

   return buffer;
}


Que me genera una salida identica a la anterior.

Total que lo subo al juez y me marca WRONG ANSWER. Lo he revisado varias veces pero no entiendo que puede fallar :(

#258
Programación C/C++ / Re: [DUDA] Matrices
13 Marzo 2014, 11:26 AM
Código (cpp) [Seleccionar]
char frases[4][15] = {
"Primera frase",
"Segunda frase",
"Hola mundo",
"Y para acabar"
};


Ibas bien, crea una matriz con todos los días de la semana.

Después le pides el número y muestras el contenido de esa posición:

Código (cpp) [Seleccionar]
scanf("%d",&dia);
printf(frase[dia]);


O si te resulta más intuitivo:
Código (cpp) [Seleccionar]
scanf("%d",&dia);
printf("%s",frase[dia]);
#259
La condición del for es erronea.

¿Porque usas letra? Usa letra[j].
#260
No entiendo tu pregunta.

Si hay un camino, se supone que es del ancho suficiente no?