• Martes 30 de Abril de 2024, 05:05

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Nagisa

Páginas: 1 ... 3 4 [5]
101
C/C++ / Re: Problema Con Primos
« en: Lunes 19 de Abril de 2004, 23:30 »
Solo he de añadir una cosa a lo tuyo, y quizas te ayude:

"Si un numero n es compuesto, entonces ha de tener un divisor primo menor o igual que su raiz cuadrada".
(Consecuencia del Teorema Fundamental de la Aritmetica  :smartass: )


Por ejemplo: para comprobar si 31 es primo

-- De tu forma:

Es divisible entre 2   -> NO
Es divisible entre 3   -> NO
Es divisible entre 5   -> NO
Es divisible entre 7   -> NO
Es divisible entre 11 -> NO
Es divisible entre 13 -> NO
Es divisible entre 17 -> NO
Es divisible entre 19 -> NO
Es divisible entre 23 -> NO
Es divisible entre 29 -> NO
Luego es primo!!

-- De mi forma: 5 < sqrt(31) < 6

Es divisible entre 2 -> NO
Es divisible entre 3 -> NO
Es divisible entre 5 -> NO
Luego es primo!!

Queda bastante claro el ahorro de iteraciones.

Espero haberte ayudado.

102
Retos / Re: El Reto Es Sencillo
« en: Lunes 19 de Abril de 2004, 21:09 »
La solucion en papel...?? Estoy en ello  :lol:


Aunque despues de lo que me habeis dicho JuanK y tu no podia dejar de intentarlo. Estaba liado con un multiplicador de precision arbitraria, pero weno...

Cuando haya avanzando algo mas ya te contare que tal me va  :hola:

103
Retos / Re: El Reto Es Sencillo
« en: Lunes 19 de Abril de 2004, 20:23 »
Vale, ahora que me he decidido a hacer el reto, mi pregunta es:

Para la parte de los caballos... Que entrada recibo?? Es un tablero de ajedrez de los de toda la vida (8x8)??

Es que si es asi, con poner un printf("Si\n"); el problema hace lo que pides y optimizo en muuuuuuuuuuuucho los recursos de maquina  :lol: . (Lo puse antes, existe un camino que es ciclico, y por lo tanto pisa todas las casillas y vuelve a la inicial; por lo que da igual la que sea!).

Supongo que para hacer el reto mas interesante en este aspecto podriamos dejar que sea el usuario quien introduzca la dimension del tablero (siempre cuadrado, por supuesto), no crees??

104
Retos / Re: 18/04/2004 : Braid Theory (dificultad Media)
« en: Lunes 19 de Abril de 2004, 20:08 »
Lo siento muchisimo, pero la verdad es que la entrada YA estaba editada en un archivo de texto plano y no me deja T__T Lo mas que puedo hacer es colgar el fichero, y para ver si vuestros programas van pues redirigis la entrada standard. Para quien no sepa como hacerlo, basta con añadir al final de la linea de comandos lo siguiente:

< entrada

donde entrada es el archivo de texto.

Es decir, si llamais al ejecutable braids.exe, y el fichero se llama lazos.txt podeis escribir:

C:\.....\> braids < lazos.txt

Asi todo lo que tuviera que leer del teclado lo lee del fichero en su lugar. A nivel de codigo del programa no hace falta hacer nada!! Debeis de leer como si fuera desde "teclado" (de hecho, debeis de leer como si se tratara de la entrada standard, que suele ser el teclado ^__^).

Sobre lo de la fecha de caducidad... pues no habia pensado en ello. Digamos que... para dentro de dos semanas?? Por lo tanto EL RETO CADUCA EL DIA 3 de Mayo. De todas formas espero no tener que ser yo el unico quien cuelgue una solucion correcta  :lightsabre:

Traduccion al español del enunciado (no es del todo literal):


Un lazo esta hecho de uno o mas bucle entrelazados de formas fantasticas. Sorprendentemente, cada lazo puede ser representado graficamente usando solo cuatro caracteres:  espacios en blanco (' '), guiones('-'), barras('|') y signos de suma (+).

El objetivo de este sencillo ejercicio de programacion es encontrar el numero de bucles que componen un lazo dado.


DESCRIPCION DE LA ENTRADA


Varias descripciones de lazos separadas por lineas vacias. Cada lazo es dado usando los cuatro caracteres como se explico anteriormente, esta bien formado y representado de manera no ambigua. La entrada es finalizada por el fin de fichero.

(Nota: La entrada es la entrada standard!!)


DESCRIPCION DE LA SALIDA

Para cada lazo, una linea con el numero de bucles que contiene.



Si quereis que añada o rectifique algo mas, solo teneis que decirlo. Tendre en cuenta las cosas anteriores para la proxima vez  :)


Pues eso, poneos a ello, que no es tan facil como parece ni tan dificil como imaginais!! :suerte:

105
Retos / Re: El Reto Es Sencillo
« en: Lunes 19 de Abril de 2004, 19:38 »
I'm sorry. Aunque la verdad que consideraria poco licito hacer el reto ahora mismo por que justo hoy nos han explicado en clase lo que es el backtracking, y el problema de las reinas es el ejemplo mas tipico (de hecho nos lo han explicado con ese ejemplo  :lol: ). Se parecia un poco a lo que yo decia, aunque no mucho  :whistling:

Solo una cosa... Me duele que alguien que tiene un avatar de Dragon Ball no sepa quien es Kaworu (Nagisa -> Evangelion ) . Es un tio T__T

Citar
Espero y me des un programa que desarrolle el reto en su totalidad, si para ti es fail, pues te admiro y eso indicas que quizas eres una muy programadora.

De todos modos ahora mismo me pondre con ello. El lenguaje puede sere cualquiera, no?? Te vale Haskell??

106
Retos / Re: 18/04/2004 : Braid Theory (dificultad Media)
« en: Domingo 18 de Abril de 2004, 13:56 »
Uhm... Por culpa de las fuentes :angry:  la entrada del ejemplo no se ve bien...  Lo siento  :(  De todos modos si veis las salidas y entendeis mas o menos el problema no sera dificil reconstruirla  ;)


Suerte con ello!!  :)

107
Retos / 18/04/2004 : Braid Theory (dificultad Media)
« en: Domingo 18 de Abril de 2004, 13:51 »
Bien... este problema lo he sacado de un concurso de programacion, y la verdad es que me costo un poco resolverlo (bien por que mi forma no era la mejor o bien por que soy un torpe  :lol: )

El enunciado esta en ingles, aunque la verdad es que tampoco es muy dificil de entender:

A braid is made of one or more loops interlaced in fanciful forms. Surprisingly, every braid can be represented graphically using just four characters: blanks, dashes, bars and the plus sign.
The goal of this simple programming exercise is to find the number of loops thet integrate a given braid.

INPUT DESCRIPTION

Several braid descriptions, separated by empty lines. Each braid is given using the four characters as explained above, is well formed and is representated unambiguosly. The input is finished by the end of file.

OUTPUT DESCRIPTION

For each braid, a line with the numbre of loops contained in it.

SAMPLE IMPUT

Código: Text
  1.  
  2.    +----+
  3.    |       |
  4. +----+  |
  5. |  |   |  |
  6. +--|----+
  7.    |   |
  8.    +-+
  9.  
  10. +--+  +--+  +--+
  11. |  |  |  |  |  |
  12. +-----|--|-----+
  13.    |  |  |  |
  14.    +--+  +--+
  15.  
  16.       +--------+
  17.       |        |
  18.    +--------+  |
  19.    |  |     |  |
  20.    |  +--------+
  21.    |        |
  22. +--------+  |
  23. |  |     |  |
  24. +--|-----+  |
  25.    +--------+
  26.  
  27.  

SAMPLE OUTPUT
Código: Text
  1.  
  2. 1
  3. 1
  4. 3
  5.  
  6.  

108
Retos / Re: El Reto Es Sencillo
« en: Domingo 18 de Abril de 2004, 13:45 »
Con el de los caballos si fuerzas a que termines donde empiezas, la segunda parte del problema sobra.

Citar
de la misma forma el programa debe decir si se pueden realizar esta tarea desde cualquier cuadro del tablero(o sea que el programa debe verificar los recorridos desde todos los cuadros)

Mas que nada por que si acbas donde empiezas, el recorrido es ciclico y has pisado todas las casillas.


El de las damas me parece mus sencillo. Tomas una matriz 8*8 buscas una posicion "vacia", pones una reina y marcas las casillas que amenza, asi hasta que coloques las 8. Este metodo es un poco basto, y si no funciona asi, se podria hacer recursivamente y predeterminando la casilla inicial (es decir, si colocando la 1ª reina en el (1,1) no se puede, colocala en el (2,1) y vuelve a probar).

109
C/C++ / Re: Numeros Aleatorios
« en: Domingo 18 de Abril de 2004, 13:29 »
Bueno... realmente para generar el numero aleatorio no es necesario que hagas esto:

int i = 60;
while(i--){
srand ( (unsigned) time (NULL) );
n = rand() %100 + 1;
}



Con que hagas

srand ( (unsigned) time (NULL) );
n = rand() %100 + 1;

te vale; yo lo que postee era un programita que muestra 'i' numeros aleatorios (para que no quedara tan soso).

Es mas, srand() puedes hacerlo una unica vez, asi que yo podria haberlo sacado del bucle.

110
C/C++ / Re: Numeros Aleatorios
« en: Domingo 18 de Abril de 2004, 00:46 »
Aqui tienes una forma que funciona con el compilador gcc (las funciones de libreria varian segun el compilador):


# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# define MAX 6

int main(void){
  int n;
  int i = 10;
  while(i--){
    srand ( (unsigned) time (NULL) );
    n = rand() % MAX + 1;
    printf("%d\n", n);
    getch();
  }
}

Por si no lo sabes, los numeros aleatorios no existen en los lenguajes de programacion. Lo que se usa en su lugar son numeros pseudoaleatorios. Esto son obtenidos con funciones especiales a las cuales le pasas un numero (recursivas : un caso inicial al que se le llama semilla y lo puedes elegir; y el resto se basa en el resultado del anterior) y te devuelven otro. Aunque parezca poco aleatorio, la secuencia de numeros que obtienes pasa pruebas de numeros aleatorios (no existe un patron especifico que se adapte a la secuencia).

srand lo que te hace es iniciarte la semilla del generador de numeros aleatorios. Le pasas como el resultado de time.

rand lo que hace es devolver el siguiente numero de la secuencia.

Supongo que el resto sabes lo que hace, no?

111
C/C++ / Re: Necesito Ayuda
« en: Lunes 16 de Febrero de 2004, 18:14 »
Creo que la solucion seria hacer un bucle y usar la funcion kbhit(). Esta te devuelve la tecla que se ha pulsado, o null si no se ha pulsado ninguna tecla.

112
C/C++ / Re: Modificando Una Cadena
« en: Martes 10 de Febrero de 2004, 22:26 »
A mi tb me parece que todo funciona. Como os digo, el error es en tiempo de EJECUCION.

Lo compilo con el gcc, y lo ejecuto bajo Windows 95. No creo que sea por eso, aunque lo probare con otro SO (con el XP) y ya os contare.

113
C/C++ / Modificando Una Cadena
« en: Domingo 8 de Febrero de 2004, 19:10 »
Hola. Tengo el siguiente codigo que te recorre una cadena y va modificando sus caracteres segun una funcion de ellos mismos. Esta funcion viene definida por

char funcion(char);

Para hacer esto he intentado lo siguiente:

void modifica(char* p){
  while(*p != '\0'){
    *p = funcion(*p);
    p++;
  }
}

Esto me compila y me hace todo bien, pero me da un error en tiempo de ejecucion. He conseguido aislar el error, pero no se solucionarlo. El error en concreto esta en la asignacion *p= ...

Pues eso. Por que falla y como se soluciona?? Muchas gracias

114
C/C++ / Re: Una Función, Borrar Pantalla.
« en: Miércoles 4 de Febrero de 2004, 19:14 »
Eso es por que en la version que usa el compilador de la libreria que importas no esta definida la funcion. Aunque parezca incrible, funciones estandard que implementen todos los compiladores hay muy poquitas.

A mi me paso hace poco algo parecido con la funcion gotoxy(). En teoria es una primitiva que se ha de encontrar en conio.h; segn la mayoria de tutoriales que he leido. Pero resulta que el gcc no la tiene implementada. Y lo mas cachondo es que use otro compilador (el Lcc) y si la tenia implementada, pero no en la conio, si no en la tcconio.

Asi que cada vez que necesito una funcion y no la encuentro donde me dicen, le doy a "Buscar Archivos", pongo *.h y en el campo "Con texto" pongo el nombre de la funcion.

115
C/C++ / Re: TAD
« en: Lunes 2 de Febrero de 2004, 19:30 »
:lol:  :lol:  :lol:  Vale, ya me funciona!! Muchas gracias!!!  :lol:  :lol:  :lol:

116
C/C++ / Re: TAD
« en: Domingo 1 de Febrero de 2004, 19:12 »
Veamos... Ya se que me vais a llamar pesao, pero es que no me hago con ello.

Supongamos, y ya dejo de lado los TADS, que tengo un conjunto de funciones que quiero agrupar en un paquete. Segun lo que me habeis dicho deberia de escribir algo asi:

Areas.h :

# ifndef AREAS               <----- Para evitar las inclusiones recursivas y eso...
# define AREAS        

int area_rect(int , int);     <------ Cabecera de mi funcion

# endif


Areas.c :

# include "areas.h"         <----- Hago referencia al .h

int area_rect(int base, int altura){     <------- Mi super funcion
  return base * altura;
}


Llegados a este punto escribo, en ventanita de MS-DOS, por supuesto:
gcc -Wall -c areas.c

y me sale el .o en el escritorio (vamos, donde debe). Asi que supongo que hasta aqui todo esta bien

Ahora, y es donde falla, intento importar mi paquete. Para ello hago:

prueba.c :

# include "areas.h"                 <------ Importo mi paquete
# include <stdio.h>                 <------ stdio para sacar el resultado por pantalla

int main(){
 printf("El area de un rectangulo de base %d y altura %d es : %d\n", 5, 8, area_rect(5,8));                              <---- Llamada a mi funcion        
 return 0;
}

Ahora COMPILO, pero no enlazo mi programa con

gcc -Wall -c prueba.c

y tambien me sale el .o en el escritorio

y a continuacion creo el programa con

gcc -Wall -o prueba.exe prueba.c

y me dice algo tan bonito como:

C:\DOCUME~1\ALEJAN~1\CONFIG~1\Temp\cca012121.o(.text+0x4d):prueba.c: undefined reference to 'area_rect'

Y si pongo

gcc -Wall -o prueba.exe prueba.c

me pone mas o menos lo mismo:

prueba.o(.text+0x4d):prueba.c: undefined reference to 'area_rect'



La verdad es que he seguido lo que me habeis dicho al pie de la letra, y no tengo ni idea de lo que le pasa. Tambien lo he intentado con los parametros que me ha dicho QliX=D!, pero el resultado es el mismo.

117
ADA / Re: Duda Sobre Punteros
« en: Domingo 1 de Febrero de 2004, 18:10 »
No es por poner pegas a la respuesta de Gandalf el Gris (al final no era blanco??  :blink: ), puesto que supongo que su codigo es del todo correcto.

De todos modos se echa algo de meno la ocultacion de tipos que supongo que te exigen en una practica sobre punteros (yo tuve que hacer una muy similar y la verdad es que a mi me lo exigieron).

Ademas, con esta ocultacion lo que podemos tener es un mismo programa de prueba que nos compruebe ambas implementaciones.

No te adjunto ningun codigo mas que nada por que no se lo que realemnte te piden, y tampoco es plan de ir poniendo funciones a lo bestia. Por que yo añadiria funciones como anterior, siguiente, ultimo, rimero, etc... Vamos, que al ser doblemente enlazada se le buscara una estructura de iterador (supongo).

Otra cosa que añadiria seria genericidad en el parametro. Con el codigo que te han pasado tan solo puedes hacer listas de Integers.  Pero si quisieras listas de Floats deberias de tener otro paquete, y lo mismo para listas de Characters, etc...

Lo dicho, si quieres un codigo un poco mas explicito, di exactamente lo que te piden y no me importara nada pasartelo.

118
C/C++ / Re: TAD
« en: Miércoles 24 de Diciembre de 2003, 01:25 »
Hola!!La verdad es que esa duda tb la tenia yo, asi que me ha venido bien la contestacion. Solo tengo un par de dudas sobre esto:

La primera es: debo de poner en el .h todos los tipos, o puedo poner parte de ellos en el .c (para conseguir mayor ocultacion, que al fin y al cabo es de lo que van los TADs) ???

La segunda es: con que opciones se compilan los archivos y en que orden??

Uso el gcc bajo un PIV con WXP. Para compìlar normalmente uso gcc -c fichero.c , pero al compilar el .h me pone:

gcc: compilation of header file requested


Sobre el .c , solo me compila si comento las directivas de preprocesador #if_not_define y #end_if que deciais que habia que poner. De todos modos el .h no me compila (con o sin ellas).

A que se debe?? Me siento un poco...  :alien:

Muchas gracias por adelantado

119
ADA / Re: Alguien Me Podria Facilitar El Compilador De ADA
« en: Lunes 8 de Diciembre de 2003, 22:07 »
Jo... Aqui todo dios lee pero nadie responde!!!

Pues yo suelo usar el gcc, aunque no se de que pagina lo puedes usar. La verdad que yo lo pille del ftp de la facultad de informatica de la upm, que trabajan con ADA. pasate por ahi, asi te puedes bajar eso, ademas de ejemplos.

Páginas: 1 ... 3 4 [5]