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

#11
Por aquello de "Owned" o "Pwned", Carloswaldo tiene razon. "Owned" es lo lingüisticamente correcto, pero "Pwned" esta casi igual de extendido, en la jerga cibernetica & l33t. Si no les convence, mirar un par de forillos y/o chats en ingles :laugh:

Saludos
#12
Buenas, ya he vuelto :D

Pues al final me he metido con el de grafos, me ha gustado mucho xD Y por cierto, decirte que me falto implementarle lo de varios casos por falta de tiempo, es decir, la entrada al programa es identica, solo que obvia el numero de casos y solo te resolvera el primero, si quieres probar otros casos hay que ejecutar de nuevo el programa (sorry, obviamente no presentaria eso asi en un concurso xDD)

Pero nada, queria que simplemente le echaras un vistazo a la parte principal del programa, el algoritmo y tal que es lo que importa al fin y al cabo, y ver que cambiarias tu o como lo harias (seguro que se puede hacer mas eficientemente que el mio :))

Aqui te lo dejo (Otra cosa, solo lo he hecho en pascal, en cuanto vuelva a tener un rato disponible intentare pasarlo a C a ver):

Código (pascal) [Seleccionar]
program circulos;

const
MAX = 20;

type
TValores  = Record
                Asignado : boolean;
Color       : boolean; { 'True' = Verde; 'False' = Amarillo }
End;
TVertices = array [0..MAX] of TValores;
TCasos = array [1..MAX] of TVertices;

var
nCasos : integer;
nVertices : integer;
nAristas : integer;
inicio, fin  : integer;
vertices : TVertices;
casos : TCasos;
flag : boolean;
i : integer;

procedure init_vertices (var c : TCasos);

var
i, j : integer;

begin

for i := 1 to MAX do
for j := 0 to MAX do
begin
c[i][j].Asignado := false;
c[i][j].Color := false;
end;

end;

function evalua (var v : TVertices; inicio, fin : integer) : boolean;

begin

if (v[inicio].Asignado = false) and (v[fin].Asignado = false) then { si ninguno ha sido asignado aun }
begin
v[inicio].Asignado := true;
v[inicio].Color := true;
v[fin].Asignado := true;
v[fin].Color := false;
evalua := true;
end
else
begin
if (v[inicio].Asignado) xor (v[fin].Asignado) then { si uno de los dos esta asignado }
begin
if v[fin].Asignado = false then
begin
v[fin].Asignado := true; { lo marcamos como coloreado }
v[fin].Color := not v[inicio].Color; { y le ponemos el color contrario al del otro vertice }
end
else
begin  { en caso de que el que no estuviese coloreado aun fuera el vertice inicial, lo mismo para este }
v[inicio].Asignado := true;
v[inicio].Color := not v[fin].Color;
end;
evalua := true;
end
else
begin  { si entramos aqui es porque ambos ya estan coloreados, comprobemos si es incompatible }
if v[inicio].Color = v[fin].Color then
evalua := false
else
evalua := true;
end;
end;

end;

{ -- MAIN --}

begin 

init_vertices (casos);
flag := true;
readln (nCasos);
readln (nVertices, nAristas);
for i := 1 to nAristas do
begin
readln (inicio, fin);
flag := flag and (evalua (vertices, inicio, fin));
end;
if flag then
writeln ('Miguel, a pintar')
else
writeln ('No pierdas el tiempo');

end.


Ale, ahi lo tienes, dispara :P

Decirte tambien que voy a estar fuera hasta el viernes o asi, en cuanto vuelva a estar online le meto mano al susodicho problema nº 2, y tal vez traducir este a C

Gracias de nuevo por tus problemas, de verdad que son muy interesantes y me he entretenido mucho con ellos, sobre todo el ultimo claro (pa haber salido de un examen de GRAFOS hoy mismo y ponerme a hacer problemas de GRAFOS... xDD hay que echarle ganas)

Saludos!
#13
Cita de: ghastlyX en  8 Septiembre 2008, 00:43 AM
Si nadie publica nada tendré que dar yo la solución :P

No!! Esperame xDD Tengo un examen mañana y por eso no lo he intentado hasta ahora, no he tenido tiempo, pero cuando llegue me pongo (encima en el examen me cae programacion dinamica :xD Y eso me lo se bien :P)

Saludos
#14
Guay :D

Lo del espacio despues de los numeros lo puse deliberadamente, pensando que asi es mas legible... Pero bueno es igual, se quita y ya esta xD No sabia eso de los concursos, me lo apuntare

Ah, y me gusta tu codigo, te quedo mas corto, tiene estilo :P

Ahora a por el de las minas, como tu dices. Saludos


#15
Hola ;)

Me han parecido interesantes los ejercicios, voy a postear el primero, si te parece bien:

En C:

#include <stdio.h>

int main (void)
{
int i, j, n;

printf ("Introduce altura de la pared: ");
scanf ("%d", &n);
for (i = n; i >= 1; i--) { /* Bucle desde la cima hasta la base */
j = i; /* 'j' servira para saber las veces que se repiten los numeros en cada nivel de la piramide */
while (j <= n) {
printf ("%d ", i); /* Imprimimos el numero del nivel... */
j++;
} /* ...tantas veces como niveles alejados de la cima estemos */
printf ("\n");
}
printf ("\n");
return 0;
}





En Pascal:

Código (pascal) [Seleccionar]
PROGRAM Triangulos;

VAR
i, j, n : Byte;

BEGIN

Write ('Introduce altura de la pared: ');
ReadLn (n);
For i := n DownTo 1 Do
Begin
j := i;
While (j <= n) Do
Begin
Write (i, ' ');
Inc (j);
End;
WriteLn ();
End;
WriteLn ();

END.





Igual se pueden optimizar algo mas, pero bueno... En cuanto pueda intentare el segundo tambien, a ver que tal

Gracias y saludos
#16
Electrónica / Re: FUente de tension regulable
28 Agosto 2008, 03:55 AM
En estos links viene muy bien explicado, basándose en un regulador de voltaje LM317:

http://www.unicrom.com/cir_fuenteconlm317T.asp
http://perso.wanadoo.es/chyryes/tutoriales/fuentes14.htm

Por cierto, que en el subforo de Electrónica seguro que te pueden ayudar mejor

Saludos
#17
Bueno, con length tambien servia, y no hay necesidad de llamar a una unit extra:

Código (pascal) [Seleccionar]
program bla;

var palabra : string;

begin
   write ('introduce palabra: ');
   readln (palabra);
   writeln (length (palabra));
end.


Saludos
#18
Hola,

Yo me apunto tambien. Se que llevo mucho tiempo dejando un poco de lado lo de las traducciones, tengo un texto ahi pendiente desde hace mucho que aun no he terminado, pero es que estos ultimos 2 meses la universidad y un par de cosas mas no me han dado tiempo ni para respirar xD Pero bueno, la cuestion es que este sabado tengo ya por fin el ultimo examen, y tendria mucho mas tiempo libre para dedicarselo a esto.

Por cierto que lo de la wiki me parece una gran idea, por el concepto de ir aportando cada uno poco a poco a los textos que desee, y no trabajo individual como hasta ahora.

Saludos
#19
URLDownloadToFile ()

:B

Saludos
#20
Lo normal para eso es hacer:

Código (pascal) [Seleccionar]
Var
   Matriz : Array [1..3, 1..3] of Byte;
   i, j   : Byte;

Begin

   { Aqui codigo para insertar los numeros }
   { . . . }
   
   For i := 1 To 3 Do
   Begin
      For j := 1 To 3 Do
         Write (Matriz[i][j], ' ');
      WriteLn ();
   End;

End.


Y si quieres hacerlo con While...

Código (pascal) [Seleccionar]
i := 1; j := 1;

While (i <= 3) Do
Begin
   While (j <= 3) Do
   Begin
      Write (Matriz[i][j], ' ');
      Inc (j);
   End;
   WriteLn ();
   Inc (i);
   j := 1;
End;


Saludos