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

#1
Programación C/C++ / Illegal use of floating point
11 Septiembre 2016, 08:40 AM
Buenas colegas,  :D. Estoy programando un simulador de datos y no puedo corregir el error del floating point. Lo que pasa es que estoy asignando un valor de un vector de doubles a un auxiliar que tambien he declarado como double. No entiendo cual es el error aqui.

Aca el código.

Código (cpp) [Seleccionar]
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>

#define linea "-------------------------------------------------------------------"
void main()
{int n,i,num;
float x[50],m,a,b,aux=0,j,sup[50],inf[50];
double ran,prob[50],aux2;

do
{
  gotoxy(5,5);clreol();
  gotoxy(5,5);cout<<"ingrese cantidad de intervalos :";cin>>n;
}while(!(n>0 && n<=50));

gotoxy(5,7);cout<<"Nro Cota sup.   Cota inf.       Media     Prob.";
gotoxy(5,8);cout<<linea;
gotoxy(5,9+n);cout<<linea;
for(i=1;i<=n;i++)
{
  gotoxy(5,8+i);cout<<i<<".-";
}
aux=0;
m=100;
for(i=1;i<=n;i++)
{
  if(i==1) //para el primer dato//
   {
    do
     {
      gotoxy(18,8+i);clreol(); //cota inferior de intervalo//
      gotoxy(18,8+i);cin>>a;
     }while(!(a>=aux));
    inf[i]=a;
    do
     {
      gotoxy(35,8+i);clreol(); //cota superior de intervalo//
      gotoxy(35,8+i);cin>>b;
     }while(!(b>=a));
    sup[i]=b;
    aux=b;
    x[i]=(a+b)/2;
    gotoxy(51,8+i);cout<<x[i];
    if(i!=n)
     {
      if(m!=0)
       {
        do
         {
          gotoxy(61,8+i);clreol();  //ingresar la probabilidad//
          gotoxy(61,8+i);cin>>prob[i];

         }while(!(prob[i]>=0 && prob[i]<=m));
        gotoxy(68,8+i);cout<<"%";
       }
      else
       {
        gotoxy(61,8+i);cout<<"0";
        gotoxy(68,8+i);cout<<"%";
        prob[i]=0;
       }
      m=m-prob[i];
     }
    else
     {
      gotoxy(61,8+i);cout<<"m";
      gotoxy(68,8+i);cout<<"%";
      prob[i]=m;
     }

   }
  else
   {
     gotoxy(18,8+i);cout<<aux;
     inf[i]=aux;
     do
     {
      gotoxy(35,8+i);clreol();
      gotoxy(35,8+i);cin>>b;
     }while(!(b>=aux));
     sup[i]=b;
     x[i]=(aux+b)/2;
     aux=b;
    gotoxy(51,8+i);cout<<x[i];
    if(i!=n)
     {
      if(m!=0)
       {
        do
         {
          gotoxy(61,8+i);clreol();  //ingresar la probabilidad//
          gotoxy(61,8+i);cin>>prob[i];

         }while(!(prob[i]>=0 && prob[i]<=m));
        gotoxy(68,8+i);cout<<"%";
       }
      else
       {
        gotoxy(61,8+i);cout<<"0";
        gotoxy(68,8+i);cout<<"%";
        prob[i]=0;
       }
      m=m-prob[i];
     }
    else
     {
      gotoxy(61,8+i);cout<<m;
      gotoxy(68,8+i);cout<<"%";
      prob[i]=m;
     }
   }
}
gotoxy(5,11+n);cout<<"Ingrese cantidad de datos a simular :";cin>>num;

system("cls");

gotoxy(5,7);cout<<"Nro Random Resultado";
gotoxy(5,8);cout<<linea;
gotoxy(5,9+num);cout<<linea;
for(i=1;i<=num;i++)
{
  gotoxy(5,8+i);cout<<i<<".-";
}
for(i=1;i<=num;i++)
{
  ran = (rand() % 100 + 1)/1.0;
  gotoxy(15,8+i);cout<<ran;
  for(j=1;j<=n;j++)//aca ocurre el error//
   {
    if(j==1)
     {
      if((ran>=0))
       {
        aux2=x[j]; //->Esta asignacion bota el error<-//
        gotoxy(30,8+i);cout<<aux2;
       }
     }
   }

}
getche();
}
#2
Programación C/C++ / ¿Como validar datos?
31 Agosto 2016, 04:29 AM
Buenas colega, estoy buscando una función para C++ que no puedo encontrar en la red  :-\. En la clase de LPE pedían ingresar el sexo (Char[15]) y que lo elimine si la cadena no es masculino o femenino.
PE:

El programa:
"Ingrese el sexo:"

se ingresa:
"Ingrese el sexo:abcd"
se imprime:
"Ingrese el sexo:"

O sea, que el programa elimine "abcd" y en esa misma linea permita introducir otro dato. El profe en clase lo resolvió con una función, la cual no recuerdo ahora su nombre. ¿Alguna ayuda? Espero que me haya podido dejar entender
#3
Cita de: AlbertoBSD en 30 Agosto 2016, 06:21 AM
Hola ten encuenta que la función pow es:

double pow(double x, double y);

Lo que significa que espera parametros double y tambien regresa un double, todos tus datos son enteros.

Ahora si agregaras algunos comentarios sobre tu codigo tal vez seria mas facil encontrar el error.

Si solo pasa con valores mayores que nueve entonces revisa bien tu parte del codigo donde esta el siguiente if.
if(ed<100 && ed>0)

Y la otra... cuando estas aprendiendo a programar... Olvidate de darle formato al texto evita el uso de gotoxy ademas no es una funcion  estandar, solo funciona para el turboC, no uses ninguna de las funciones de la libreria CONIO.

Concentrate en el algoritmo y deja un codigo mas sencillo.

Saludos

Gracias! :D  :D
#4
Buenas colegas del foro  :D
He estado haciendo el código de un programa que bota secuencias de edades y sus repeticiones. El problema es que para valores de más de 9 edades el programa se corrompe y expulsa valores absurdos e inclusive llega a crashearse botando el siguiente error:
Threat1 stopped
Fault: floating point invalid operation at 0x4097db

Mi código es este:
Código (cpp) [Seleccionar]
#include<iostream.h>
#include<conio.h>
#include<math.h>

void main()
{int ed,n=0,cant1=0,cantPAR1=0,cantIMP1=0,cant2=0,cantPAR2=0,cantIMP2=0,cant3=0,cantPAR3=0,cantIMP3=0,sec1=0,secPAR1=0,secIMP1=0,sec2=0,secPAR2=0,secIMP2=0,sec3=0,secPAR3=0,secIMP3=0,n1=0,n2=0,n3=0;
gotoxy(10,10);cout<<"Ingrese edad :";cin>>ed;
while(ed>0 && ed<1000)
  {
   n++;
   if(ed<10 && ed>0)
    {
     cant1++;
     sec1=sec1+ed*pow(10,cant1-1);
     n1++;
     if(ed%2==0)
      {
       secPAR1=secPAR1+ed*pow(10,cantPAR1);
       cantPAR1++;
      }
     else
      {
       secIMP1=secIMP1+ed*pow(10,cantIMP1);
       cantIMP1++;
      }
    }
   else
    {
     if(ed<100 && ed>0)
      {
       cant2++;
       sec2=sec2+ed*pow(100,cant2-1);
       n2++;
       if(ed%2==0)
        {
         secPAR2=secPAR2+ed*pow(10,cantPAR2);
         cantPAR2++;
        }
       else
        {
         secIMP2=secIMP2+ed*pow(100,cantIMP2);
         cantIMP2++;
        }
      }
     else
      {
       if(ed<1000 && ed>0)
        {

         sec3=sec3+ed*pow(1000,cant3-1);
         n3++;
         cant3++;
         if(ed%2==0)
          {
           secPAR3=secPAR3+ed*pow(1000,cantPAR3);
           cantPAR3++;
          }
         else
          {
           secIMP3=secIMP3+ed*pow(1000,secIMP3);
           cantIMP3++;
          }


        }
      }
    }
   gotoxy(10,10+n);cout<<"Ingrese edad :";cin>>ed;
  }
if(sec1>0)
  {
   gotoxy(10,12+n);cout<<"Secuencia de un digito :"<<sec1;
  }
else
  {
   gotoxy(10,12+n);cout<<"Secuencia de un digito :No hay";
  }
if(sec2>0)
  {
   gotoxy(10,13+n);cout<<"Secuencia de dos digito :"<<sec2;
  }
else
  {
   gotoxy(10,13+n);cout<<"Secuencia de dos digito :No hay";
  }
if(sec3>0)
  {
   gotoxy(10,14+n);cout<<"Secuencia de tres digito :"<<sec3;
  }
else
  {
   gotoxy(10,14+n);cout<<"Secuencia de tres digito :No hay";
  }
gotoxy(10,16+n);cout<<"TOTAL:";
gotoxy(10,17+n);cout<<n1<<" Edades de una cifra";
gotoxy(10,18+n);cout<<n2<<" Edades de dos cifra";
gotoxy(10,19+n);cout<<n3<<" Edades de tres cifra";
getche();

}
#5
Programación C/C++ / Problema de programación
27 Agosto 2016, 04:58 AM
Buenas colegas  :D tengo el siguiente problema. Piden ingresar un número e indicar si este se puede expresar como la suma de dos enteros al cuadrado. Bueno aqui está lo que he avanzado pero me bota errores ¿alguna ayuda?

Código (cpp) [Seleccionar]
#include<iostream.h>
#include<conio.h>
#include<math.h>

void main()
{int n=-1,a=1,b=1,cont=0;
while(n<0)
  {
   cout<<"Ingrese un numero: ";cin>>n;
   getche();
  }
while(a<n)
  {
   while(b<n)
    {
     if(pow(a,2)+pow(b,2) == pow(n,2))
      {
       cont++;
       cout<<a<<"^2"<<" + "<<b<<"^2"<<" = "<<n;
      }
     b++;
    }
   a++;
  }
if (cont==0)
  {
   cout<<"No hay dos cuadrados enteros que sumen "<<n;
  }
else
  {
   cout<<"En total hay "<<cont<<" cuadrados enteros que sumen "<<n;
  }
getche();
}
#6
Cita de: AlbertoBSD en 21 Agosto 2016, 21:56 PM
TE FALTO LA ETIQUETA GESHI....

Gracias por leer, te falto cerrar una llave:

Tu codigo actual esta asi:

                    else
                     {
                      gotoxy(30,14);cout<<"Ha ingresado mal los datos";
                     }
                else//aqui menciona el error
                {
                 gotoxy(30,12);cout<<"Ha ingresado mal los datos";
                }


Y deberia de estar asi:

                    else
                     {
                      gotoxy(30,14);cout<<"Ha ingresado mal los datos";
                     }
               }// Te falto este fin de if.....
                else//aqui menciona el error
                {
                 gotoxy(30,12);cout<<"Ha ingresado mal los datos";
                }


Repito si te concentras mas en la funcionalidad y menos en el formato vas a aprender mas

Saludos

Muchas gracias, para la próxima lo tomaré en cuenta  :D :D :D
#7
Cita de: AlbertoBSD en 21 Agosto 2016, 20:58 PM
Hola antes que nada podrias decirnos en que linea esta el error?

Muchos no se molestan en leer codigos asi de largos por mas que quieran ayudar el tiempo invertido seria "excesivo"

Trata de colocar tu codigo en la etiqueta geshi:

int main() {
//Código....
}



La otra es que como estas apenas iniciando con la programación, trata de concentrarte en el codigo y dejes de lado el formato de salida ya que todos esos Gotoxy y clrscr solo estan estorbando el verdadero codigo.

La otra es que no uses la libreria Conio.h ya que no es estandar y la verdad te desvia del verdadero aprendizaje.


Saludos.

Sorry olvidé mencionar la linea del error

//definir librerias
# include<iostream>
# include<stdlib.h>
# include<stdlib.h>
# include<conio.h>
# include<stdio.h>
# include<time.h>
# include<windows.h>
# include<iomanip>

# define linea "------------------------------------------------------------"

void main ()
{   char user[10];
   int psw,pc1,pc2,pc3;
  system("color 1B");system("title el mejor programa del mundo®");
  gotoxy(20,3);cout<<"MODELO DE VALIDACION";
  gotoxy(10,8);cout<<linea;
  gotoxy(10,15);cout<<linea;

   // getche();//ver mis resultados temporalmente

//lectura de datos

gotoxy(15,11);cout<<"usuario = "; gets(user);
gotoxy(25,11);cout<<"****";
gotoxy(15,13);cout<<"clave = ";cin>>psw;
gotoxy(23,13);cout<<"***";
getche();
if((strcmp(strupr(user),"UNI")==0)&&(psw==100))
   {clrscr();system("color 3A");
      gotoxy(10,4);cout<<"bienvenido.....";
      getche();
            gotoxy(10,4);cout<<" calcular promedio...";
            gotoxy(5,5);cout<<linea;

            gotoxy(15,6);cout<<"Pc1="; cin>>pc1;
            if(pc1>=0 && pc1<=20)
             {
              gotoxy(15,10);cout<<"Correcto!";
              gotoxy(10,12);cout<<"PC2= ";cin>>pc2;
                if(pc2>=0 && pc2<=20)
                 {
                  gotoxy(15,13);cout<<"Correcto!";
                  gotoxy(15,15);cout<<"PC3= ";cin>>pc3;
                    if(pc3>=0 && pc3<=20)
                     {
                      gotoxy(15,13);cout<<"Correcto!";

                      //busqueda del nùmero menor
                      int menor=20;

                      if(menor>pc1)
                      {menor=pc1;
                      }
                      if(menor>pc2)
                      {menor=pc2;
                      };
                      if(menor>pc3)
                      {menor=pc3;
                      }
                      gotoxy(15,17);cout<<"MENOR NOTA = "<<menor;
                      float pp;
                      pp=((pc1+pc2+pc3)-menor)/2.0;
                      gotoxy(15,19);cout<<"Promedio... = "<<pp;
                      gotoxy(15,20);
                      cout<<setw(10)<<setprecision(3)<<pp;
                     }
                    else
                     {
                      gotoxy(30,14);cout<<"Ha ingresado mal los datos";
                     }
                else//aqui menciona el error
                {
                 gotoxy(30,12);cout<<"Ha ingresado mal los datos";
                }
             }
            else
             {
               gotoxy(39,12);cout<<"Ha ingresado mal los datos";
             }
   }
else
{
   clrscr();system("color 4A");
    gotoxy(30,12);cout<<"Sr. sus datos estan errados";
}
getche ();//ver mis resultados temporalmente;
gotoxy(30,22);system("pause");//resultados en pantalla y mensaje "presina cualquier tecla para continuar";


}
}

gracias de antemano
#8
Buenas  :D, recien estoy comenzando a programar el C++  y tengo el siguiente problema.
El programa debe recibir 3 notas, validarlas (entre 0 y 20), eliminar la menor y calcular el promedio. Mi problema está al validar la tercera nota, pues el programa manda el error "misplaced else"  :o
Aqui les dejo mi código:

Usuario: UNI
la clave: 100
//definir librerias
# include<iostream>
# include<stdlib.h>
# include<stdlib.h>
# include<conio.h>
# include<stdio.h>
# include<time.h>
# include<windows.h>
# include<iomanip>

# define linea "------------------------------------------------------------"

void main ()
{   char user[10];
   int psw,pc1,pc2,pc3;
  system("color 1B");system("title el mejor programa del mundo®");
  gotoxy(20,3);cout<<"MODELO DE VALIDACION";
  gotoxy(10,8);cout<<linea;
  gotoxy(10,15);cout<<linea;

   // getche();//ver mis resultados temporalmente

//lectura de datos

gotoxy(15,11);cout<<"usuario = "; gets(user);
gotoxy(25,11);cout<<"****";
gotoxy(15,13);cout<<"clave = ";cin>>psw;
gotoxy(23,13);cout<<"***";
getche();
if((strcmp(strupr(user),"UNI")==0)&&(psw==100))
   {clrscr();system("color 3A");
      gotoxy(10,4);cout<<"bienvenido.....";
      getche();
            gotoxy(10,4);cout<<" calcular promedio...";
            gotoxy(5,5);cout<<linea;

            gotoxy(15,6);cout<<"Pc1="; cin>>pc1;
            if(pc1>=0 && pc1<=20)
             {
              gotoxy(15,10);cout<<"Correcto!";
              gotoxy(10,12);cout<<"PC2= ";cin>>pc2;
                if(pc2>=0 && pc2<=20)
                 {
                  gotoxy(15,13);cout<<"Correcto!";
                  gotoxy(15,15);cout<<"PC3= ";cin>>pc3;
                    if(pc3>=0 && pc3<=20)
                    {
                      gotoxy(15,13);cout<<"Correcto!";

                      //busqueda del nùmero menor
                      int menor=20;

                      if(menor>pc1)
                      {menor=pc1;
                      }
                      if(menor>pc2)
                      {menor=pc2;
                      };
                      if(menor>pc3)
                      {menor=pc3;
                      }
                      gotoxy(15,17);cout<<"MENOR NOTA = "<<menor;
                      float pp;
                      pp=((pc1+pc2+pc3)-menor)/2.0;
                      gotoxy(15,19);cout<<"Promedio... = "<<pp;
                      gotoxy(15,20);
                      cout<<setw(10)<<setprecision(3)<<pp;
                    }
                    else
                    {
                      gotoxy(30,12);cout<<"Ha ingresado mal los datos";
                    }
                else
                 {
                  gotoxy(30,12);cout<<"Ha ingresado mal los datos";
                 }
             }
            else
             {
               gotoxy(39,12);cout<<"Ha ingresado mal los datos";
             }




   }
else
{
   clrscr();system("color 4A");
    gotoxy(30,12);cout<<"Sr. sus datos estàn errados";
}
getche ();//ver mis resultados temporalmente;
gotoxy(30,22);system("pause");//resultados en pantalla y mensaje "presina cualquier tecla para continuar";


}
}