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

#81
Holas:

Tengo un pequeño problemilla y es que dentro de un analisis de casos (switch) no se me ejecuta el primer cin.getline(). Ejemplo:

Código (cpp) [Seleccionar]
switch (opcion)
       {
           case 1:
               while (pEA->pSiguiente != 0)
               {
                   pEA = pEA->pSiguiente;
               }

               pEA->pSiguiente = new agenda;
               pEA = pEA->pSiguiente;

               cout << "Introduzca el nombre: ";
               cin.getline (nuevoNombre, tamNombre); //Este cin.getline() no se ejecuta
               pEA->configurarNombre (&nuevoNombre[0]);
               cout << endl;

               cout << "Introduzca el correo: ";
               cin.getline (nuevoCorreo, tamCorreo);
               pEA->configurarCorreo (&nuevoCorreo[0]);
               cout << endl;

              ...


He probado quitando la parte de "Introduzca el nombre" para comprobar que no es un error sintáctico y lo que sucede es que no se ejecuta el cin.getline del correo, es decir, el primer cin.getline del "case" se omite. Lo mismo me sucede en "case 2: " etc.

Para corroborarlo he probado a poner antes del "Introduzca el nombre" un cin.getline(cadena_prueba, 30), y entonces si que se ejecuta correctamente el del nombre.

¿Alguno sabe por qué el primero siempre se omite?.

Gracias y saludos.
#82
¿Podrías indicarme dónde has descargado la librería "graphics.h" o "graph.h"?, no la encuentro por ningún lado, gracias.
#83
Buenas:

Para centrar el texto tienes el famoso "gotoxy(x, y)" de la biblioteca "conio.h" pero es un crimen contra la programación, está totalmente desaconsejada esa librería asi que si la ves por ahi no la uses, de la que no tengo malas referencias es de la función "setw(num)" de la librería "iomanip" que viene por defecto en muchos compiladores. Aqui te dejo un ejemplo:

Código (cpp) [Seleccionar]
#include <iostream>
#include<iomanip>
using namespace std;

int main()
{
    cout << setw(30) << "texto" << setw(30) << "texto" << endl;
}


Acerca de lo de "presionar ESC para volver al inicio" hasta donde tengo entendido hay que usar una API para leer el "presionar" o "soltar" una tecla, para lo cual primero debes aprender a programar bien en C++ antes de meterte en esas cosas, lo que si que puedes hacer es un menú y un bucle:

Código (cpp) [Seleccionar]
while (opcion != 0)
{
    cout << "1- Opcion" << endl << "2- Opcion" << endl << "3-Salir";
    cin >> opcion;

    switch (opcion)
    {
       case 1:
           //Instrucciones
           break;
       case 2:
           //Instrucciones
           break;
        case 3:
            opcion = 0; //Al asignarle 0 a "opcion" saldrá del bucle y no volverá a mostrar el menú
            break;
}


Y para comprobar que la opcion seleccionada es correcta debes usar otro bucle dentro del anterior:

Código (cpp) [Seleccionar]
while (opcion < 1 || opcion > 3) //Mientras se salga del rango de las opciones se volverá a imprimir el mensaje y a pedir una opcion
{
    cout << "1- Opcion" << endl << "2- Opcion" << endl << "3-Salir";
    cin >> opcion;
}


Espero que te sirva, saludos.
#84
Muchas gracias, lo probaré y comento.
#85
Buenas:

Me gustaría saber cómo leer de caracter en caracter un documento, por ejemplo:

Código (c++) [Seleccionar]
#include <iostream>
#include <fstream>
using namespace std;

int main ()
{
   ifstream ifs ("entrada.txt");

   cout << ifs[5]; /*Esto está mal pero viene a sugerir lo que busco
                   Quiero imprimir el elemento número 5 del fichero*/

   return 0;
}


Está la posibilidad de guardar el contenido del fichero en una tabla con "ifs.getline (tabla, 256)", el caso es que ni sé el tamaño del texto ni me interesa guardarlo todo en una tabla cuyos elementos son del mismo tipo sino en varias tablas para separar los caracteres de los operandos numéricos. Por tanto debo recorrer el fichero elemento a elemento para comprobar su tipo.

Gracias y saludos.
#86
Ups, no me di cuenta.
#87
No sé cuál será el código en la librería "math.h" pero es tan sencillo como un bucle:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
int x1, exponente, resultado;

cout << "Base: ";
cin >> x1;
cout << endl << "Exponente: ";
cin >> exponente;

resultado = x1;

if (exponente = 0) resultado = 1;
else if (exponente = 1) resultado = x1;
else {
for (int i = 1; i < exponente; i++)
{
resultado *= x1;
}

if (exponente < 0) resultado = 1 / resultado; //Si el exponente es negativo...

cout << endl << "Resultado: " << resultado;

return 0;
}
}


Ahora mismo no tengo compilador para probarlo, pero creo que no tiene ningún error. Saludos.

Edito: Vale, me doy cuenta de que faltaría modificar el matiz para un exponente negativo, voy a ver como sería y comento.

Edito 2: Corregido, si el exponente es negativo basta con dividir 1 entre el resultado.
#88
Buenas:

A parte de lo que te ha comentado rir3760 deberías, sobre lo del tamaño se debe a cómo incluyes las librerías, esto es, existen dos modos:

Librería estática: Se incluye en el ejecutable final todas las librerías que has usado en el programa.
Librería dinámica: No se incluyen las librerías sino que se añade información sobre dónde están situadas en el PC y al procesar el ejecuta ble se buscan las librerías y para usar las funciones.

Lógicamente si compilas con el modo "librería estática" el ejecutabe pesará más ya que se incluye la librería completa, pero esto tiene la ventaja de que si llevas el programa a otro PC no tendrás problemas de que en dicho PC no estén las librerías ya que ya van dentro del ejecutable.

Fíjate si el compilador en C te pone por defecto librería dinámica y en C++ librería estática.

Sobre el tamaño de las variables eso es en tu caso, con tu procesador y compilador, son ellos dos los que deciden qué tamaño debe tener cada tipo, en otro PC serán otros tamaños, de lo único que se puede estar seguro es que el "short int" es de menor tamaño que el "int" y este a su vez menor que el "long int".

Saludos.
#89
Si no quieres ver punteros se puede hacer paso por referencia puro:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

void funcion (int &sobrenombreVariable) /* Esto se vuelve un "sobrenombre" de la variable, todas las modificiaciones
que hagas en "sobrenombreVariable" se harán en "variable" */
{
sobrenombreVariable = 10;
}

int main ()
{
int variable = 0;
funcion (variable); //Le pasamos la variable a la que queremos que afecte el sobrenombre

return 0;
}


Busca "paso por referencia" y encontrarás más información. Saludos.
#90
¿Y eso no es ilegal?, es decir, pueden compartir en los gestores p2p lo que quieran, pero que metan malware en mi ordenador, rastreen mi IP y guarden constancia de lo que yo descargo o dejo de descargar sin mi consentimiento ¿no es ilegal?, encima ellos mismos admiten que han llevado tales actuaciones; ¿no se les puede denunciar por meter malware en PC's ajenos?.