Para ello he escrito este codigo en un ejemplo con angulos, pero al ser realmente tipo char obtengo resultados como caracteres, y si hago un casting a int en el cout obtengo resultados numericos pero sin sentido:
Código
#include <iostream> #include <cmath> using namespace std; typedef char byte; struct stAngulo { short grados; byte minutos; byte segundos; }; stAngulo operator+(stAngulo a1, stAngulo a2); // a1+a2 stAngulo operator-(stAngulo a1, stAngulo a2); // a1-a2 int main(int argc, char *argv[]) { stAngulo angulo1 = { 23, 15, 20 }, angulo2 = { 2, 35, 29 }; stAngulo suma = angulo1 + angulo2; cout << "Grados: " << suma.grados << "\n\nMinutos: " << suma.minutos << "\n\nSegundos: " << suma.segundos << endl; cin.get(); return 0; } stAngulo operator+ (stAngulo a1, stAngulo a2) { stAngulo temp = { a1.grados + a2.grados, a1.minutos + a2.minutos, a1.segundos + a2.segundos, }; do { ++temp.minutos; temp.segundos -= 60; } while (temp.segundos >= 60); do { ++temp.grados; temp.minutos -= 60; } while (temp.minutos >= 60); return temp; } stAngulo operator-(stAngulo a1, stAngulo a2) { stAngulo temp = { a1.grados - a2.grados, a1.minutos - a2.minutos, a1.segundos - a2.segundos, }; do { --temp.minutos; temp.segundos = abs(temp.segundos); } while (temp.segundos <= 0); do { --temp.grados; temp.minutos = abs(temp.minutos); } while (temp.minutos <= 0); return temp; }
Alguna manera de poder usar int de tamaño 1 byte? Es solo una cuestión de optimización de memoria.