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

#1
Programación C/C++ / Re: Matrices en C con bits
8 Diciembre 2017, 21:54 PM
Buenas NericSain,

[1] Concepción en pseudocódigo

Considera siempre como buena idea crear el pseudocódigo de tu programa

[1.1] ¿Qué valores quiero tomar?

Si tomamos n como filas y m como columnas e identificamos cada valor de la matriz como anm, tomamos los siguientes valores:

a00 a01 a02 a03
a10 a11 a12 a13
a24 a25 a26 a27
a34 a35 a36 a37

[1.2] Solución rápida

Si solo requerimos estos valores, sería tan sencillo como tener dos vectores, en uno los valores de n y en otro los de m asociados:

vecn[ ] tendría los valores: 0,0,0,0,  1,1,1,1,  2,2,2,2,  3,3,3,3
vecm[ ] tendrías los valor.: 0,1,2,3,  0,1,2,3,  4,5,6,7,  4,5,6,7

Con ello, solo requeriríamos de un vector for que nos diera los índices de manera ordenada (i++ p.ej.) de los dos vectores

[2] En resumen

Conforme explicas la pregunta esta sería una solución correcta, si requieres de más ayuda continúa el hilo e intenta ser más concreto.
#2
Programación C/C++ / Re: Ayuda juego UNO
6 Diciembre 2017, 12:55 PM
Muy buenas ricardo093,

y, para empezar, me encanta tu idea, de verdad.


1. Creación de una estructura con función de pila

Leyendo tu código y analizando tu consulta creo que aquello que quieres hacer se puede dividir en varios puntos. Recordemos que la modulación es una de nuestras mejores herramientas.

a. Primero debemos constituir una estructura con función de pila
b. Requerimos colocar cada una de nuestras cartas de la baraja de manera aleatoria
c. Esta pila, por supuesto, tiene que tener una función "pop" que elimine la primera de las cartas que tenemos en ella.

Vayamos por partes



2. Construcción de pila

Nuestra estructura pila podría ser un simple struct con su funcionalidad. Una gran idea está en colocarlo en un fichero ".h" y construirlo directamente ahí.

He encontrado un link que te ayudará muchísimo en este paso:
http://es.ccm.net/faq/2885-las-pilas-en-lenguaje-c#requisitos



3. Colocar cada una de las cartas de manera aleatoria

3-a. Explicado de una forma simple, requeriremos de la función random:

#include <time.h>

srand(time(NULL));
int numRand = rand() % 107; 

3-b En la que además, deberemos colocar un while que nos asegure que no hemos dado ese número todavía.

En definitiva, nuestro código permitirá la elección aleatoria de una de las posiciones de nuestro vector de struct carta:  "baraja" y a cada posición nueva que vaya dando la iremos colocando dentro de la pila en orden - push -, pero con elección aleatoria.



4. Función pop
Con la implementación del punto 2 vendrá ya la estructura del pop



5. Para finalizar

Me ha encantado tu proyecto y me encantaría ver la funcionalidad final, si quieres ponerte en contacto conmigo, sería un placer ayudarte en lo que pueda más allá de esta consulta.

Saludos,

moncker94
#3
Programación C/C++ / Re: hilos con c urge
6 Diciembre 2017, 12:35 PM
Buenas vicds,


[1] Para empezar

Te recomiendo cuando realices una consulta que seas mucho más concreto. La idea de "Buenas no puedo hacer que pase a mi segundo hilo" es muy vaga y a penas nos permite trabajar con tu problema. Haciendo la tarea de ayuda más compleja y, en muchas ocasiones, dejándola sin contestar.



[2]Concibiendo tu problema

Supongo que tu problema es que el hilo 2 no llega a leer su función... Aquí llega otro problema de forma: no sé si el hilo 1 acaba, se bloquea... Me faltan datos. Sin embargo, consideraré que acaba, fallando realmente el mutex más que el hilo 2.

El primer y gran fallo del código es utilizar dos mutex. Muy rara es la vez que esto es funcional, y mucho menos cómo estás intentando hacerlo funcionar. Analicemos un momento lo que tratas de hacer:

[2-a] Idea de mutex

El mutex es un mecanismo de sincronización que presentan, junto las variables de condición, los hilos. El problema de sincronía nace cuando varios hilos toman un recurso o variable compartido pudiendo producir un error conocido como condiciones de carrera.

Tu concepción de mutex es incorrecta. Utilizas dos mutex diferentes tratando que uno produzca el "lock" y otro el "unlock" cuando estas funciones de forma binomial actúan sobre el mismo mutex.




[3] Solución parcial a tu problema

[3-a] Te recomiendo, para empezar, que concibas de diferente manera el Mutex, comprendiéndolo como una sola estructura que protege la zona crítica impidiendo las condiciones de carrera.

[3-b] El wait no se coloca, por formulación, como una linea de código más. Se trata de un línea de código siempre encerrada en un bucle while sobre una condición de las variables compartidas.




[4] Conclusión

Analiza MUCHO mejor la teoría sobre los ejercicios que tienes que realizar. Realmente falta mucha comprensión sobre este temario, te recomiendo que mires y remires ejercicios ya realizados e intentes comprender la teoría. Existen demasiados errores para comprender el ejercicio, analizarlos todos y dar una solución completa.


Saludos y siento que no pueda serte de más ayuda,

moncker94
#4
Muy buenas gusanillo,

0. Tabulo tu código para hacerlo más legible:

{
  int x,i;
  for (int i=2; i<10; i++) //Recorro el arreglo -> Consideras i, por lo tanto, un idexador del arreglo
  {
    bool primo=true;
    int max=x/2;
    for (int x=2;x<=max;x++) // Muy correcto, solo es necesario ver hasta la mitad de él
    {
      if(x%i==0) // Si es divisor, no es primo -> Aquí es dónde chirría más -> [Veáse anotación 1]
       {
        primo=false; // Estructura lógica compleja -> [Veáse anotación 2]
        break;
        }
    }
    if (primo) // Si es primo, lo saco por pantalla
      {
      cout <<x<< " ";
      }
  }

cin.get();cin.get();
return 0;
}



1. Anotaciones sobre tu código

[Anotación 1]. El concepto de primo no es "no ser divisor", es "no ser divisible"

7 no es divisor de 13, pero sí de 14. Aun así es primo porque no existe un {k € R} tal que lo divida con resto cero quitando él mismo y el uno.

[Anotación 2]. Analiza correctamente si es mejor partir de que es falso o es verdadero.

Fíjate que queda más sencillo, sí, es pseudocódigo:

for( valores_anteriores_a_la_mitad_del_número_inclusive ){ // Partimos de la idea de que no lo es
  if( es divisible por uno de estos valores){
      esPrimo = true;
      break;
  }
}



2. Conclusión

Analiza de nuevo tu código con las anotaciones que te he propuesto, si ves que aun tienes problema. ¡Aquí estamos!



Saludos,
moncker94
#5
Software / Re: Problema con Virtualbox
5 Diciembre 2017, 19:41 PM
Muy buenas piero_11,

1.- Error en conjunto de instrucciones

¿Te has asegurado de que cumpla con el conjunto de instrucciones correcto?, en muchas ocasiones aparece ahí el fallo.

De alguna manera "qué sabe leer la virtualBox en funcionamiento como Procesador". Fíjate si la versión que te exige la virtualBox es de x86 y le has dado la que probablemente requeriría tu pc que sería la de x64.

2.- Comprobar que la ISO que tienes es correcta

Asegurate que es de una página fiable y que existen usuarios que la han utilizado. Si pruebas lo primero y no te funciona, ponte en contacto conmigo y te diré dónde encontrarla.  ;D

¡Saludos!