elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
21  Programación / Programación C/C++ / Re: problemas con librerias al pasar projecto C++ de linux a Win7 en: 1 Mayo 2012, 04:27 am
Para listar los archivos lo hacés con llamadas al sistema o con alguna librería.
Por ejemplo podés usar filesystem de Boost. Son multiplataforma.
Sería algo así:

Código
  1. #include <iostream>
  2. #include <boost/filesystem.hpp>
  3. #include <cstdio>
  4. int main(){
  5. boost::filesystem::path directorio( "./" ); // directorio actual
  6. boost::filesystem::directory_iterator final;
  7. boost::filesystem::directory_iterator it( directorio ); // puntero a los archivos del directorio
  8. while( ++it != final ){
  9. std::cout << it->path().leaf() << std::endl; }
  10. return 0;
  11. }

Con esto recorres un directorio especificado y mostras los nombres de los archivos.
Para renombrarlos podés usar rename, que está en cstdio:
Código
  1. rename( "cristian.jpg", "archivo_renombrado.jpg" );
22  Programación / Programación C/C++ / Re: problemas con librerias al pasar projecto C++ de linux a Win7 en: 30 Abril 2012, 23:26 pm
Hola xkiz. Dirent no viene con VC, viene con las librerías para posix. Pero podés probar con esta: http://www.softagalleria.net/dirent.php

Aca algunos otros links:
http://www.cplusplus.com/forum/general/24645/
http://stackoverflow.com/questions/5530933/dirent-h-in-visual-studio-2010-or-2008
http://en.wikipedia.org/wiki/Dirent.h

23  Programación / Programación C/C++ / Re: Ayuda con 2 problemas en C en: 28 Abril 2012, 00:10 am
Para el primer programa tendrías que poner un for dentro de otro. Si querés que el rectángulo tenga un "hueco" podés hacerlo así:
Código
  1. // ingresar valores de base y altura
  2. for( short a = 0; a < altura; a++ ){
  3. for( short b = 0; b < base; b++ ){
  4. if( a == 0 || a == altura-1 ) printf("$");
  5. else if( b == 0 || b == base-1 ) printf("$");
  6. else printf(" "); // muestra un espacio
  7. }
  8. printf( "\n" );
  9. }



Para el segundo problema podés inicializar el mínimo, el máximo y la media con el primer número que ingrese el usuario:
Código
  1. printf("Cuantos numeros va ingresar: \n");
  2. scanf( "%f",&cantidad );
  3.  
  4. printf("Ingrese sus numeros: \n");
  5. scanf( "%f", &numero );
  6.  
  7. minimo = maximo = media = numero;
  8. contador = 1;
  9.  
  10. for( int a = 1; a < cantidad; a++ ){ // el primer numero ya se ingreso
  11. scanf( "%f", &numero );
  12. media += numero;
  13. contador++;
  14. if( numero < minimo ) // nuevo minimo
  15. if( numero > maximo ) // nuevo maximo
  16. }
  17.  

Y tratá de usar nombres de variables más representativas.
24  Programación / Programación C/C++ / Re: ¿Hay algo que se me escapa de las manos en este código y me genera error? en: 27 Abril 2012, 06:21 am
Cambia esta parte:
Código
  1. Nodo *aux;
  2. aux = malloc( sizeof( Nodo ) );
Por esto:
Código
  1. Nodo *aux;
  2. aux = ( Nodo* )malloc( sizeof( Nodo ) );

En cuanto al cero no veo por qué no debería funcionar. Escribinos el mensaje de error.
25  Programación / Programación C/C++ / Re: trabajo con archivos.. en: 27 Abril 2012, 04:08 am
Hola ginny1685. Por empezar tenés varios errores básicos:
Código
  1. swith( c ) {

Debería ser:
Código
  1. switch( c ) { // falta una letra C

En este código:
Código
  1. case "\n"
  2. case "\0"
  3. case "\13"

Faltan los dos puntos de cada case y seguramente querés agregarles un break porque sino pasa de largo. Además de que lleva comillas simples, porque comparás un solo carácter.
Código
  1. case '\n':
  2.     // hacer cosas
  3. break;
  4. case '\0':
  5.     // hacer cosas
  6. break;
  7. case '\13':
  8.     // hacer cosas
  9. break;
26  Programación / Programación C/C++ / Re: Inquietud sobre función clear screen en: 25 Abril 2012, 21:36 pm
Citar
Hace poco leí sobre la función clear screen (limpiar pantalla), y quiero saber si esa función es la que utilizan los videojuegos.

Tenés dos tipos de aplicaciones:

Aplicaciones de consola: En las que generalmente se limpia pantalla con una llamada a system.
También está clrscr, pero no es una función estándar, sino una función de una librería del compilador Turbo c++.

Aplicaciones gráficas: Los videojuegos ( y cualquier programa ) con gráficos usan librerías gráficas y cada uno maneja la pantalla de acuerdo a esas librerías, pero no hay un Limpia pantallas genérico.
27  Programación / Programación C/C++ / Re: herencia en: 23 Abril 2012, 19:08 pm
Compilé tu código y la mayoría de los errores eran por la letra Ñ. Luego en la definición de la clase moto faltaba un punto y coma.

Y en estas líneas el último argumento que se le pasa al constructor de vehiculo tiene que ser simplemente "c" y no "*c".
Código
  1. moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial,const char* c,  const char *c1):
  2. vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c)

Aca está el código comentado:

Código
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4. //Declaracion clase VEHICULO
  5. class vehiculo
  6. {
  7. protected:
  8. char *cad;
  9. int litros;
  10. int kphMas;
  11. int kphMenos;
  12. int veloActual;
  13. int capaDepo;
  14. int año; // Error por la letra Ñ
  15. int capDepo;
  16. int liDepo;
  17. public:
  18. vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c); // Error por la letra Ñ
  19. ~vehiculo();
  20. void imprimir();
  21. void llenarDepo();
  22. void acelerar(int kphMas);
  23. void frenar(int kphMenos);
  24. char *leer(char *c);
  25. };
  26.  
  27. //Declaracion derivada MOTO
  28. class moto : public vehiculo
  29. {
  30. protected:
  31. int cilindrada;
  32. int cilinInicial;
  33. char *tipo;
  34. public:
  35. moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial, const char* c, const char *c1); // Error por la letra Ñ
  36. ~moto();
  37. char* leer1(char*c1);
  38. }; // Faltaba el punto y coma
  39.  
  40. //Constructor VEHICULO
  41. vehiculo::vehiculo(int veloInicial, int liInicial, int capDepoInicial, int anioInicial, const char *c) // Error por la letra Ñ
  42. {
  43. veloActual = veloInicial;
  44. liDepo = liInicial;
  45. capDepo = capDepoInicial;
  46. año = anioInicial; // Error por la letra Ñ
  47. cad = new char[strlen(c)+1];
  48. strcpy(cad, c);
  49.  
  50. }
  51.  
  52. //Destructor VEHICULO
  53. vehiculo::~vehiculo()
  54. {
  55. delete [] cad;
  56. }
  57.  
  58. //Metodo leer VEHICULO
  59. char *vehiculo::leer(char* c)
  60. {
  61. strcpy(c, cad);
  62. return c;
  63. }
  64.  
  65. // Metodo llenar deposito  VEHICULO
  66. void vehiculo::llenarDepo()
  67. {
  68. cout << "Estas llenando el deposito..." << endl;
  69. for(; liDepo < capDepo; liDepo++)
  70. {
  71. }
  72. cout << "El deposito esta lleno: " << liDepo<< " Litros."<< endl << endl;
  73. }
  74.  
  75. // Metodo imprimir VEHICULO
  76. void vehiculo::imprimir()
  77. {
  78. cout << "La velocidad actual es: "<< veloActual << endl;
  79. cout << "El año del coche es: " << año << endl; // Error por la letra Ñ
  80. cout << "En el deposito hay: " << liDepo << endl;
  81. cout << "El nombre del propietario es: " << *cad <<endl << endl;
  82. }
  83.  
  84. // Metodo acelerar VEHICULO
  85. void vehiculo::acelerar(int kphMas)
  86. {
  87. if(liDepo > 0)
  88. {
  89. cout << "Estas acelerando!" << endl;
  90.    veloActual = veloActual + kphMas;
  91.    liDepo = liDepo - kphMas / 10;
  92.    cout << "Su velocidad actual es: " << veloActual << endl;
  93.    cout << "Su deposito actual es: " << liDepo << endl << endl;
  94. }
  95. else
  96. {
  97. cout << "El deposito esta vacio!" << endl << endl;
  98. }
  99. }
  100.  
  101. // Metodo frenar VEHICULO
  102. void vehiculo::frenar(int kphMenos)
  103. {
  104. if( veloActual - kphMenos > 0)
  105. {
  106. cout << "Estas frenando!" << endl;
  107. veloActual = veloActual - kphMenos;
  108. cout << "Su velocidad actual es: " << veloActual << endl << endl;
  109. }
  110. else
  111. {
  112. veloActual = 0;
  113. cout << "Ya estas parado!" << endl << endl;
  114. }
  115. }
  116.  
  117. // Constructor MOTO
  118. moto::moto(int veloInicial,int liInicial, int capDepoInicial, int anioInicial,  int cilinInicial,const char* c,  const char *c1): // Error por la letra Ñ
  119. vehiculo( veloInicial,  liInicial,  capDepoInicial, anioInicial, c) // Error por la letra Ñ
  120. {
  121. veloActual = veloInicial;
  122. liDepo = liInicial;
  123. capDepo = capDepoInicial;
  124. año = anioInicial; // Error por la letra Ñ
  125. cad = new char[strlen(c)+1];
  126. strcpy(cad, c);
  127. cilindrada = cilinInicial;
  128. tipo = new char[strlen(c1)+1]; // habia una "m" al comienzo
  129. strcpy(tipo, c1);
  130. }
  131.  
  132. // Destructor Moto
  133. moto::~moto()
  134. {
  135. delete [] tipo;
  136. }
  137.  
  138. // Metodo leer MOTO
  139. char *moto::leer1(char* c1)
  140. {
  141. strcpy(c1, tipo);
  142. return c1;
  143. }
  144.  
  145. int main(){
  146. return 0;
  147. }
  148.  
28  Programación / Programación C/C++ / Re: manejo de archivos en C++ en: 19 Abril 2012, 03:45 am
Código
  1. expresion.clear();
No sirve para vaciar la variable, sino para vaciar el estado de error.
Para esto hacé lo siguiente:
Código
  1. expresion.str( "" );

Después, yo siempre creo que está muy mal usar funciones/métodos void. Algún valor deberías retornar, y más cuando estás tratando con archivos. Por ejemplo, deberías validar que se haya abierto el archivo primero:
Código
  1. f.open ( "programar.txt", ifstream::in );
  2. if( !f.good ){
  3.     cout << "Error abriendo el archivo." << endl;
  4.     return false;
  5. }
  6. while ( !f.eof() ){
  7.     // hacer cosas
  8. }

En cuanto al resto, trata de no usar tantos whiles. Del archivo de texto que abrís deberías tomar letra por letra hasta encontrar un espacio. En ese punto almacenas los valores que necesites, y continuas tomando caracteres.
29  Programación / Programación C/C++ / Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] en: 17 Abril 2012, 05:06 am
La definición es así:
Código
  1. static string MenssageArrival(unsigned int uInt_ID, string Str_Msg); // dentro de la clase
  2. string Game::MenssageArrival(unsigned int uInt_ID, string Str_Msg){ // fuera de la clase
  3. string retorno;
  4. return retorno;
  5. }

Si querés manipular las variables miembro de la clase creo que sería mejor pasarle un puntero del objeto que estás usando, en lugar de pasarle el método.
30  Programación / Programación C/C++ / Re: Problema al pasar funcion como parametro a un inicializador de clase [C++] en: 17 Abril 2012, 04:13 am
Citar
(pido disculpas por no aclarar que era desde otra clase)
Ah ! Ahora sí tiene sentido !.

Te faltó poner static en el método MenssageArrival.
Ese código quedaría así:
Código
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class ServerDosGame{
  5. public:
  6. string (*fMsg)(unsigned int uInt_ID, string Str_Msg);
  7. ServerDosGame( unsigned int & NumberOfPlayers, unsigned int & uInt_StateGame, string (FuncOfMsg)(unsigned int uInt_ID, string Str_Msg) ){
  8. fMsg = FuncOfMsg;
  9. }
  10. };
  11.  
  12. class Game{
  13. public:
  14. unsigned int uInt_NumberOfPlayers, uInt_StateGame;
  15. ServerDosGame *Server;
  16.  
  17. // string MenssageArrival(unsigned int uInt_ID, string Str_Msg){
  18. static string MenssageArrival(unsigned int uInt_ID, string Str_Msg){ // Debería ser así
  19. string retorno;
  20. return retorno;
  21. }
  22.  
  23. int run(){
  24. Server = new ServerDosGame(uInt_NumberOfPlayers, uInt_StateGame, MenssageArrival);
  25. return 1;
  26. }
  27. };
  28.  
  29. int main( int argc, char **argv ){
  30. Game *game = new Game();
  31. return game->run();
  32. }

Static es para poder acceder al método sin declarar una instancia de la clase. Ahora reparando en el código original te debería compilar bien.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines