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

#71
¿Y se puede saber porqué no te gustan?
#72
Bueno, adjunto aquí los archivos para el que los quiera ver. Se aceptan críticas, solo tengan en cuenta que obviamente no está terminado, es mi primer programa "interesante" y que no voy a la uni todavía, aprendí todo por la pc.
Me gustaría más que nada que me dijeran qué se podría optimizar/mejorar en el código. ;-)

main.cpp
Código (cpp) [Seleccionar]
//
// Name: AdPa
// Version: 0.9
// Description: Prints out hours as many hours as you worked in a file and gives you the total amount
// that you will get.
// Author: (c) Leo Juszkiewicz <leo.jr90@yahoo.com>
// License: Freeware
//

#include "stdafx.h"
#include <iostream>
#include "Functions.h"
#include <fstream> // file i/o
#include <windows.h> // Sleep()
#include <string>
#include <cstdio> // remove()
#include <ctime>
#include <iomanip>
#include <vector>

using namespace std;

const double versionPrograma = 0.9;

int main()
{
const char nombArchivo[] = "horas.txt";
system("title AdPa ");
system("COLOR 1E");
do
{
system("cls");
/*char fecha[9];
_strdate_s(fecha);
cout << fecha << endl;*/
Raya();
cout << "\t\tBienvenido a AdPa " << versionPrograma << endl;
Raya();

cout << endl << "Selecciona una opcion: " << endl;
cout << endl << "\t 1. Agregar horas" << endl;
cout << endl << "\t 2. Ver archivo" << endl;
cout << endl << "\t 3. Eliminar archivo" << endl;
cout << endl << "\t 4. Hacer cuenta total" << endl;
cout << endl << "\t 5. Licencia" << endl;
cout << endl << "\t 6. SALIR" << endl << endl;
cin >> Opcion;



switch (Opcion)
{

case 1:
{

int nuevo = 0;
// Primero leemos para ver si existe o no
ifstream Archivo(nombArchivo);
if (Archivo)
{
cout << "\nArchivo existente... Abriendo para escritura" << endl << endl;
// No escribir "titulo"
nuevo = 1;
}
Archivo.close();

ofstream escrArchivo(nombArchivo, ios::app);

char tiempo[25];

cout << "\nCuantas horas trabajaste hoy? (ej. 8 7.00-15.00)" << endl;
cin.ignore();
cin.getline(tiempo, 25);

// Si no existe, escribir esto...
if(nuevo == 0)
{
escrArchivo << "Horas\t Horario" << endl;
escrArchivo << "-----------------------------------" << endl;
}

// Escribe las horas en el archivo
for(unsigned int i = 0; i < strlen(tiempo); i++)
{
if(tiempo[i] == ' ')
tiempo[i] = '\t';

escrArchivo << tiempo[i];
}

// Nueva linea para la proxima vez
escrArchivo << endl;

escrArchivo.close();
Final();
}
break;

case 2:
{
ifstream lee;
lee.open(nombArchivo);
if (!lee)
{
cout << "\nERROR. El archivo no existe (lo renombraste/eliminaste?)" << endl << endl;
Sleep(4000);
break;
}
cout << endl << "Quieres ver el archivo en la consola (1 - aqui) o en notepad (2)?" << endl;
int verArch = -1;
cin >> verArch;

// Notepad
if(verArch == 2)
{
system(nombArchivo);
}
else
{
while(lee)
{
std::string Archivo;
getline(lee, Archivo);
cout << Archivo << endl;
// Paramos el programa para que se pueda ver el archivo en consola
cin.get();
}
lee.close();
}

Final();
}
break;

case 3:
{
ifstream eliminaArch(nombArchivo);
if(eliminaArch.fail())
{
cerr << "El archivo no existe! (Que querias eliminar?)" << endl;
Sleep(5000);
}
else
{
cout << "Estas seguro/a que quieres eliminar el archivo? (S - Si | N - No)" << endl;
char elim = '0';
cin >> elim;

if(elim == 'S' || elim == 's')
{
eliminaArch.close();
cout << endl << "Eliminando... " << endl;
ProgressBar();
Sleep(1000);

if (remove(nombArchivo) != 0)
cout << endl << "Hubo un error tratando de eliminar el archivo" << endl;
else
cout << "ELIMINADO" << endl;
}
}

eliminaArch.close();

Final();
}
break;

case 4:
{
// Si no se puede abrir, ni siquiera escribas...
ifstream haceCuenta(nombArchivo);
if (!haceCuenta)
{
cerr << "ERROR. No se puede abrir el archivo o no existe" << endl;
Sleep(4000);
break;
}
cout << "Cuanto cobras por hora? (solo se guardara en el archivo, nadie se enterara ;) )" << endl;
float cobroHora;
cin >> cobroHora;
if(cobroHora <= 20.70)
cout << endl << "Bueno, como los ishiros. Hay que ponerse a estudiar!" << endl;
else if(cobroHora > 20.70 && cobroHora < 25.0)
cout << endl <<  "Sueldo razonable" << endl;
else if(cobroHora > 25.0)
cout << endl <<  "Ojala todos cobraran eso" << endl;


vector<int> vint;
int n;
string str;
while(!haceCuenta.eof() && !haceCuenta.fail())
{
if(!isdigit(haceCuenta.peek()))
{
getline(haceCuenta, str);
continue;
}
haceCuenta >> n;
vint.push_back(n);
getline(haceCuenta, str);
}
if(!haceCuenta.eof())
{
cout << "Error leyendo el archivo" << endl;
return -1;       
}
int totalHoras=0;
for(vector<int>::size_type x=0; x<vint.size(); ++x)
{
cout << setw(2) << vint[x] << endl;
totalHoras += vint[x];
}
cout << endl << "Haciendo cuenta... " << endl;
ProgressBar();
Sleep(1000);
ofstream escribe (nombArchivo, ios::app);
escribe << endl << "----------------------------" << endl;
escribe << "TOTAL HORAS: " << totalHoras << endl;
escribe << "HORA: " << cobroHora << " shekel" << endl;
escribe << "SUELDO TOTAL: " << static_cast<float>(totalHoras * cobroHora) << " shekel";

cout << "HORAS: " << totalHoras << endl;
cout << "SUELDO TOTAL: " << static_cast<float>(totalHoras * cobroHora) << endl;


Final();
}
break;

case 5:
system("cls");
system("COLOR A");
Raya();
cout << "\a\t\t\tLICENCIA" << endl;
Raya();
//setlocale(LC_ALL, "spanish");
cout << "AdPa " << versionPrograma <<
" es freeware, lo cual implica que es distribuido gratuitamente. " <<
"\nPuedes copiar, distribuir, modificar (si sabes, claro) total o parcialmente" <<
" este programa, siempre y cuando reserves derechos de autor.\n\n" <<
"\nDudas? Sugerencias? Escribeme... <leo.jr90@yahoo.com>\n\n" <<
"\t (c) Leonardo Juszkiewicz";
cin.ignore();
cin.get();
break;

default:
// Si presiona 6 (salir) no mostrar esto
cin.ignore();
if(Opcion != 6)
{
cerr << "Opcion no valida";
Sleep(4000);
}
break;

}

} while(Opcion != 6);

cout << endl << "Gracias por usar AdPa " << versionPrograma << endl;
Sleep(2500);

return 0;
}


Functions.h
Código (cpp) [Seleccionar]
// Funciones y declaraciones de ellas para main.cpp
#ifndef FUNC_H
#define FUNC_H


#include "stdafx.h"
#include <iostream>
#include <windows.h>

using namespace std;

int Opcion = 400;

// Imprime una raya para dividir (-)
void Raya()
{
for(int i = 0; i <= 60; i++)
{
cout << "-";

if (i == 60)
cout << endl;
}
}

// Progress bar
void ProgressBar()
{
char cargador[] = {'\\','|','/','-','|'};

for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 5; j++)
{
cout << cargador[j] << "\r";
Sleep(100);
}
}

}


// Mensaje al final de la operacion
void Final()
{
cout << endl << "\n[Presiona 6 para salir. Una tecla diferente para otra operacion]" << endl;
cin >> Opcion;
}

#endif
#73
Bueno pongo el código:
Código (cpp) [Seleccionar]
vector<int> vint;
int n;
string str;
while(!haceCuenta.eof() && !haceCuenta.fail())
{
if(!isdigit(haceCuenta.peek()))
{
getline(haceCuenta, str);
continue;
}
haceCuenta >> n;
vint.push_back(n);
getline(haceCuenta, str);
}
if(!haceCuenta.eof())
{
cout << "Error leyendo el archivo" << endl;
return -1;       
}
int totalHoras=0;
for(vector<int>::size_type x=0; x<vint.size(); ++x)
{
cout << setw(2) << vint[x] << endl;
totalHoras += vint[x];
}
#74
Código (cpp) [Seleccionar]
#ifdef __WIN32__
system("cls");
#elif defined __LINUX__
system("clear");
#endif


O también puede ser WINBUILD (en vez de __WIN32__) y LINUX (en vez de __LINUX__), depende el compilador.
#75
Y también seguro tendrás un warning porque pierdes los decimales por guardar la cantidad en un int y no en un double.
#76
Troyano no lo creo porque las 3 pc's están bien (una de ellas acaba de ser formateada). La contraseña es alfanumérica (hexadecimal para ser exacto).
Intentaré esconderla, pero ¿qué es lo de la dirección MAC?. Vi la opción pero como no entiendo, no toqué.
#77
Cita de: rofellos en 23 Noviembre 2010, 21:48 PM
En cuanto a lo de en qué lenguaje empezar a programar... yo en la facultad empecé con C++... pero la verdad esque es un lenguaje poco útil, para lo complicado que es... así que apoyo la sabiduría popular diciendote que empieces con python, y que no te desanimes :)
Poco útil no, en C++ se puede hacer de todo, pero como dices es un poco complicado (a comparación de VB o Python).
#78
GNU/Linux / Re: Algun MSN?
23 Noviembre 2010, 21:45 PM
eMeSeNe me va muy bien (tengo Gentoo). Si nada te anda, intenta los clientes web tipo meebo, ebuddy...

¿Podrías ejecutar los programas (emesene, amsn, kmess...) desde la consola y poner la salida acá?
#79
Si sería en ajax al estilo facebook estaría genial. :D
#80
Programando, leyendo (libros, pdf's no importa qué), preguntando en foros.