1. Crear una clase "Vehículo" para almacenar los atributos del vehículo: ID, latitud, longitud, velocidad y dirección.
2. Implementar un método para simular el movimiento en tiempo real actualizando la latitud y la longitud en función de la velocidad y la dirección.
3. Imprimir continuamente el estado de cada vehículo de la flota, incluyendo su posición actual y la distancia recorrida.
4. El programa debe simular el movimiento de los vehículos en un bucle, con los datos de cada vehículo actualizándose cada segundo.
Desarrollar una aplicación de rastreo en tiempo real para una flota de vehículos.
#include <iostream>
#include <cmath>
#include <thread>
#include <chrono>
#include <vector>
using namespace std;
// Vehicle class to store vehicle information
class Vehicle {
public:
int id; // Vehicle ID
double latitude; // Vehicle latitude
double longitude; // Vehicle longitude
double speed; // Speed in km/h
double direction; // Direction in degrees (0-360)
// Constructor to initialize a new vehicle
Vehicle(int id, double latitude, double longitude, double speed, double direction)
: id(id), latitude(latitude), longitude(longitude), speed(speed), direction(direction) {}
// Function to simulate movement
void move() {
// Convert speed to km per second
double speedPerSec = speed / 3600.0;
// Calculate change in position based on speed and direction
latitude += speedPerSec * cos(direction * M_PI / 180.0);
longitude += speedPerSec * sin(direction * M_PI / 180.0);
}
// Function to print the current status of the vehicle
void printStatus() {
cout << "Vehicle ID: " << id << ", Latitude: " << latitude << ", Longitude: " << longitude << endl;
}
};
// Function to simulate the tracking of a fleet of vehicles
void trackFleet(vector<Vehicle> &fleet) {
while (true) {
for (auto &vehicle : fleet) {
vehicle.move(); // Move the vehicle
vehicle.printStatus(); // Print current status
}
cout << "---------------------------------" << endl;
this_thread::sleep_for(chrono::seconds(1)); // Wait for 1 second before updating
}
}
int main() {
// Create a fleet of vehicles
vector<Vehicle> fleet;
fleet.push_back(Vehicle(1, 34.0522, -118.2437, 60, 90)); // Vehicle 1 (Speed: 60 km/h, Direction: East)
fleet.push_back(Vehicle(2, 40.7128, -74.0060, 80, 180)); // Vehicle 2 (Speed: 80 km/h, Direction: South)
// Start tracking the fleet
trackFleet(fleet);
return 0;
}
Salida
Vehicle ID: 1, Latitude: 34.0522, Longitude: -118.2437
Vehicle ID: 2, Latitude: 40.7128, Longitude: -74.006
---------------------------------
Vehicle ID: 1, Latitude: 34.0522, Longitude: -118.2437
Vehicle ID: 2, Latitude: 40.7128, Longitude: -74.006
---------------------------------
...