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

#511
Qt es un framework que ocupa varios megas. La forma normal de trabajar con este framework ( para no infringir licencias ) es usarlo como librería externa. Esta forma de usar la biblioteca implica que tienes que llevarte ciertas librerías junto con tu ejecutable para poder hacer correr la aplicación.

Desde QtCreator esto no pasa porque el IDE ya se encarga de cargar las librerías de forma automática. Si quieres arrancar tu el ejecutable directamente tienes que copiar una serie de librerías en el mismo sitio donde se encuentre el ejecutable.

Mi consejo mientras aprendes Qt es que vayas poco a poco... primero aprende a desarrollar aplicaciones y luego aprende a distribuirlas. El proceso es menos traumático así... te lo digo por experiencia.

Y por el tema de velocidad... en serio, no te preocupes por eso ahora. En este mundo hay que estar listos para no abrir demasiados frentes de golpe... pueden acabar con cualquiera. ( He visto más de un pequeño proyecto irse al garete porque la gente ha empezado a obsesionarse con el tema del rendimiento y ha dejado de lado cosas más importantes... el rendimiento es importante, pero no te sirve de nada si tu aplicación no funciona ).

Resumiendo: mientras coges soltura, usa QtCreator para probar tus aplicaciones. Cuando tengas algo de soltura con Qt me avisas y te explico los pasos a seguir para poder llevarte tus aplicaciones donde te de la gana.
#512
Cita de: leosansan en 28 Abril 2014, 18:49 PM
Lo que no tiene ningún sentido es pasarle a la función "i" ya que no aporta ninguna información a la misma. Bastaría declarar int i en la función menmay y dejarla así:

Eso también lo comenté en el primer mensaje :)
#513
Cita de: Blaster en 28 Abril 2014, 17:06 PM
Para evitar el problema de siempre imprimir los diez valores de cada vector podrias usar una bandera en cada situación, que te indique cuantos son menores o mayores al promedio, tal que quede asi

Código (cpp) [Seleccionar]
for (i = 0; i < 10; i++){
       if (vector[i] < promedio){
          menores[j] = vector[i];
          cant1++, j++;
        }
       else{
          mayores[k] = vector[i];
          cant2++, k++;
}
}
printf("Valores menores al promedio \n");
for (j = 0; j < cant1; j++)
   if (menores[j] != 0)
      printf("%d ", menores[j]);

free(menores);

printf("\nValores mayores al promedio \n");
for (k = 0; k < cant2; k++)
   printf("%d ", mayores[k]);

free(mayores);


Saludos..

Después del primer for, cant1==j y cant2==k... para qué repetir valores?


for (i = 0; i < 10; i++){
  if (vector[i] < promedio){
    menores[j] = vector[i];
    j++;
  }
  else{
    mayores[k] = vector[i];
    k++;
  }
}

printf("Valores menores al promedio \n");
for (i = 0; i < j; i++)
  if (menores[i] != 0)
    printf("%d ", menores[i]);

free(menores);

printf("\nValores mayores al promedio \n");
for (i = 0; i < k; i++)
  printf("%d ", mayores[i]);

free(mayores);


Aunque también te digo que hay que dejar pensar un poco al que tiene los errores... si se lo das todo mascado a la primera no le vas a dar alicientes para que aprenda.
#514
"suma" no está inicializado,

double suma, promedio=0;

luego el resultado al final del bucle es aleatorio:

 for (i=0; i<10; i++)
 {
   vector[i] = rand() % 100;
   printf("%3d", vector[i]);
   suma += vector[i];
 }


en consecuencia, la operación que usas para calcular el promedio te arroja un resultado incorrecto:

 promedio = suma/10;

solucionando esto el promedio te sale bien... pero aún verás valores extraños en la lista de resultados.

Esto es porque SIEMPRE imprimes los 10 valores de cada vector "menores y mayores"... y eso no es así. Si hay 3 números por debajo del promedio se deberían imprimir únicamente esos 3 valores.

Otra cosa... ¿por qué pasas 'i' como argumento de 'menmay'? No tiene ningún sentido y la función no necesita ese argumento para nada.

Y si te fijas en esta línea, verás algo raro:

  printf("\nValores mayores al promedio \n");
 for (k=0;k<10;k++); // <<<< EN ESTA
 printf("%3d",mayores[k]);


Si el bucle lo terminas con punto y coma... no hace nada.

Con los cambios propuestos al menos obtienes la lista de elementos... ahora tienes que evitar mostrar siempre 10 resultados para la lista de 'menores' y 'mayores':


60 68 25 17 96 99 67 26 48  5
Suma de los valores del vector: 511
Promedio de los valores del vector: 51
Valores menores al promedio
25  17  26  48   5 1027951689 1348221507 1919381362 1631874401 1090543988
Valores mayores al promedio
60  68  96  99  67 1867668577 1852403041 1329791079 1313819981 1196380752


nuevo: En la salida que te he puesto he separado los números por un espacio... te lo digo por si ves que tu salida no coincide con la mía (los números aleatorios no cuentan).
#515
Cita de: vangodp en 28 Abril 2014, 09:58 AM
Bueno de IDE hablaba jeje, sinto no poner el "edits"  :laugh:
La función que comentas es buena pero no se parece para nada a la de codeblocks
de echo parece mas a un reemplazar que otra cosa. En codeblocks puedo elegir varios puntos en que no coincidan el texto y editarlos. Los voy seleccionando con el ratón.

Son IDEs diferentes y, por ello, su funcionalidad también es diferente... la opción que te he comentado permite hacer reemplazos selectivos, ya que únicamente reemplaza la variable o método seleccionado, es decir, si tienes dos variables que se llaman igual en diferentes partes del código, únicamente vas a cambiar el nombre de una de ellas.

En cualquier caso, nada te impide compilar Qt bajo CodeBlocks, VisualStudio, o cualquier otro IDE... un IDE no deja de ser una fachada que facilita la tarea de programar.

Obviamente usar QtCreator tiene ciertas ventajas... sobretodo al trabajar con ventanas y con herencias de QObject... pero no es nada que no se pueda solucionar en otros entornos.

nuevo: De hecho, yo raramente compilo con QtCreator... suelo usar más VisualStudio. Para automatizar el proceso de compilación utilizo una adaptación de "ant" para generar correctamente los makefiles.
#516
Programación C/C++ / Re: Calculadora basica
28 Abril 2014, 09:28 AM
Código (csharp) [Seleccionar]
m1 = (Convert.ToSingle(Console.Read())) - 0x30;

por qué restas 0x30??? eso se hace si tienes un carácter que representa un número y quieres obtener el valor numérico correspondiente: '9' - 0x30 = 9.

Pero eso con números de varios dígitos no sirve, tendrías que aplicarlo dígito a dígito.

Además, para terminar, las funciones de Convert.ToAlgo ya están realizando la conversión de un string a un tipo numérico concreto... luego ese 0x30 carece aún más de sentido.

Y para terminar, como digo amchacon, este es un foro de C y C++... el de .Net es otro.

Un saludo.
#517
Cita de: vangodp en 28 Abril 2014, 07:32 AM
En QT no existe la opcion de codeblocks llamada allow multiple selection
Que permite editar varias posiciones, eso para mi es lo mejor que tiene codeblocks.
Pulsar varias partes del código ctrl+raton izquierdo y editarlas o alt+ ratón derecho para crear un cuadrado o editar varias lineas.

Eso no es Qt... estás hablando de IDEs.

Y sí, en QtCreator, sí que puedes hacer eso... La opción la encuentras en "Refactor -> Rename symbol under cursor" usando el menú contextual.

Cita de: makinavaja3500 en 28 Abril 2014, 07:40 AM
Gracias a todos por contestar.

Eferion, ¿tienes algún programa que puedas mostrar?. Algún ejemplo con código fuente y que esté compilado como ejemplo para verlo... Algo sencillo para poder verlo..

¿Puedes ser un poco más concreto? Si buscas un programa tipo "hola mundo", quedaría así:

Código (cpp) [Seleccionar]

#include <QApplication>
#include <QPushButton>

int main( int argc, char **argv )
{
    QApplication a( argc, argv );

    QPushButton boton( "Hello world!" );
    boton.resize( 100, 30 );

    a.setMainWidget( &hello );
    boton.show( );
    return a.exec( );
}


Si quieres algo más concreto coméntamelo.

Un saludo.
#518
Cita de: makinavaja3500 en 27 Abril 2014, 22:41 PM
QT lo he instalado y me parece lento y pesado pero a favor lo veo muy completo y la posibilidad de hacer programas mas bonitos esteticamente con QML.

QT lento?? Pesado vale por todas las cosas que tiene ( sus librerías ocupan un centenar de megas ), pero su rendimiento es bastante bueno. Si alguna ventana tarda en salir deberías revisar el código que tienes por detrás... de hecho, puedes cargar una tabla con varios miles de resultados en un suspiro... si lo haces bien, claro.

Cita de: makinavaja3500 en 27 Abril 2014, 22:41 PM
WxWidgets lo veo mas ligero y mas rápido pero con un futuro no tan continuado/actualizado y menos agradable esteticamente.

La mayor diferencia entre Qt y WxWidgets es que WxWidgets únicamente se centra en el apartado gráfico... pero no por eso ha de ser más rápida o lenta... ligera sí, arrastras muchas menos librerías.

Cita de: makinavaja3500 en 27 Abril 2014, 22:41 PM
¿Sabeis donde hay documentación es español de QT o WxWidgets? He buscado mucho en internet y no he logrado gran cosa.

El estigma de nuestro tiempo. Si quieres documentación buena y actualizada te toca pelearte con la lengua de Shakespeare. Para Qt tienes libros que tocan casi de todo... pero de momento sólo hay para la versión 4... la 5 es todo en inglés.
#519
Yo actualmente uso Qt... es lo que me da de comer.

vim y emacs.... eso son editores, no interfaces gráficas para aplicaciones :)
#520
Las 4 opciones que has puesto son multiplataforma, por lo que me ahorro comentar este detalle :)

* Qt: Es un framework completo. No se trata solo de una interfaz gráfica... tiene clases para trabajar sockets, ficheros, puertos IR, bluetooth, bases de datos, hilos, scripting, etc. Cada vez tiene más seguidores ( el último importante, la NASA ). A mi, personalmente, me gusta bastante.

* WxWidgets: se centra en el desarrollo de interfaces gráficas. Al no ser un framework es más sencillo explorar sus posibilidades. No he tenido opción a usarlo demasiado, por lo que no puedo aportar más información.

* GTK+: Evolución de GTK, es también otra librería centrada en el desarrollo de interfaces gráficas. Tiene a sus espaldas, gracias a GTK, un amplio recorrido. Personalmente creo que su uso está más extendido en Linux que en Windows.

* VC++ NET: El entorno .Net es un framework como Qt... bueno, realmente es más parecido a Java. Puestos a desarrollar .Net en C++ yo casi recomendaría usar VB o C#, ya que ambos son los lenguajes, digamos, nativos de esta plataforma. Una de las grandes desventajas de este sistema es que no puedes controlar la memoria, con lo que es bastante sencillo conseguir una aplicación con un bajo rendimiento si no se cuida un poco su arquitectura. La principal ventaja de .Net es que su curva de aprendizaje es bastante corta... el no tener que preocuparte de la memoria es también un punto a favor de cara a cierto tipo de aplicaciones no demasiado exigentes. Debido a que funciona bajo una máquina virtual, su rendimiento es, por norma general, más pobre que las aplicaciones realizadas en C++ nativo... aunque en muchas aplicaciones de escritorio ni se nota. En Linux se pueden ejecutar aplicaciones .Net instalando el framework MONO. Al igual que Qt, no se limita únicamente a la interfaz gráfica.