Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Duda con números negativos

Estas en el tema de Duda con números negativos en el foro de C/C++ en Foros del Web. Hola! Alguno me prodria aclarar la duda que tengo. El programa funciona correctamente excepto que los valores negativos no los considera enteros. Les dejo el ...
  #1 (permalink)  
Antiguo 28/10/2015, 13:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 3
Antigüedad: 14 años, 5 meses
Puntos: 0
Duda con números negativos

Hola!
Alguno me prodria aclarar la duda que tengo. El programa funciona correctamente excepto que los valores negativos no los considera enteros. Les dejo el código y espero sepan orientarme.

Código code:
Ver original
  1. /*
  2. Leer un vector de 30 elementos y efectuar e imprimir las siguientes sumas:
  3.  
  4. "   Los valores enteros.
  5. "   Los valores decimales.
  6. "   Dentro de los enteros, sumar:
  7. a)  los positivos
  8. b)  los negativos
  9.  
  10. */
  11.  
  12. #include <iostream>
  13. #include <cstdlib>
  14.  
  15. using namespace std;
  16.  
  17. int main()
  18. {
  19.     int sE = 0;
  20.     float sD = 0;
  21.     int sP = 0;
  22.     int sN = 0;
  23.     float v[10];
  24.    
  25.     for (int i = 1; i <= 10; i++)
  26.     {
  27.         cout << "Ingrese valores para el vector: ";
  28.         cin >> v[i];
  29.        
  30.         if (v[i] - int(v[i]) == 0)
  31.         {
  32.             sE += v[i];
  33.             if (v[i] > 0)
  34.             {
  35.                 sP += v[i];
  36.             }
  37.             else
  38.             {
  39.                 sN += v[i];
  40.             }
  41.         }
  42.         else
  43.         {
  44.             sD += v[i];
  45.         }
  46.     }
  47.     cout << "La suma de los enteros es: " << sE << endl;
  48.     cout << "La suma de los positivos es: " << sP << endl;
  49.     cout << "La suma de los negativos es: " << sN << endl;
  50.     cout << "La suma de los decimales es: " << sD << endl;
  51.    
  52.     system ("pause");
  53.     return 0;
  54. }

Última edición por Avya; 28/10/2015 a las 13:49
  #2 (permalink)  
Antiguo 28/10/2015, 13:55
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 2 meses
Puntos: 27
Respuesta: Duda con números negativos

¿Por qué no? Yo lo ejecuto y me funciona correctamente. ¿Puedes decir un ejemplo de datos para los que no funcione?
  #3 (permalink)  
Antiguo 28/10/2015, 14:52
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Duda con números negativos

Se supone que cuando sumas positivos o negativos es independientemente de si son enteros o decimales, pero sólo consideras los enteros, luego los decimales nunca van a añadirse a las variables sP y sN.

Si no he entendido mal lo que se supone que has de averiguar, el programa falla tanto con números decimales positivos como negativos....
Añado unos cout a tu programa para que entiendas lo que quiero decir:
Código C++:
Ver original
  1. if (v[i] - (int)v[i] == 0)
  2.             {
  3.                 sE += v[i];
  4.                 if (v[i] > 0)
  5.                 {
  6.                     sP += v[i];
  7.                     cout<<"Solo añado los enteros positivos pero no los decimales"<<endl;
  8.                 }
  9.                 else
  10.                 {
  11.                     sN += v[i];
  12.                     cout<<"Solo añado los enteros negativos pero no los decimales"<<endl;
  13.                 }
  14.             }
  15.             else
  16.             {
  17.                 sD += v[i];
  18.             }
__________________
Mi calculadora en Qt
  #4 (permalink)  
Antiguo 28/10/2015, 15:03
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Duda con números negativos

Por aclarar algo mas, este (creo) sería el pseudocódigo:
Código C++:
Ver original
  1. if (entero)//(v[i] - (int)v[i] == 0
  2. sE+=v[i]
  3. else
  4. sD+=v[i]
  5. if (positivo) //(v[i] >= 0)
  6. sP=v[i]
  7. else
  8. sN=v[i]

Eso y cambiar los tipos de sP y sN a float

Si no es esto, es que no he entendido el criterio, así que disculpa por el posible error.
__________________
Mi calculadora en Qt
  #5 (permalink)  
Antiguo 29/10/2015, 04:12
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Duda con números negativos

La suma de enteros la va acumulando en sE y, posterioremente, hace las sumas en sP o sN si son positivos o negativos.

Por otro lado, declara el vector así v[10] eso quiere decir que tiene 10 posiciones pero en C/C++ las posiciones de los vectores empiezan por 0, es decir que el vector va de v[0] a v[9], con lo que la última vuelta del for está sobreescribiendo una zona de memoria.

Tampoco estaría de más poner nombres de variables más descriptivos, por ejemplo en lugar de "sE" poner "sumaValoresEnteros".
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: funcion, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:23.