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

#11
este programita sencillito, por ejemplo en si yo le ingresara una sifra mayor a 7 digitos(ej: 1234567) el programa da como salida 1.23457e+06 y si lo cambio a tipo double sucede lo mismo. ¿ que puedo hacer en esos casos ?

Código (cpp) [Seleccionar]
#include <iostream.h>
int main()
{      double x;
       cout<<"Ingrese el valor de X: ";
       cin>>x;
       cout<<endl<<"usted ingreso "<<x<<endl;
       system("pause");
        return 0;
}
#12
ahh en la parte del system("pause") y el cin.get() ellos me funcionan dentro del programa, pero por ejemplo en el caso particular del destructor, estoy dando la salida del mensaje "se ejecuta el DESTRUCTOR" mi pregunta es ¿ como hago para usar alguno de esos codigos para q me pare el programa en el momento en q se ejecuta el destructor para poder ver el mensaje ?
#13
Buenas.
Estoy empezando a programar en c++ y estoy aprendiendo parte de las clases, constructores y destructores... en fin. Tengo un codigo que aplica estas 3 cositas. El ejercicio me pide 2 constructores, uno con la informacion de las distancias y otro sin parametros (sobrecarga). Yo hize uno de esos constructores pero no estoy muy seguro cual de los 2 fue el que logre hacer(supongo que es el que no tiene parametros), ahora lo q nose muy bien es como hacer el otro constructor. Ademas a eso, acepto cualquier sugerencia con respecto al codigo que hize y por ultimo, en el codigo del destructor le deje un mensaje para que mostrara ¿ existe algun codigo que haga que pare el programa para poder visualizar el mensaje, ya que use el system("pause") y el cin.get() y ninguno me funciono.
NOTA: el programa recibe 3 distancias y calcula el perimetro.
Código (cpp) [Seleccionar]
#include <iostream.h>
#pragma hdrstop
#pragma argsused

class triangulo
{     private:
               float d1,d2,d3;
      public:
               triangulo();
               float perimetro(float d1,float d2,float d3);
               ~triangulo(){cout<<"Se ejecuta el DESTRUCTOR";}

};

triangulo::triangulo() //CONSTRUCTOR
{ cout<<"inicia el constructor"<<endl;
d1=0;
d2=0;
d3=0;
}
float triangulo::perimetro(float d1, float d2, float d3)
{ float perim;
  perim=d1+d2+d3;
  return perim;
}

int main()
{
  triangulo mitriangulo;
  int dist1, dist2, dist3;
  cout<<"Ingrese las 3 distancias(xx xx xx): ";
  cin>>dist1>>dist2>>dist3;
  cout<<"el perimetro es "<<mitriangulo.perimetro(dist1,dist2,dist3)<<endl;
  system("pause");
  return 0;
}
#14
Programación C/C++ / Validar algunas cosas en C++
6 Diciembre 2013, 16:33 PM
Usando Builder en C++ quisiera saber algunas formas de validar, por ejemplo, si quiera guardar un entero, y quisiera validar que se ingresara exlusivamente el entero y no un caracter o una cadena de carcteres, y de igual forma si quisiera guardar una cadena de caracteres y quisiera validar para que no ingresen numeros. como  sería el codigo ?
#15
Muchas gracias por sus consejos, muchos me dicen sobre no usar la librería conio.h pero el problema esque asi lo evalua la profesora en la universidad. Otra cosita es sobre la limpieza del buffer utilizando el codigo...
    while(getchar()!='\n');
La profesora nos ha dicho sobre este codigo que limpia el buffer tambien...
fflush(stdin);
mi pregunta, ¿Hacen la misma funcion?¿y que diferencia hay en colocar un fflush(stdin) y un fflush(stdout). Yo pues la verdad, me gusta experimentar metiendo codigos y ver como interactuan, pero la verdad esque no veo que me altere ni me modifique el programa si las utilizo o no...

Otra cosita, les habia comentado que el codigo que habia posteado era un pedazo de funcion, ahora le fui a agregar otra funcion(y es por eso que habia agregado el switch), bueno pues resulta que  es el calculo de una funcion matematica, al cual le tengo que pedir que ingrese un valor numerico que sea menor a 1 y diferente de -1/2 y que ademas tengo que validar. el programa corre normal, pero cuando le ingreso el valor se queda en el ciclo y no sale nunca, solamente funciona cuando le doy al valor de la variable el numero 0, alli si funciona, aqui esta el codigo...//Cuarto Programa de funciones
#include <stdio.h>
#include <conio.h>
#include <math.h>
//Prototipos
int menu(void);
int semana(char);
float fun_x(float);
//Programa Principal
void main()
{ int opcion;
  char dia;
  float valor;

  while((opcion=menu())!=3)
  { switch(opcion)
    { case 1: clrscr();
              printf("\n\nDebe ingresar las letras en minuscula, a excepcion del dia miercoles en\n donde debes ingrasarla en mayuscula");
              printf("\nIngrese la primera letra del dia de la semana: ");
              scanf(" %c",&dia);
              printf("\nEl dia de la semana que le corresponde es el %d",semana(dia));
              getch();
              break;
      case 2: clrscr();
              do
              { printf("\nIngrese el valor de X: ");
                scanf("%f",&valor);
                if(valor!=(-1/2) || valor>1)
                { printf("debe ingresar un valor menor a 1 y diferente de -1/2");
                  getch();
                }
              }while(valor!=(-1/2) || valor>1);
              printf("\n\nEl valor de la funcion es de %.2f",fun_x(valor));
              getch();
              break;
    }
  }
}
//Funciones
int menu(void)
{ int opc;
  clrscr();
  printf("\t\t\tMENU");
  printf("\n1...Para los dias de la semana");
  printf("\n2...Para calcular el valor de una funcion");
  printf("\n3...SALIR");
  do
  { printf("\n\nIngrese su opcion y presione enter: ");
    scanf("%d",&opc);
    if(opc<1 || opc>3)
    { printf("\nHa ingresado un valor incorrecto!!!");
      getch();
    }
  }while(opc<1 || opc>3);
  return opc;
}

int semana(char fdia)
{ int fndia;
  switch(fdia)
  { case 'd': fndia=1;
              break;
    case 'l': fndia=2;
              break;
    case 'm': fndia=3;
              break;
    case 'M': fndia=4;
              break;
    case 'j': fndia=5;
              break;
    case 'v': fndia=6;
              break;
    case 's': fndia=7;
              break;
  }
return fndia;
}

float fun_x(float fx)
{ float fresul;

  fresul=pow(fx,(2*fx+1))-5*pow(M_E,(3*log10(fabs(sqrt(1-fx)))));
  return fresul;
}


PD: esta bien que en los codigos utilize quebrados(fracciones), o debería utilizar decimales, lo digo en el caso de la segunda funcion en donde debo validar el valor ingresado por el usuario
#16
Buenas tengo este problema, estoy creando un pedazo de funcion(le tengo que agregar mas funciones) y estoy usando la estructura switch, mi problema es que cuando el programa corre, no entra en la funcion, aqui esta el codigo:

//Ultimo Programa de funciones
#include <stdio.h>
#include <conio.h>
//Prototipos
int menu(void);
int semana(char);
//Programa Principal
void main()
{ int opcion;
  char dia;
  float valor;

  while((opcion=menu())!=2)
  { switch(opcion)
    { case 1: clrscr();
              printf("\nIngrese la inicial del dia: ");
              scanf("%c",&dia);
              printf("\nEl dia de la semana que le corresponde es el %d",semana(dia));
              break;
    }
  }
}
//Funciones
int menu(void)
{ int opc;
  clrscr();
  printf("\t\t\tMENU");
  printf("\n1...Para los dias de la semana");
  printf("\n2...SALIR");
  do
  { printf("\n\nIngrese su opcion y presione enter: ");
    scanf("%d",&opc);
    if(opc<1 || opc>2)
    { printf("\nHa ingresado un valor incorrecto!!!");
      getch();
    }
  }while(opc<1 || opc>2);
  return opc;
}

int semana(char fdia)
{ int fndia;
  switch(fdia)
  { case 'd': fndia=1;
              break;
    case 'l': fndia=2;
              break;
    case 'm': fndia=3;
              break;
    case 'M': fndia=4;
              break;
    case 'j': fndia=5;
              break;
    case 'v': fndia=6;
              break;
    case 's': fndia=7;
              break;
  }
return fndia;
}
#17
Programación C/C++ / Funciones !
15 Abril 2013, 02:05 AM
Buenas!
he comenzado con el tema de las funciones en lenguaje c, este es mi primer programa que hago, pero hay un error que no me deja que corra el programa. Debo crear un menu en el que el usuario pueda elejirlas siguientes opciones:
El calculo de una funcion racional.
El calculo del area y el perimetro de un triangulo acutangulo.
Finalizar.
Los errores me los da en la linea 55(Code has no effect) y en la linea 59(do statement must have while). Le he hechado bastante cabeza pero nada que doy con el error. Tambien tengo una duda, haciendo la funcion del triangulo, debo dar 2 salidas, y los pocos ejercicios que he hecho han sido con una sola salida, entonces en lo que pense fue en copiar la funcion y que cada una me retornara, por un lado el perimetro y por otro lado la altura.. entonces nose como sería la forma mas estetica de escribirlo para que me de las 2 salidas. este es el codigo.
//Programa 3 de Funciones
#include <stdio.h>
#include <conio.h>
#include <math.h>
//Prototipos
int menu(void);
float fun_met1(float);
float fun2_alt(float, float, float);
float fun2_per(float, float, float);

//Programa Principal
void main()
{ int opcion;
  float valorX,val_fun,angulo,ladoC,ladoA;

  do
  {
   switch(opcion)
   {
     case 1: clrscr();
             printf("\nIngrese el valor de h(x): ");
             scanf("%f",&valorX);
             val_fun=fun_met1(valorX);
             printf("\nEl valor de la funcion h(x) es de: ",val_fun);
             getch();
             break;
     case 2: clrscr();
             printf("\nIngrese el valor del angulo alfa en grados: ");
             scanf("%f",&angulo);
             printf("\nIngrese el valor del lado C: ");
             scanf("%f",&ladoC);
             printf("\nIngrese el valor del lado A: ");
             scanf("%f",&ladoA);
             printf("\nEL valor de la altura es de %f",fun2_alt(angulo,ladoC,ladoA));
             printf("\nEL valor del perimetro es de %f",fun2_per(angulo,ladoC,ladoA));
             getch();
             break;
   }
  }while((opcion=menu())!=3);
}
//Funciones
int menu(void)
{ int opc;

  printf("\t\t\tMENU");
  printf("\n\n1 para calculo de una funcion");
  printf("2 para calcular el area y perimetro de un triangulo");
  printf("3 para finalizar");
  do
  { printf("\nElija su opcion: ");
    scanf("%d",&opc);
    if(opc<1 || opc >3)
    { printf("Opcion incorrecta. Ingresela de nuevo: ");
      getch();
    }while(opc<1 || opc>3);
  return opc;
}

float fun_met1(float fun_x)
{
float h;
h=(pow(fun_x,3)+4)/sqrt(3+fun_x);
return h;
}

float fun2_alt(float falfa, float fc, float fa)
{
  fb=sqrt(pow(fc,2))-(pow(fa,2));
  fd=(fb*sin(90*M_PI/180))/sin(falfa*M_PI/180);
  fbeta=180-90-falfa;
  fe=(fb*sin(fbeta*M_PI/180))/sin(falfa*M_PI/180);
  ff=fe+fa;
  falt=(ff*fb)/2;
  return falt;
}

float fun2_per(float falfa, float fc, float fa)
{
  fb=sqrt(pow(fc,2))-(pow(fa,2));
  fd=(fb*sin(90*M_PI/180))/sin(falfa*M_PI/180);
  fbeta=180-90-falfa;
  fe=(fb*sin(fbeta*M_PI/180))/sin(falfa*M_PI/180);
  ff=fe+fa;
  fper=fd+fc+ff;
  return fper;
}
}


PD: muchos me han sugerido ya que no utilize la libreria conio.h por lo que no es standar, pero la profesora de la universidad lo evalua entonces debo utilizarla xD
#18
scanf("%f",&deuda[i]);
printf("\n\nHay otro cliente...S/N? ");
scanf("%c",&resp);


Pensando un poco en la estetica, y tambien en otra forma de hacerlo, ¿existe algun codigo para que al momento de que en la pantalla me pregunte "Hay otro cliente...?S/N" y yo ingrese un caracter, ese caracter no se vea en la pantalla, nose si me explique bien xd un ejemplo grafico sería:

en la pantalla:
Hay otro cliente...?S/N s (estoy ingresando el caracter s y se repite el bucle)
Hay otro cliente...?S/N   (ingreso el caracter s pero no se ve en la pantalla)


Otra duda es, que hay unos codigos que he visto que estan asi:
printf("\n\nHay otro cliente...S/N? ");
fflush(studin);
resp=toupper(getchar();


mi duda es, que en ningun momento veo q guarden el dato ¿ no se deberia usar el scanf para guardarlo en la variable?
#19
Muchas gracias por sus consejos y ayudas que me han servido mucho para seguir aprendiendo.

Cita de: rir3760 en 17 Marzo 2013, 17:06 PM
1) Al pedir confirmación si se debe continuar o no:
scanf("%f",&deuda[i]);
printf("\n\nHay otro cliente...S/N? ");
scanf("%c",&resp);

La variable "resp" terminara almacenando el avance de linea generado al introducir el monto de la deuda, para que funcione correctamente debes utilizar " %c":
scanf("%f",&deuda[i]);
printf("\n\nHay otro cliente...S/N? ");
scanf(" %c",&resp);



Tengo una duda con esto, noto que la unica diferencia que hubo en este codigo fue que colocaste un space en el scanf de la variable de resp, pero no termino de entender por que??
#20
ya me explicaron mas o menos como hacer para mostrar esas listas xd, tambien decidi reestructurar el codigo y hacerlo por partes para no enredarme mucho, este es  #include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>
#define MAX 30

//Carga de datos en los vectores

void main()
{
int cod[MAX],i=0,j,k,aux;
float deuda[MAX],mayor=-1;
char tipo[MAX],resp;

   do
   { clrscr();
     printf("\n\nIngrese el codigo del cliente: ");
     scanf("%d",&cod[i]);
     printf("\n\nIngrese el tipo de cliente(B=Bueno,R=Regular,M=Malo): ");
     scanf("%c",&tipo[i]);
      tipo[i]=toupper(getchar());
     printf("\n\nIngrese el saldo deudor en bolivares: ");
     scanf("%f",&deuda[i]);
     printf("\n\nHay otro cliente...S/N? ");
     scanf("%c",&resp);
     resp=toupper(getchar());
     i++;
   }while(resp=='S' && i<MAX);
//Listar los codigos de los clientes buenos
printf("\n\nClientes Buenos con deuda menor a 10000 bs");
printf("\n\nCodigo del cliente");
  for(j=0;j<MAX;j++)
  { if(tipo[j]=='B' && deuda[j]<10000)
    printf("\n\n%d",cod[j]);
  }
  getch();
//Mostrar el codigo de los clientes malos

for(k=0;k<MAX;k++)
{ if(tipo[k]=='M' && deuda[k]>mayor)
     mayor=deuda[k];
     aux=cod[k];
}
printf("\n\nEl codigo de cliente que tiene la mayor dueda de tipo MALO es %d",aux);
getch();

}


tengo un problema tratando de mostrar la salida del cliente malo, resulta que al compilar, y meter el codigo(entero), cuando me da la salida, me da otro numero diferente ¿por que pasa eso?