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ú

Temas - amgarciac

#1
Supongamos que tenemos un sistema compuesto por infinitas unidades de átomos de
hidrógeno y oxígeno, que lo único que quieren hacer es combinarse para formar moléculas de agua.

Para ello dispondremos de una clase denominada Aire, que recibirá peticiones de los átomos mediante un método denominado combinar (id), donde id nos dirá si lo que quiere combinarse es un átomo de oxígeno o de hidrógeno.

- Cuando un átomo quiere combinarse hay que comprobar si ya existen otros 2 átomos
complementarios. En ese caso, la molécula se forma.
- Si no están todavía sus otros 2 átomos complementarios, entonces debe bloquearse y
esperar a que lleguen los 2 que faltan o el que falta. Sólo cuando lleguen los que faltan
entonces pueden seguir los tres átomos.
- Los átomos que llegan pero no pueden formar molécula porque ya hay uno (en el caso
del oxígeno

Para resolver dicho problema, he desarrollado así la clase Aire:



public class Aire {

int atomosHidrogeno = 0;
int atomosOxigeno = 0;
int atomosH_esperando;
int atomosO_esperando;

public Aire(int atH, int atO2) {
this.atomosHidrogeno = atH;
this.atomosOxigeno = atO2;
this.atomosH_esperando = 0;
this.atomosO_esperando = 0;
}

public void combinar(int id) {
if (id == 0) // Hidrogeno
{
synchronized (this) {
while (this.atomosH_esperando == 2 || (this.atomosHidrogeno < 1 && this.atomosOxigeno < 0)) {
try {
wait();
this.atomosH_esperando++;
} catch (InterruptedException ie) {
}
}
notify();
}
this.atomosH_esperando--;
System.out.println("Molécula formada");
} else if (id == 1) // Oxigeno
{
synchronized (this) {
while (this.atomosH_esperando == 2 || (this.atomosHidrogeno < 2)) {
try {
wait();
this.atomosO_esperando++;
} catch (InterruptedException ie) {
}
}
notify();
}
this.atomosO_esperando--;
System.out.println("Molécula formada");
}
}
}


MI PROBLEMA ES QUE SIEMPRE HAY ÁTOMOS SUFICIENTES PARA TODAS LAS MOLÉCULAS, PONGA LO QUE PONGA

(Sinceramente, soy novato en concurrente y...)
#2
Buenos días, estoy intentando realizar un problema que me lea una secuencia de términos (monomios de grado 1), dentro de los cuales he de identificar el coeficiente y la variable (una letra). A cada uno de estos he dedicado una variable, respectivamente un integer y un "char".

Dado que bien el coeficiente sea uno (por lo que sobra su inserción como dato de entrada) o no exista variable (por lo que damos con un término independiente), he establecido unos enunciados condicionales a la hora de establecer las sentencias de entrada de datos (todas en base a un cin): un if para que me lea ambos y otros dos para cada uno de ellos. Pero tengo un problema, ya que no me respeta ni los espacios ni los saltos de línea; incluso es imposible continuar ya que se da una infinitud de saltos de línea, incontrolables.

De todos modos, antes de finalizar os expondré un ejemplo de entrada y otro de salida:

ENTRADA
   -13t      8k    w
      +34
-10p

SALIDA
-13.t
8.k
1.w
34.
-10.p


Agradecería vuestra ayuda.
Un saludo.
#3
Buenas tardes, tengo un equipo Windows Vista cuyo software de seguridad es: el firewall de Windows y el antivirus de Microsoft. El problema es que teniendo conexión de red, no puedo acceder a internet a través de los navegadores.

Tenía Google Chrome (el cual he reinstalado), pero he instalado otros como Opera y Firefox, pero el problema persiste. Es absurdo pues otras apps como las de descarga de algunos instaladores y Spotify funcionan.

He comprobado los ajustes de proxy y lo del LAN está desactivado; solo está activada la casilla de detectar conexiones y cambios.

¿Qué puedo hacer para solventarlo?

Un saludo
#4
Buenas tardes, me gustaría saber cómo podría hacer una sopa de letras que recorra una matriz de direcciones sabiendo que la palabra a buscar es una sola (en todas las direcciones posibles): "OIE". Me gustaría elaborarlo como el siguiente, pero no entiendo el código, es decir, la forma de hacerlo: http://foro.elhacker.net/programacion_cc/sopa_de_letras_respuesta_erronea-t286627.0.html;msg1417535#msg1417535

Así que os agraderceía enormemente cualquier ayuda.

Un saludo.
#5
Buenas tardes, estoy escribiendo un programa que como dato de salida debería de dar 46 -en vez de 45, que es lo que sale sin saber por qué- siendo los de entrada 1.54 y 2. Este es su código:

#include <iostream>
using namespace std;

int main()
{
double precio, pagado;
int centimos;
cout << "Escriba precio y dinero entregado: ";
cin >> precio >> pagado;
centimos = 100 * (pagado - precio);
cout << "Hay que devolver " << centimos << " centimos" << endl;
}


¿A qué puede deberse, a un error del flujo de datos (ya me ha pasado otras veces con un while, etc.?