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

#1
Muchas gracias por responder, he estado jugando con algunos consejos y la verdad que ha merojado :).

Y yo que pensaba que mi codigo era aceptable, pero vamos aun me queda mucho por aprender :)
#2
Hola, he hecho un reto de la página acepta el reto, exactamente este: https://www.aceptaelreto.com/problem/statement.php?id=364

Y entrego mi programa pero la duda a es a nivel de optimización, a mi me sale entorno a 0.3 segundos, y si miro las estadísticas de otras personas ves tiempos de 0.012s, 0.016s.... en torno a 25 veces más rápido, y yo por mucho que mire mi código no veo dónde se podría optimizar para acercarme algo a sus resultados.

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        String texto;
       
       
       
        do {

            texto = sc.nextLine();

            if (!texto.equals("FIN")) {
               
                int tamanio = texto.length();
                String cadenaSalida = "";
               
                for(int i = 0; i < tamanio; ++i)
                    cadenaSalida += cifrar(texto.charAt(i));
               
                System.out.println(cadenaSalida);
            }

        } while (!texto.equals("FIN"));

    }
   
    private static String cifrar(char letra){
       
        switch (letra) {
            case 'A':
                return "B";
            case 'B':
                return "C";
            case 'C':
                return "D";
            case 'D':
                return "E";
            case 'E':
                return "F";
            case 'F':
                return "G";
            case 'G':
                return "H";
            case 'H':
                return "I";
            case 'I':
                return "J";
            case 'J':
                return "K";
            case 'K':
                return "L";
            case 'L':
                return "M";
            case 'M':
                return "N";
            case 'N':
                return "O";
            case 'O':
                return "P";
            case 'P':
                return "Q";
            case 'Q':
                return "R";
            case 'R':
                return "S";
            case 'S':
                return "T";
            case 'T':
                return "U";
            case 'U':
                return "V";
            case 'V':
                return "W";
            case 'W':
                return "X";
            case 'X':
                return "Y";               
            case 'Y':
                return "Z";   
            case 'Z':
                return "A";
            default:
                return " ";

        }

    }


Entonces por eso os consultaba, ya que no se donde puede estar el punto para que haya tanta diferencia.

Un saludo
#3
Acabo de probar tú programa y funciona correctamente el caso que indicas que falla;

Introduzco días trabajados como 6, elijo la opción R, y el resultado es 3375.

No se, no vi nada extraño en tú código, simplemente lo que mencionaba engel lex.

Edit Bueno, para ejecutarlo tuve que modificar algunas cosas, que el compilador de g++ no me los pasaba. Pero vamos, que cambie lo que dijo engel lex.
#4
Yo lo hago así



#include <stdio.h>
#include <time.h>

int main(){

clcok_t tiempo_inicio, tiempo_final;
double segundos;

tiempo_inicio = clock();

/*operación a medir tiempos, operación básica del código, normalmente bucles*/

tiempo_final = clock();

segundos = (double)(tiempo_inicio - timpo_final) / CLOCKS_PER_SEC; /*según que estes midiendo el tiempo en segundos es demasiado grande*/

printf("%f",segundos);


return 0;
}



Así lo hago yo en c, en c++ nunca lo he usado, más que nada porque todavía no he empezado a aprender c++.
#5
vale, acabo de encontrar el error, es una chorrada. Faltaba añadir un -c en el makefile

"main_juego.o: main_juego.cpp
   $(CXX) $(INCLUDE) $(LDFLAGS) $(CFLAGS) -c main_juego.cpp"

el "-c" es lo que me faltaba. Vaya chorrada. Muchas gracias por tus respuestas Alberto :) Un saludo
#6
El problema no está en que salgan warnings el problema esta en que no reconoce las funciones de Allegro5. ya que al compilar con el makefile sale esto:


/tmp/ccuudCEQ.o: En la función `main':
main_juego.cpp:(.text+0x23): referencia a `al_install_system' sin definir
main_juego.cpp:(.text+0x61): referencia a `al_create_display' sin definir
main_juego.cpp:(.text+0xa5): referencia a `al_map_rgb' sin definir
main_juego.cpp:(.text+0xda): referencia a `al_clear_to_color' sin definir
main_juego.cpp:(.text+0xdf): referencia a `al_flip_display' sin definir
main_juego.cpp:(.text+0xf7): referencia a `al_rest' sin definir
main_juego.cpp:(.text+0x103): referencia a `al_destroy_display' sin definir
collect2: error: ld returned 1 exit status


Lo que me da que pensar que no enlaza bien. Y más sabiendo que si compilo de forma manual desde la terminal si funciona
#7
Saludos, gracias por responder. respecto a lo de empezar, bueno, se mas o menos c, que es lo que di 1º ing informatica. A lo mejor es un poco complicado empezar con allegro5 pero como tengo el verano por delante tengo tiempo de aprender c++ más allegro :)

Respecto a los directorios si que existen. Es más si compilo desde la terminal con este comando:

"****@****-desktop:~/Escritorio/comecocos_cpp$ g++ main_juego.cpp -o a.out -I/usr/include/allegro5 -L/usr/lib -lallegro"

SI que reconoce los archivos,compila perfectamente,  no genera ningún error.  y genera una salida, la cual puedo ejecutar y genera una pantalla, que es el objetivo de mi código.

Asi que supongo que el error estará en el makefile.

Muchas gracias por su tiempo y responderme :)
#8
Hola, acabo de empezar a programar en c++. La cosa es que me he bajado las bibliotecas de Allegro5 y cuando realizo este programa para iniciar una ventana: #include <iostream>
#include <stdlib.h>
#include "stdio.h"
#include <allegro5/allegro.h>

using namespace std;

int main(int argc, char **argv){

   ALLEGRO_DISPLAY *display = NULL;

   if(!al_init()) {
      fprintf(stderr, "failed to initialize allegro!\n");
      return -1;
   }

   display = al_create_display(640, 480);

   if(!display) {
      fprintf(stderr, "failed to create display!\n");
      return -1;
   }

   al_clear_to_color(al_map_rgb(0,0,0));

   al_flip_display();

   al_rest(10.0);

   al_destroy_display(display);

   return 0;
}


y compilo con un makefile hecho por mi me sale que no reconoce las funciones de Allegro5. exactamente pone esto: "/home/****/Escritorio/comecocos_cpp/main_juego.cpp:15: referencia a `al_install_system' sin definir
/home/****/Escritorio/comecocos_cpp/main_juego.cpp:20: referencia a `al_create_display' sin definr " pero lo pone con todas sus funciones de allegro5 no solo con esas. Entonces creo que es un problema al linkear las bibliotecas, aunque tampoco estoy muy seguro.


el makefile es este:


CXX=g++
CFLAGS= -g -Wall -ansi -pedantic
LDFLAGS=-L/usr/lib -lallegro
INCLUDE=-I. -I/usr/include/allegro5

EJECUTABLE = juego

all: $(EJECUTABLE)

juego: main_juego.o
$(CXX) -o salida main_juego.o

main_juego.o: main_juego.cpp
$(CXX)  $(INCLUDE) $(CFLAGS) $(LDFLAGS) main_juego.cpp



Y como me acabo de iniciar en c++ pues no tengo mucha idea. Muchas gracias. Saludos
#9
En el main tengo ya int main (int argc, char ** argv)

La cosa es que en netbeans no tengo ni idea de que cambiar en Propiedasdes run run command tengo esto ${OUTPUT_PATH}" pero no se como modificarlo para pasar arguementos... asi que abandonare yo creo que netbeans para usar gdb en linux. La cosa es que no me manejo muy bien con gdb, mi princiapl pregunta es como pongo breakpoints en funciones que no estan en el main. por ejemplo: tengo el main en un .c llamado main.c y tengo otro archivo llamado prueba.c y la pregunta es ¿como hago para poner un breakpoint en alguna linea de prueba.c?

Un saludo



Edito: bueno tras tocar un poco he conseguido que pase por arguemtnos un fichero, era  en run como dijiste.

Muchisimas gracias :)
#10
Hola, he hecho un programa en netbeans y necesito pasarle dos argumentos y no se como hacerlo.

Alguna sugerencia. gracias