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

#691
Programación C/C++ / Re: [DUDA] Matrices
13 Marzo 2014, 11:27 AM
Usando tu primer planteamiento tienes el problema hecho:


char dias_semana[7][10] = {
"Lunes",
"Martes",
"Miercoles",
"Jueves",
"Viernes",
"Sabado",
"Domingo" };


Si tienes una matriz con los días de la semana... puedes usar el número pedido al usuario para acceder a la matriz y recuperar el nombre correspondiente:

printf( "%s\n", dias_semana[ dia ] );

Lo único que tienes que tener presente es que los índices de las matrices empiezan en 0.
#692
Cita de: yoel_alejandro en 13 Marzo 2014, 00:55 AM
Interfaz gráfica que difícilmente usaré, jajajaja, deben saber que soy un "talibán" de la consola, jeje

Pero bueno como he dicho antes, cada quién con su gusto, hay quiénes gustan de la GUI's y a quiénes gustan de la consola, saludos  :D

La consola es únicamente para crear el archivo de configuración... si lo tienes que hacer a pelo te deseo suerte y bastante tiempo libre para configurar algunos de estos programas XD
#693
Cita de: Stakewinner00 en 12 Marzo 2014, 17:09 PM
  char letra[5]; que valores tiene?

Tiene valores aleatorios... pero esas 5 posiciones están reservadas para la aplicación... otra cosa es que intentes acceder a letra[4561234]...

Sinceramente a mí me da la impresión que más que letra quería poner c.
#694
Código (cpp) [Seleccionar]
int main()
{
  int a;

  scanf("%i", &a);
 
  if (!(a = 1))
  {
  }

  if (a = 1)
  {
  }
}


Eso está mal se mire por donde se mire:

* !(a=1) es equivalente a !1... luego ese if NUNCA se ejecutará
* (a=1) es equivalente a 1... el segundo if se ejecutará SIEMPRE.

La forma correcta de ponerlo es usando los operadores de comparación:


  if ( a != 1 )
  {
  }

  if (a == 1)
  {
  }
}


o mejor aún:


  if ( a != 1 )
  {
  }
  else
  {
  }
}


Luego, quitando eso, creo que deberías fijarte en la variable "i"... que no se inicializa en la vida... al no inicializarse, en "letra" vas a acceder a una posición de memoria incorrecta y el programa acabará con un bonito pantallazo.
#695
Si en la generación del camino aseguras que los únicos desplazamientos posibles son en horizontal y en vertical ( nada de diagonales ) te aseguras que el camino sea, como mínimo, de una unidad.

Si realizas la equivalencia "una unidad = una casilla" entonces tienes el problema resuelto.
#696
Cita de: yoel_alejandro en 12 Marzo 2014, 00:35 AM
Este astyle es fantástico, en primer lugar es tipo command-line lo que imagino lo hace muy potente. Para imitar el comportamiento de mi programa tab, la orden correspondiente es:

astyle --indent=spaces=3 < source.c > out.txt

para sacar la salida en un txt, reemplazando los TAB por 3 espacios.

Uncrustify también funciona por línea de comandos... este modo de funcionamiento es casi un estándar para este tipo de programas.

Por eso se diseñó UniversalIndent... para dotar de interfaz gráfica a éste tipo de programas.
#697
No es necesario usar memoria dinámica... al menos no es necesario que tú te encargues de ello.

Sería más sencillo usando un vector:

Código (cpp) [Seleccionar]

int main(int argc, char *argv[])
{
 char Lectura[200], *PTok;
 vector< string > Palabras;
 int i=0, j=0, ContPal=1;

 cin.getline( Lectura, sizeof( Lectura ) );

 PTok = strtok(Lectura," " );

 while ( PTok != NULL )
 {
    Palabras.push_back( PTok );
    PTok = strtok( NULL, " " );  
 }

 for ( int i=0; i < Palabras.size( ); i++ )
   cout<<Palabras[ i ] << endl;

 system("PAUSE");
 return EXIT_SUCCESS;
}


Está muy bien que aprendas a usar memoria dinámica es un recurso muy potente... pero si la usas acuérdate de liberarla después.

Cita de: Omar_2013 en 11 Marzo 2014, 22:38 PM
Lo que queria hacer al igualar TemFilas[i]=Palabras[i]; era copiar el contenido ya que TemFilas[i] tiene un espacio de mas y esa es la que quiero usar[/size]

Si tu haces TemFilas = Palabras... teniendo en cuenta que ambas variables son punteros... estás haciendo que el puntero TemFilas apunte a Palabras, en otras palabras:

* situación inicial:
   TemFilas = 0xF093 <-- Basura
   Palabras = 0x1234 <-- Dirección apuntada por el puntero
* Con TemFilas = new char[200]; tenemos
   TemFilas = 0x8000 <-- Posición de inicio del array recién reservado
   Palabras = 0x1234 <-- Dirección apuntada por el puntero
* Con TemFilas=Palabras
   TemFilas = 0x1234 <-- Perdiste toda referencia a la posicion 8000 que es donde está el array recién creado
   Palabras = 0x1234 <-- Dirección apuntada por el puntero

¿Qué quiere decir esto? Lo siguiente. Una vez haces TemFilas = Palabras sucede lo siguiente:


strcpy( Palabras[i], "prueba" );
cout << Palabras[i] << "-" << TemFilas[i] << endl; // Imprime: prueba-prueba
TemFilas[i][2] = '#';
cout << Palabras[i] << "-" << TemFilas[i] << endl; // Imprime: pr#eba-pr#eba


Esto es así porque los dos punteros apuntan a la misma cadena y cualquier cambio en la cadena se ve reflejado en los dos punteros.

#698
Básicamente permiten presentar el código con un estilo uniforme ( no renombran métodos ni variables, pero son capaces de formatear todo el código ).

Por poner algunas cosas:

* Limitar la longitud máxima de cada línea.
* Permite convertir tabs a espacios y viceversa.
* Indica si se añaden o no espacios dentro de paréntesis, llaves, etc.
* Indica cómo se deben tabular las indentaciones ( bucles, switch, if, etc )
* Permite que todos los archivos de un proyecto tengan el mismo formato ( UTF-8, ASCII, etc. )
* Establece un formato común para los saltos de línea ( Windows, Linux, Mac )
* Elegir si antes y/o después de separadores ( comas, puntos, paréntesis, operadores ) se añaden o se eliminan los espacios.
* Permite unir / separar líneas bajo ciertas condiciones ( bucles, condicionales, ... )
* Permite alinear código.


Sus configuraciones son de lo más variopintas y, dedicando tiempo a la configuración se puede conseguir el formato de código deseado cuidando hasta el más pequeño detalle.

Eso sí, para configurar un beautifier completo de forma seria hay que tener al menos dos virtudes:

* Saber inglés
* Tener paciencia.

Aún así hay opciones que, a primera vista, no queda muy claro qué hacen, pero bueno, todo es cuestión de copiar en el GUI un archivo de código y aplicarle el formato para ver qué sucede al cambiar determinadas configuraciones.

Aunque bueno, el GUI permite guardar la configuración en un archivo de texto, por lo que la configuración solo tenemos que prepararla una vez :)
#699
Cita de: amchacon en 11 Marzo 2014, 11:44 AM
Interesante, es muy util para python sobre todo (anda que no dan errores las tabulaciones ni nada).

PD: Un programa que te identase el código sería gracioso ;D

Ya existen ese tipo de programas... se denominan "beautifier" y hacen bastantes más cosas aparte de indentar el código.

A título personal, para C / C++ me gusta mucho Uncrustify. Tiene muchísimas opciones de configuración.

Precisamente debido a su libertad en cuanto a configuraciones es recomendable descargarse UniversalIndent. Es un GUI Genérico que permite configurar de forma bastante amigable un buen número de indentadores.
#700
Jejejeje.

A mí es que me da muchísima pereza ponerme a escribir código cuando veo que el que pregunta no ha puesto ni un mísero main :).

Cuando veo que el autor del hilo se lo ha currado un mínimo y no ha puesto código copiado ( a veces canta mucho ), la cosa cambia y me vuelco más.

Eso sí, hay veces que me levanto con mejor humor y no tengo problemas en escribir el quijote si hace falta. Pero por norma general...