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

#1
Hola a todos :), les queria dejar una pagina Web muy recomendada si buscas desafios de programacion, la pagina en cuestion es http://projecteuler.net y los problemas estan orientados a la area matematica. El tipo de ejercicios que salen planteados te obliga a investigar, pensar y repensar como resolver los ejercicios, a veces se te ocurre como solucionarlo pero te encuentras con que tienes que hacer un algoritmo más eficiente.

Bueno, los dejo entonces, si quieren responder los problemas tienen que registrarse, pueden ver las estadisticas para ver en que lugar estas de en tu pais, etc..., Saludos.

Pd: Les dejo esta pagina para ver la traduccion de algunos ejercicios: http://euleres.tk.
#2
Cita de: Luna71c0 en 13 Mayo 2013, 07:26 AM
Si piensa hacer una aplicación de consola porque no simplemente borras la pantalla ?

por cierto es "envio", no "enbio" :P

Bueno tambien esta esa opcion pero me gusta mas lo estandar xD, si lo quieres hacer con un limpiado de pantalla puedes hacer cout << "\E[H\E[2J"; en Linux (o sistemas Unix), o system("cls"); en Windows.

Pd: Creo que para system("cls"); es necesario la libreria ctdlib o stdlib.h, no estoy seguro.
#3
Si lo quieres hacer estandar, saca el '\n' al final de la cadena y pon un '\r' al principio, con eso deberia bastar.
#4
Programación C/C++ / Re: Problema C++
3 Mayo 2013, 03:13 AM
Depende, si el SO que ocupas es Linux esta la cabecera ncurses.h que te podria ayudar, si trabajas en Windows esta el conio.h, hay bastante info util rondando por la web.

Saludos.
#5
Cita de: amchacon en 21 Marzo 2013, 17:56 PM
Claro, si te fijas es lo mismo que has hecho antes pero al reves (y en vez de new poniendo delete claro).

La mejor forma de confirmarlo es intentar acceder a la posición (0,0), si la aplicación se cierra inesperadamente = Has tocado memoria que no deberías tocar = No tienes memoria reservada.

Gracias compadre, despues de publicar el mensaje lei bien y me di cuenta de que si estaba bien pero ya me habias respondido, gracias.

EDIT: No se me cerro, pero me dio que despues de liberar la memoria la posicion 0.0 era igual a 0, despues la posicion 1.0 era como 39232131, supongo que esta bien...
#6
Cita de: amchacon en 21 Marzo 2013, 16:27 PM
No solo es una buena práctica de programación, sino que debes hacerlo en programas más grandes cuando ya no necesites esa matriz (o malgastaras memoria).

Si para reservar la matriz tienes que hacer esto:

Código (cpp) [Seleccionar]
int** Matriz = new int*[n];

for (int i = 0; i < n;i++)
    Matriz[i] = new int[n];


Para borrarla tendrás que hacerlo al reves:

Código (cpp) [Seleccionar]
for (int i = 0; i < n;i++)
      delete[] Matriz[i];

delete[] Matriz;


¿Y eso me sirve aun que haya hecho aparte de lo anterior, esto:

Código (cpp) [Seleccionar]
for (i=0; i<n; i++)
matriz1[i] = new int[n];


Que no solo seria un vector dinamico, si no que una matriz dinamica?.
#7
Estaba investigando como hacer matrices dinamicas y en una parte lei que podia hacerlo con new, entonces yo lo implemente de esta forma.

Código (cpp) [Seleccionar]
   void crearMatriz(int **m) {
           for (i=0; i<n; i++)
           m[i] = new int[n];
    }
   
   int main() {
       int **matriz1;
     
       matriz1 = new int *[n];
   
           crearMatriz(matriz1);


Lo que al parecer me funciona correctamente, el problema es que no se como hacer el delete correspondiente (lei que era una buena practica de programacion hacer el delete aunque la mayoria de los S.O. actuales liberan la memoria al cerrar el programa), ¿alguien me ayuda?.
#8
Aun que hasta ahora solo he programado C y practicamente nada en C++ igual me tome el trabajo de limpiar un poco el codigo, espero haberlo hecho bien. Yo te digo que por lo que se, usar sintaxis de C y C++ no es buena practica de programacion, y ademas usas System("PAUSE"); y para linux creo que ni existe ni es bueno usarlo por varias razones. Bueno, lo otro, borre lo que creo era codigo para intentar tomar el tiempo, lo cual me generaba errores en la compilacion, y puse otra forma de tomarlo que por lo menos a mi me funciona en Windows, abajo de dejo el codigo.

Código (cpp) [Seleccionar]
#include <iostream>
#include <ctime>

int main() {
    int i;
    int x = 0, mayor = 0;
    clock_t j,t;
   
    std::cout << "Ingrese X: ";
    std::cin >> x;
   
    int dato[x];
   
    j = clock();
   
    for(i=0; i<x; i++) {
std::cout << "Ingrese dato "<< i + 1 << ": ";
std::cin >> dato[i];
}

j = clock() - j;
t = clock();

for(i=0; i<x; i++)
if (dato[i] > mayor)
mayor = dato[i];

t = clock() - t;

std::cout << "\nEl Mayor es: " << mayor << "\n\n";
std::cout << "Se demoro: " << ((float)j)/CLOCKS_PER_SEC << " Segundos en ingresar los datos...\n";
std::cout << "Algoritmo para encontrar al mayor dato se demoro: " << ((float)t)/CLOCKS_PER_SEC << " Segundos\n\n";

std::cin.get();
}


Cualquier cosa avisas.

Saludos.
#9
Yo con Geany he programado desde Pascal hasta C/C++, lo encuentro muy limpio y ordenado...
Ademas que lo puedo usar en Linux, Windows...
#10
Cita de: rir3760 en 12 Febrero 2013, 18:05 PM
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
   int opcion;
   int ok;
   int ch;
   
   while (1){
      printf("Indica la opcion: ");
      fflush(stdout);
      ok = scanf("%d", &opcion) == 1 && opcion > 0 && opcion < 6;
     
      while ((ch = getchar()) != EOF && ch != '\n')
         ;
     
      if (ok)
         break;
      else
         puts("Opcion no valida, intenta de nuevo...");
   }
   printf("La opcion es la %d\n", opcion);
   
   return EXIT_SUCCESS;
}


Me da lata extender mas el tema e irnos por las ramas, pero tengo una duda, ¿Siempre que quiera mostrar un printf sin que finalize con un '\n' seria conveniente usar un fflush(stdout)?

Y otra cosa que no entendi es el uso de while ((ch = getchar()) != EOF && ch != '\n')
         ;
en ese codigo, es decir, probe el codigo sin esa parte y como que el bucle hace un loop infinito y no me puedo ingresar la opcion con scanf("%d", &opcion) si ingreso una opcion invalida, pero no se por que pasa.

Saludos.