none
Alguna sugerencia RRS feed

  • Pregunta

  • hola amigos, gracias de antemano, este prorama cuenta con 5 casos independientes, los 3 primeros corren bien y ejecutan las instrucciones pero los 2 ultimos no, me podrian hechar una mano con el.

    #include<iostream>
    using namespace std;
    void main()
    {
     
     int n,cper=0,cp=0,r=0,a,b,op,hmen=0,hm=0,mm=0,mmen=0,q=0,z=0,x=0,c=0,v=0,f,d,s,h=0,i,k=0,e,t,p,bn=0,ap=0,j=0,y,por;

     cout<<"1. CAULCULADOR DE NOTAS "<<endl;
     cout<<"2. CALCULADOR DE EDAD Y SEXO "<<endl;
     cout<<"3. CALCULADOR DE ESTATURA PARA ESTUDIANTES "<<endl;
     cout<<"4. CALCULADOR DE NUMEROS DE VENTAS Y COMISIONES "<<endl;
     cout<<"5. CALCULADOR DE DEPORTISTAS DEL COLDEPORTE  "<<endl;
     cout<<"DIGITE LA OPCION ";
      cin>>op;
     switch(op)
     {
     case 1:     
       cout<<"DIGITE LA NOTA: ";
       cin>>n;
        while (n!=-1)
        {
         if (n>=0 && n<3)
          cper++;
         else
          if (n>=3 && n<=5)
           cp++;
          else
          {
           cout<<"NOTA NO VALIDA"<<endl;
        }
        cin>>n;
        }
        cout<<"PASARON= "  <<cp<< "PERDIERON= " <<cper<<endl;
        break;
     case 2:
    char b;
      cout<<"DIGITE LA EDAD ";
      cin>>a;
      cout<<"DIGITE EL SEXO ";
      cin>>b;
      while(a!=0)
      {
       if (a>18 && b=='h')
        hm++;
        else
        if (a<18 && b=='h')
         hmen++;
        else
        if (a>18 && b=='m')
         mm++;
        else
        if (a<18 && b=='m')
         mmen++;
        else
        {
        cout<<"SEXO NO VALIDO"<<endl;
        }
        cout<<"DIGITE LA EDAD";
        cin>>a;
        cout<<"DIGITE EL SEXO";
        cin>>b;
        }
        
         cout<<" HAY HOMBRE MAYORES "  <<hm<< " HAY HOMBRE MENORES " <<hmen<< " HAY MUJERES MAYORES " <<mm<<" HAY MUJERES MENORES "<<mmen<<endl;
       break;
     case 3:

      cout<<"DIGITE LA ESTATURA: ";
       cin>>n;    
       while (n!=0)
      
        {
         if (n<=160)
          q++,z++;
         else
          if (n>1.60 && n<170)
           q++,x++;
          else
           if (n>=1.70 && n<180)
          q++,c++;
          
           else
            if (n>180)
          q++,v++;
         else
          {
           cout<<"ESTATURA NO VALIDA"<<endl;
        }
        cin>>n;
       
          
         
           
        }
        
         cout<<" NUMERO DE ESTUDIANTES "  <<q<<  " ESTUDIANTES CON ESTATURA DE 160  " <<z<<  " ESTUDIANTES CON ESTATURA ENTRE 160 Y 170  "  <<x<<   "  ESTUDIANTES CON ESTATURA ENTRE 170 Y 180  " <<c<<  "  ESTUDIANTES CON ESTATURA MAYOR A 180  " <<v<<endl;
         break;
     case 4:
      cout<<"DIGITE EL VALOR DE LA VENTA   ";
      cin>>a;
      
      while(a!=0)
      {
       if (a<=5000000)
       {
        c=a*0.05;
        h++;
        k=k+c;
        
        cout<<"SU COMISION ES   "<<c<<endl;
       }
        else
        if (a>5000001 && a<10000000)
        {
         d=a*0,075;
         h++;
         k=k+d;
        
        cout<<" SU COMISION ES "<< d<<endl;
        }
        else
        if (a>10000001 && a<2000000)
        {
         s=a*0.1;
         h++;
         k=k+s;
         cout<<" SU COMISION ES   "<< s<<endl;
        }
        else
        if (a>20000000)
        {
         f=a*0.15;
         h++;
         k=k+f;
         cout<<" SU COMISION ES "<<f<<endl;
         
        }
      
        
        cout<<"DIGITE EL VALOR DE  LA VENTA  ";
        cin>>a;
        
        
        
      }
      
      cout<<"SUS VENTAS REALIZADAS SON: "<<h<<endl;
         cout<<"SU COMISION TOTAL ES  " <<k<<endl;


     case 5 :
     cout<<"INGRESE EDAD DEL DEPORTISTA ";
     cin>>e;
     cout<<"INGRESE  TALLA DEL DEPORTITA ";
     cin>>t;
     cout<<"INGRESE PESO DEL DEPORTISTA ";
     cin>>p;
     while(e!=0)
     {
     if (e<18 && t>=180 && p<=80)
      ap++;

     

     

     bn++;
     y=j+bn;

     por=ap*100/y;
     

     
     
     cout<<"EL NUMERO DE DEPORTISTA ES "<<y<<endl;

     cout<<"INGRESE EDAD DEL DEPORTISTA ";
     cin>>e;
     cout<<"INGRESE  TALLA DEL DEPORTITA ";
     cin>>t;
     cout<<"INGRESE PESO DEL DEPORTISTA";
     cin>>p;
     }
     cout<<"EL NUMERO DE DEPROTISTAS DE COLDEPORTES ES :"<<y<<endl;
     cout<<"EL NUMERO DE DEPROTISTAS APTOS SON "<<ap<<endl;
     cout<<"EL NUMERO DE DEPORTITAS NO APTOS SON "<<bn<endl;
     cout<<"EL PORCIENTO ENTRE EL TOTAL D DEPORTISTAS Y LOS APTOS SON "<<por<<endl;
     

     default:cout<<"CASO NO EXISTE";
     }
    }

    sábado, 11 de abril de 2009 3:23

Respuestas

  • En cierta medida dedoz tiene razón, pero voy a ampliarte el tema sin darte la solución (lo siento, va en contra de mis principios hacerlo por muchos motivos que no vienen al caso).

    Ambos problemas son el mismo problema: resolución de polinomios mediante un programa. Aquí entramos en temas de matemáticas básicas (al menos eran básicas cuando yo estudié, lo mismo ahora, con los nuevos planes, forma parte de los estudios universitarios -lo siento, no puedo evitar ser sarcástico). Un polinomio tiene la forma

    f(x)=a*x^n + b*x^(n-1) + c*x^(n-2) + ... p

    en donde a, b, c, etc son los coeficientes y n, n-1, n-2, etc son los exponentes.

    En tu caso, el primer problema resuelve en

    f(x)=3*x-5,

    una función lineal.

    En el segundo,

    f(n)=n*(n-1)=n^2-n

    una función de segundo grado.

    Ambas representaciones tienen su equivalencia exacta ec C++:

    int x,n;
    int f_de_x=3*x-5;
    int f_de_n=n*(n-1);  //también n*n-n; o incluso pow(n,2)-n;

    Tan sólo te queda meter esa ecuación en el bucle e ir imprimiéndola. Para que te hagas una idea, la variable contadora del primer bucle for es x y la del segundo, n.

    Lo demás viene en la ayuda del compilador.

    Nota: existe una forma genérica de operar y transformar polinomios y en general todo tipo de funciones colocando los coeficientes dentro de matrices y asumiendo que el índice de la matriz es el exponente y teniendo en cuenta de poner a cero aquellas posiciones no usadas. Luego se opera mediante bucles con los coeficientes de la matriz, y de ahí al infinito... ;-)
    • Editado RFOGModerator domingo, 12 de abril de 2009 11:01 corrección sintáctica
    • Propuesto como respuesta webJoseModerator viernes, 1 de febrero de 2013 14:33
    • Marcado como respuesta webJoseModerator domingo, 3 de febrero de 2013 19:00
    domingo, 12 de abril de 2009 10:59
    Moderador

Todas las respuestas

  • ¿Y qué es lo que te pasa en las opciones 4 y 5? Yo no veo ningún problema de sintaxis, pero la lógica no la entiendo. QUizás tengas algún desbordamiento de buffer en las multiplicaciones. Además, todo lo estás haciendo con enteros, por lo que siempre obtendrás un sensible grado de error acumulativo en las multiplicaciones y divisiones.

    Por otro lado, lo mejor que puedes hacer (si es un problema de lógica en tu programa) es depurarlo con el depurador integrado del IDE y ver dónde falla.
    sábado, 11 de abril de 2009 10:41
    Moderador
  • muchas gracias amigo, sos un duro, me podrias echar una mano con estos ejercicios que la verdad no entiendo como hacerlos usando el FOR muchas gracias

    1. Resolver la funcion f (x)= x+x+x-5, para x tomando valores desde 0 hasta 10 en incremento de 1 

    2. Calcular el numero de lineas directas necesarias para mantener una red conectada en forma directa para n telefonos. 2<=n<=100.
    El sistema debe entregar de respuesta la cantidad de lineas necesarias para la conexion de 2 a 100 telefonos.
    El numero de lineas directas necesarias para mantener una red conectada en forma directa para n telefonos esta dada por la formula: n(n-1) lineas = 2

    por ejemplo las instituciones financieras de wall street, utilizan este tipo de red para mantener continuamente lineas telefonicas directas y abiertas entre las empresas.
    Para conectar 4 telefonos en forma directa requiere 6 lineas individuales.

    espero su gran colaboracion, muchas gracias
    sábado, 11 de abril de 2009 15:29
  • Hola Jamescua

    Si no sabes implementar x+x+x-5 con un for, lo mejor es que te busques un manual basico de programacion, de cualquier lenguaje estructurado, puesto que la implementacion de tal tarea es bastante trivial. Seguramente estas aprendiendo a programar, donde te han dado estos ejercicios. Aprovechalos, para aprender, no busques a otro que te los resuelva.

    // estructura tipica de un for
    for ( inicializacion ; condiciones de termino ; incrementos )

    // un  FOR  tipico luce como
    for ( i = 0 ; i < limite ; i++ )
            ....instrucciones....

    saludos
    domingo, 12 de abril de 2009 1:11
  • salio el duro del c++, de todos modos gracias demuestralo, no con el primero sino con el segundo, ese es el que no logrointerpretar
    domingo, 12 de abril de 2009 1:53
  • En cierta medida dedoz tiene razón, pero voy a ampliarte el tema sin darte la solución (lo siento, va en contra de mis principios hacerlo por muchos motivos que no vienen al caso).

    Ambos problemas son el mismo problema: resolución de polinomios mediante un programa. Aquí entramos en temas de matemáticas básicas (al menos eran básicas cuando yo estudié, lo mismo ahora, con los nuevos planes, forma parte de los estudios universitarios -lo siento, no puedo evitar ser sarcástico). Un polinomio tiene la forma

    f(x)=a*x^n + b*x^(n-1) + c*x^(n-2) + ... p

    en donde a, b, c, etc son los coeficientes y n, n-1, n-2, etc son los exponentes.

    En tu caso, el primer problema resuelve en

    f(x)=3*x-5,

    una función lineal.

    En el segundo,

    f(n)=n*(n-1)=n^2-n

    una función de segundo grado.

    Ambas representaciones tienen su equivalencia exacta ec C++:

    int x,n;
    int f_de_x=3*x-5;
    int f_de_n=n*(n-1);  //también n*n-n; o incluso pow(n,2)-n;

    Tan sólo te queda meter esa ecuación en el bucle e ir imprimiéndola. Para que te hagas una idea, la variable contadora del primer bucle for es x y la del segundo, n.

    Lo demás viene en la ayuda del compilador.

    Nota: existe una forma genérica de operar y transformar polinomios y en general todo tipo de funciones colocando los coeficientes dentro de matrices y asumiendo que el índice de la matriz es el exponente y teniendo en cuenta de poner a cero aquellas posiciones no usadas. Luego se opera mediante bucles con los coeficientes de la matriz, y de ahí al infinito... ;-)
    • Editado RFOGModerator domingo, 12 de abril de 2009 11:01 corrección sintáctica
    • Propuesto como respuesta webJoseModerator viernes, 1 de febrero de 2013 14:33
    • Marcado como respuesta webJoseModerator domingo, 3 de febrero de 2013 19:00
    domingo, 12 de abril de 2009 10:59
    Moderador
  • salio el duro del c++, de todos modos gracias demuestralo, no con el primero sino con el segundo, ese es el que no logrointerpretar
    "Si no sabes implementar x+x+x-5 con un for, lo mejor es que te busques un manual basico de programacion"

    No fue mi intencion tratarte de novato, quiza me exprese mal =( , simplemente veo que es un problema tipico de los que nos entregan cuando partimos aprendiendo programacion, y lo mejor es aprovechar la instancia para aprender, mas que para resolver el problema.

    Saludos.
    jueves, 16 de abril de 2009 16:52
  • Hola,

    Esta es una calculadora de polinomios en c# que facilmente se puede convertir en c++ y usar la clase que hacen los calculos. Esero sea util:

    http://xgeeker.blogspot.com/2012/11/ejemplo-de-una-calculadora-de.html

    Saludos



    Jose Mendez.
    Blog
    Ejemplos de codigos/Code Samples
    If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful".
    Si un Post responde a tu pregunta, por favor "Marcala como Respondida" y "Vota como útil".

    miércoles, 5 de diciembre de 2012 17:13