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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / cin.getline problemas en C++ en: 23 Mayo 2012, 19:24 pm
Buenos días a todos.

Tengo un problema con un ejercicio y no se por donde pillarlo. Trata sobre una clase de teléfonos y tengo que hacer la homonimia de operadores para introducir telefonos desde cout y cin.

El formato de entrada seria por ejemplo -->  (800) 555-1212
El programa debería de imprimirlo así.

El código es el siguiente:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class phone {
  6.   friend istream &operator>> (istream &input, phone &num);
  7.   friend ostream &operator<< (ostream &output, phone &num);
  8. private:
  9.   char areaCode[4];
  10.   char exchange[4];
  11.   char line[5];
  12. };
  13.  
  14. ostream &operator<< (ostream &output, phone &num)
  15. {
  16.   output << "(" << num.areaCode << ") " << num.exchange << "-"
  17.             << num.line << endl;
  18. }
  19.  
  20. istream &operator>> (istream &input, phone &num)
  21. {
  22.   input.ignore();                                  // Ignora el (
  23.   input.getline(num.areaCode, 4);        // Lee el número.
  24.   input.ignore(2);                                // Ignora el ") "
  25.   input.getline(num.exchange, 4);        // Lee el número.
  26.   input.ignore();                                  // Ignora el "-"
  27.   input.ignore(num.line, 5);                  // Lee el último número.
  28.  
  29.   return input;
  30. }
  31.  
  32. int main()
  33. {
  34.   phone test;
  35.  
  36.   cout << "Insert your phone \n";
  37.   cin >> test;
  38.   cout << "Your phone is : " << test << end;
  39.  
  40.   return 0;
  41. }
  42.  

Bien, el problema que tengo es que sale de la siguiente forma:
(salida del programa)
------------------------------------------------------------------------
Insert your phone
(800) 555-1212
Your phone is : (800)  -
------------------------------------------------------------------------

Lo he depurado con gdb y es como si no leyera con getline. He estado mirando cosas por ahí como hacer antes un ignore por si hubiera algún carácter de terminación o hacer clean(). Pero nada ...

A ver si me pudieran ayudar por favor.

Gracias por la atención.
2  Programación / Programación C/C++ / ¿Cómo descomprimir archivos en rar con C? en: 9 Abril 2012, 15:35 pm
Buenas a todos.

Estoy intentando hacer un porgrama que maneje archivos comprimidos en rar. He estado buscando y he encontrado para .zip y .gz ( con zlib ) pero no encuentro nada decente que funcione para archivos .rar.

¿Alguien sabe de alguna librería o algo para poder descomprimir?.

Estoy en un OS Linux, también he pensado usar las llamadas del sistema para usar la línea de comandos y descomprimir por ahí. Pero no se si abrá incompatibilidad a la hora de funcionar en Windows.

Usé una librería sin éxito, fue http://www.unrarlib.org/ pero hasta el ejemplo que venía ya hecho me dió error xD.

Un saludo y gracias.
3  Programación / Programación C/C++ / Iniciar un programa al arrancar el PC. en: 27 Marzo 2012, 15:28 pm
Buenas a todos.

Estoy intentando averiguar la forma de hacer un pendrive booteable con un menu y que abra varias carpetas con ejecutables dentro. La finalidad es tener un pedrive con varias isos dentro ( para la instalacion de windows, linux, etc).

Tengo el problema que no se como hacer el programa para que ejecute instrucciones cuando ni el sistema operativo está cargado. No se como empezar, se que tengo que tener un autorun.inf para iniciar mi programa.

¿Alguien sabe de algún hilo del que pueda tirar?, es que por más que busco no encuentro nada, nada más que como hacer programas para que se inicien al inicio de windows y eso yo no lo estoy buscando ...

Un saludo y gracias :)
4  Programación / Programación C/C++ / Problema con array de punteros al pasarlo como argumento en una fucnion (Solved) en: 4 Febrero 2012, 15:43 pm
Buenas a todos,

Me estoy leyendo un libro de programación y tengo que hacer un ejercicio que es de hacer un programa que simule barajar cartas.

Resulta que al pasar los dos arrays de punteros que contienen los nombres de las cartas me da error al compilar.

El error es :
-----------------------------------------------------------------------------------------------------------------------
barajar-naipes.c: In function ‘main’:
barajar-naipes.c:18:3: warning: passing argument 2 of ‘mostrarBaraja’ from incompatible pointer type [enabled by default]
barajar-naipes.c:7:6: note: expected ‘const char **’ but argument is of type ‘char **’
barajar-naipes.c:18:3: warning: passing argument 3 of ‘mostrarBaraja’ from incompatible pointer type [enabled by default]
barajar-naipes.c:7:6: note: expected ‘const char **’ but argument is of type ‘char **’
------------------------------------------------------------------------------------------------------------------------

El código C es :

-----------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void barajar(int [][13]);
void resetBaraja(int [][13]);
void mostrarBaraja(int [][13], const char *[], const char *[]);

int main()
{
  int baraja[4][13] = {0};
  char * carta[13] = {"As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Jack", "Reina", "Rey" };
  char * palo[4] = {"Picas", "Treboles", "Corazones", "Diamantes"};
  
  srand(time(NULL));
  resetBaraja(baraja);
  barajar(baraja);
  mostrarBaraja(baraja, carta, palo);
  
  return 0;
}

void mostrarBaraja(int baraja[][13], const char *carta[], const char *palo[])
{
  char row, column, leftCard;
  
  for ( leftCard = 0 ; leftCard < 53 ; leftCard++ )
    
    for ( row = 0 ; row < 4 ; row++ )
      
      for ( column = 0 ; column < 13 ; column++ )
   
   if ( baraja[row][column] == leftCard ) {
     printf("%5s de %-8s %c", carta[column],  palo[row], leftCard % 2 ? '\n' : '\t' );
     getchar();
     row = column = 20;
   }
   
}

void barajar(int baraja[][13])
{
  char carta, palo, i;
  
  for (i = 0 ; i < 53 ; i++ ) {
    carta = rand() % 14;
    palo = rand() % 5;
    
    if ( baraja[palo][carta] != -1 )
      i--;
    else
      baraja[palo][carta] = i;
  }
  
  return;
}

void resetBaraja(int baraja[][13])
{
  char i, j;
  
  for ( i = 0 ; i <= 3 ; i++ )
    
    for ( j = 0 ; j <= 13 ; j++ )
      baraja [j] = -1;
}

------------------------------------------------------------------------------------------------------------------------

Gracias por adelantado.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines