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

#111
Programación C/C++ / Re: programando en c
22 Abril 2016, 15:08 PM
No queda claro si es lleno o vacio el rombo y lo que interpreto es que los ++++++ atraviesan el rombo al medio y el & esta justo en su centro (aunque tampoco esta bien especificado el origen de coordenadas)

MAFUS: trocaste el eje X con el Y
#112
Programación C/C++ / Re: programando en c
22 Abril 2016, 12:58 PM
Cuál es la duda ? se nota es una tarea que te dieron pero igual te ayudo desde la algoritmica: un rombo esta formado por 4 lineas diagonales, y ......


- Cada linea se hace con un simple bucle (solo una variable de control de bucle)

- El punto final de una, es el punto inicial de la otra

- Las pendientes son -1 o +1 (o sea... subes +1 en Y por cada 1 de variacion de X o bajas 1 en Y)


* Hay formas incluso mas simples de hacerlo con solo 2 bucles
#113
Tambien estoy aprendiendo pero no sigo ningun libro....... aunque hay libros "de referencia", investiga
#114
No te compliques... tienes qsort() en C y std::sort() en C++

Ciertamente tu intento está lejos de funcionar.
#115
Programación C/C++ / Re: Colas en C++
21 Abril 2016, 14:29 PM
La logica es la misma....... o acaso piensas implementar una cola que no tenga un push(), pop() o un empty() ? 

Debes fijarte que metodos de minima necesitas e implementarlos.......
#116
Programación C/C++ / Re: Colas en C++
21 Abril 2016, 14:06 PM
Cada tipo de vehiculo queda encolado aparte porque requeririan distinto combustible y/o condiciones especiales o sea.... tienes 4 tipos de vehiculos = colas, te explico:

Dentro de un bucle infinito del tipo while(true) tienes una funcion que genera vehiculos al azar con distintas caracteristicas (matrícula, marca, modelo, potencia, tipo,
hora_llegada, hora_salida, fecha, estado_ITV..) que puedes guardar en un objeto o struct Vehiculo. Digamos se generan asi:

moto, Yamaha, modelo......, potencia 200 cm3,....
moto,....,....
moto,....,....
moto,....,....
moto,....,....
moto,....,....
moto,....,....
vehiculo a gasolina, Ford, modelo T, ......
vehiculo diesel no-industrial
vehiculo diesel industrial
moto
...


El primero que generas tienes que atenderlo primero......... por eso usas una cola pero dentro de su categoria porque no puedes atender una moto más si tienes 20 encoladas (se asume que se puede atender 1 tipo de vehiculo a la vez y no mas)

Entonces.....

Verificas si la cola correspondiente (motos por ejemplo) esta vacia.. y si lo esta atiendes a ese vehiculo (moto). Sino esta vacia, atiendes al que espera en la cola y encolas al recien llegado.  Algo asi:

Código (cpp) [Seleccionar]

#include <queue>
#include <stdexcept>
#include <stdlib.h>  // srand, rand
#include <iostream>
#include <string>
#include <time.h>

using namespace std;

const unsigned short int G = 0;
const unsigned short int D = 1;
const unsigned short int M = 2;
const unsigned short int I = 3;

struct Vehicle{
int matricula; // según tu país puede ser numerico o no
string marca;
string modelo;
short unsigned int potencia;
//enum tipo {G, D, M, I};
unsigned short int tipo;
tm hora_llegada;
tm hora_salida;
tm fecha;
enum estado_ITV {BUENO, MALO, REGULAR};
};

void atender(Vehicle v);
Vehicle GeneraVehiculo();
void sleep(unsigned int mseconds);

int main(){

Vehicle v,vc;
queue<Vehicle> colas[4];

while(true)
{

v = GeneraVehiculo();
printf ("Ingresa vehiculo (tipo %d) de matricula %d\n",v.tipo,v.matricula);

if (colas[v.tipo].empty())
atender(v);
else
{
// atiendo a quien espera en cola
vc = colas[(int)v.tipo].front();
colas[(int)v.tipo].pop();
atender(vc);  
colas[(int)v.tipo].push(v); // encolo al recien llegado
}
}
return 0;

}


void sleep(unsigned int mseconds)
{
   clock_t goal = mseconds + clock();
   while (goal > clock());
}  



Te dejo la tarea de implementar GeneraVehiculo() y atender()
#117
Si son 4 digitos, cambia esta linea:


array_numeros_aleatorios[i] = rand() % 9000 + 1000;


Eso genera del 1000 al 9999
#118
No es necesario desensamblar nada

Obviamente que los caracteres de control (si son interpretados al momento de visualizarse el archivo) no te dejan ver bien las cadenas, pero estan ahi (excepto el archivo esté ofuscado o cifrado) y depende del editor con que las abras.

Una vez que encuentras las cadenas..... las reemplazas por otras de la misma longitud.

(lo he hecho antes)
#119
Crack: tienes toda la razón, se me olvidó liberar la memoria y es muy importante hacerlo  ;)

En cuanto la forma de reservar la memoria (y liberarla) es propia de C como dices porque intenté hacer los ejemplos en C y no C++ para obligar a quien pregunta a "extraer" el concepto y no copiar código (que le serviría en C++)  >:D


Citar
Si estas trabajando en C++ evita importar bibliotecas de C como stdlib.h o stdio.h y utiliza sus equivalencias como cstdio y cstdlib, tambien procura liberar siempre la memoria allocada con malloc usando la funcion free(); ya que en tus dos ejemplos reservas memoria en el heap pero nunca la liberas.

Por ultimo aunque esto es mas bien en gustos, procura reservar la memoria dinamica usando NEW en lugar de malloc  ya que la primera es la nativa de C++ no olvidar igualmente liberar la memoria usando delete[] si es un arreglo o delete a secas si es un puntero.
#120
Y es por eso que comenta MAFUS que es un peligro andar declarando como unsigned a lo loco......

    unsigned int a,b;
    a = 4; b= 8;

    std::cout << (a-b);  // podria sorprenderte