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

Programa

Estas en el tema de Programa en el foro de C/C++ en Foros del Web. Hola a todos.... Bueno vallamos al grano, tengo 1 problema al calcular que numero es mayor en un programa, ya que al ingresar numeros q ...
  #1 (permalink)  
Antiguo 02/09/2011, 17:07
Avatar de ixhigo  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Programa

Hola a todos....

Bueno vallamos al grano, tengo 1 problema al calcular que numero es mayor en un programa, ya que al ingresar numeros q no son negativos, no toma ningun numero como menor, y al colocar solo negativos, no toma ningun numero como mayor.. les dejo mi codigo aver si me podrian ayudar ... de antemano gracias


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main()
{
int a,b,c,pos,neg,cero,menor,mayor;


neg=0;
pos=0;
b=1;
neg=0;
cero=0;
menor=0;
mayor=0;

printf("Ingrese tope");
scanf("%d",&a);
while(a<=0)
{
printf("Ingrese nro positivo");
scanf("%d",&a);
}
while(b<=a)
{
printf("Ingrese nro");
scanf("%d",&c);

if(c>0)
{
pos=pos+c;
}
else
{
if(c==0)
{
cero++;
}
else
{
neg=neg+c;
}
}
if(c<menor)
{
menor=c;
}

if
{
mayor=c;
}

b++;
}

printf("La suma de positivos es : %d\n",pos);
printf("La suma de negativos es : %d\n",neg);
printf("La cantidad de ceros es : %d\n",cero);
printf("El numero ingresado menor es :%d\n ",menor);
printf("El numero ingresado mayor es %d\n",mayor);
getchar(),getchar();
return 0;
}
  #2 (permalink)  
Antiguo 03/09/2011, 05:45
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 11 años, 5 meses
Puntos: 11
Respuesta: Programa

Utiliza las etiquetas Highlight para que el codigo se entienda más.
Tu problema esta que inicializas mayor y menor como 0.
Tienes que declarar maximo como INT_MIN y minimo como INT_MAX, para esto debes añadir la libreria climits (#include <climits>).

Mas info: http://www.cplusplus.com/reference/clibrary/climits/
  #3 (permalink)  
Antiguo 03/09/2011, 08:18
Avatar de ixhigo  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 11 años
Puntos: 0
Respuesta: Programa

emm creo no averme explicado bn... mira cuando ingreso solo numeros negativos
no toma ningun numero como mayor

y cuando ingreso solo numeros positivos
no toma ningun numero como menor

esa es mi duda y no la he podido resolver con lo q me entregaste
de antemano gracias
  #4 (permalink)  
Antiguo 03/09/2011, 13:27
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 14 años
Puntos: 11
Respuesta: Programa

te dejo esto si no lo entiendes te lo explico:

Código C:
Ver original
  1. #include<iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6.      int main()
  7.      {
  8.         int tope;
  9.        
  10.         int num;
  11.        
  12.         int mayor;
  13.          
  14.      cout<<"ingrese tope de numero"<<endl;    
  15.      cin>> tope;
  16.      cout<<"ingrse numero"<<endl;
  17.      cin>>mayor;
  18.      while(tope>1){
  19.                    
  20.     cout<<"ingrese numero"<<endl;
  21.     cin>> num;
  22.    
  23.     if(num>mayor){
  24.    
  25.         mayor=num;
  26.                  
  27.     }
  28.    
  29.     tope--;
  30.                  
  31.                  
  32.   }
  33.  
  34.   cout<<"el numero mayor es el"<<endl<<mayor<<endl;
  35.      
  36.      system("pause");
  37.          
  38.      }
  #5 (permalink)  
Antiguo 03/09/2011, 16:46
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 12 años, 3 meses
Puntos: 228
Respuesta: Programa

Te lo explicaron perfecto.... tu comparas a un numero con menor que al pincicipio vale cero. Si ingresas todos numeros positivos todos son mayores a cero entonces el menor sigue siendo cero. Lo mismo pasa con mayor.

Al ingresar el primer numero deberias setear a ese como menor y mayor o como te dijo el compañero menor deberia ser el MIN_INT y mayor MAX-INT
  #6 (permalink)  
Antiguo 03/09/2011, 16:59
 
Fecha de Ingreso: septiembre-2011
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Programa

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <values.h>
  4.  
  5. int main()
  6. {
  7.     int a, b, c, pos, neg, cero, menor, mayor;
  8.  
  9.     //Inicializamos las variables
  10.     neg=0;
  11.     pos=0;
  12.     b=0;
  13.     neg=0;
  14.     cero=0;
  15.    
  16.     printf("Ingrese el número máximo de números a introducir: ");
  17.     scanf("%d",&a);
  18.    
  19.     while(a<=0)
  20.     {
  21.         printf("\nVuelva a ingresar un número positivo");  
  22.         scanf("%d",&a);
  23.     }
  24.    
  25.     //Inicializamos las variables mayor y menor
  26.     menor=MAXINT;
  27.     mayor=MININT;
  28.    
  29.     for(b=0; b<a; b++)
  30.     {
  31.         printf("\nIngrese un número entero: ");
  32.         scanf("%d",&c);
  33.        
  34.         if(c>0)
  35.         {
  36.             pos=pos+c;
  37.         }
  38.         else if(c<0)
  39.         {
  40.                 neg=(neg)+(c);
  41.         }
  42.         else
  43.         {
  44.             cero++;        
  45.         }
  46.  
  47.         if(c<menor)
  48.         {
  49.             menor=c;
  50.         }
  51.  
  52.         if (c>mayor)
  53.         {
  54.             mayor=c;
  55.         }
  56.     }
  57.    
  58.     printf("\nLa suma de números positivos es : %d\n", pos);
  59.     printf("La suma de números negativos es : %d\n", neg);
  60.     printf("La cantidad de ceros introducidos es : %d\n", cero);
  61.     printf("El numero ingresado menor es: %d\n", menor);
  62.     printf("El numero ingresado mayor es: %d\n", mayor);
  63.    
  64.     getchar();
  65.    
  66.     return 0;
  67. }


El compañero te ha respondido muy bien a la pregunta, yo tan solo he arreglado un poco el código

Etiquetas: 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 01:44.