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ú

Temas - vikour92

#1
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 (cpp) [Seleccionar]

#include <iostream>

using namespace std;

class phone {
   friend istream &operator>> (istream &input, phone &num);
   friend ostream &operator<< (ostream &output, phone &num);
private:
   char areaCode[4];
   char exchange[4];
   char line[5];
};

ostream &operator<< (ostream &output, phone &num)
{
   output << "(" << num.areaCode << ") " << num.exchange << "-"
             << num.line << endl;
}

istream &operator>> (istream &input, phone &num)
{
   input.ignore();                                  // Ignora el (
   input.getline(num.areaCode, 4);        // Lee el número.
   input.ignore(2);                                // Ignora el ") "
   input.getline(num.exchange, 4);        // Lee el número.
   input.ignore();                                  // Ignora el "-"
   input.ignore(num.line, 5);                  // Lee el último número.

   return input;
}

int main()
{
   phone test;

   cout << "Insert your phone \n";
   cin >> test;
   cout << "Your phone is : " << test << end;

   return 0;
}


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