elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con problema en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con problema en C  (Leído 2,938 veces)
Pantuflo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Ayuda con problema en C
« en: 11 Mayo 2010, 04:28 am »

Hola, tengo una duda con un problema (con varios pero este es uno de ellos).
Es muy sencillo pero no me sale.

Tengo que hallar los 2 valores mayores y el orden de un grupo de 68 valores (en el foro encontré uno a medio resolver pero tampoco pude hacerlo funcionar).

Hasta acá hice yo:

Código:
#include <stdio.h>
#include <conio.h>

void main()
{
int v,v1,max1,max2,orden1,orden2,i;


      for(i=1;i<=68;i++)
      {
                           printf("\nIngrese valores mayores a 0:");
                           scanf("%d",&v);
                           printf("\nIngrese valores mayores a 0:");
                           scanf("%d",&v1);


                           if(v>0)
                           {
                            if(i==1||v>max1&&v>max2)
                              {
                                        max1=v;
                                  orden1=i;
                                    }
                                  if(i==1||v1>max2&&v1<max1)
                                    {
                                                      max2=v1;
                                                      orden2=i;
                                       }
                                }
                           }
printf("\nEl mayor valor es:%d de orden %d y el segundo mayor valor es:%d de orden:%d",max1,orden1,max2,orden2);
getch();



}

Vale aclarar que solo puedo usar for/while/if y funciones simples. Nada de arrays, por ejemplo. Tengo que usar Borland C++ pero el código tiene que ser en C.

Mi duda es (aparte de la codificación), cómo hago para que cuando ingreso un número que es mayor a los 2 que ya están, el max1 pase al max2 y el que ingreso quede en max1. No sé.
Si alguien puede decirme al menos dónde puedo buscar algo que me ayude, sería últil.


En línea

AckeR

Desconectado Desconectado

Mensajes: 109


Tu única Limitación Es tú Imaginación (:


Ver Perfil
Re: Ayuda con problema en C
« Respuesta #1 en: 11 Mayo 2010, 04:53 am »

Hola!

Para que puedas encontrar el valor Mayor podrías hacer algo así:

Código
  1.  
  2. int mayor = valor1;
  3.  
  4. if(valor2 > mayor)
  5. mayor = valor2;
  6.  
  7.  

y así iras comparando hasta que termine el bucle y ahí determinaría cual fue el número mayor.

Suerte


En línea


...DaR LaS GraCiaS No CuestA NadA...
.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: Ayuda con problema en C
« Respuesta #2 en: 11 Mayo 2010, 05:00 am »

No comprendo exactamente a que te refieres con el orden de un grupo 0o?... Aclara mejor el problema a ver, como te podemos ayudar, usa ejemplos...

Y te recomiendo que en los if, con condiciones multiples uses parentesis... Saludos
En línea

"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja



Ari Slash


Desconectado Desconectado

Mensajes: 1.783



Ver Perfil WWW
Re: Ayuda con problema en C
« Respuesta #3 en: 11 Mayo 2010, 05:38 am »

hola


acostumbrate a siempre empezar un ciclo iterativo desde 0, ya que en esa posicion quedara basura si estas trabajando con arrays.

, no soy bueno para hacer comentarios

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int main(){
  5.     int recibido,max1=0,max2=0,orden1=0,orden2=0,i;
  6.  
  7.     for(i=0;i<68;i++){
  8.                      do{
  9.                         printf("\nIngrese %d ° valor mayor a 0:",i+1);
  10.                         scanf("%d",&recibido);
  11.                      }while (recibido<=0); //se repetira hasta que ingrese numeros mayor a 0
  12.  
  13.                      if(recibido>max1){
  14.                         max1=recibido;   // si es mayor al max1 se guardara el valor y su orden
  15.                         orden1=i;
  16.                      }
  17.                      if(recibido<max1 && recibido>max2){
  18.                         max2=recibido; //si es menor al max1 pero mayor al max 2, guardamos en max2, junto al orden
  19.                         orden2=i;
  20.                      }
  21.     }
  22. printf("\nEl mayor valor es:%d de orden %d y el segundo mayor valor es:%d de orden:%d",max1,orden1+1,max2,orden2+1);
  23. // al i le sumamos +1 para que el orden sea entendible al usuario al igual que cuando se pide ingresar un valor
  24. return 0;
  25. }


saludos
En línea

Pantuflo

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Ayuda con problema en C
« Respuesta #4 en: 11 Mayo 2010, 10:16 am »

Gracias por las respuestas!!

Para los que no han comprendido, en el problema tengo que encontrar el mayor valor de 68 números y el SEGUNDO mayor valor. O sea, los dós más grandes y el orden en el cual esos números fueron ingresados por teclado.

Gracias Ari-Slash por el código. Lo testié pero me sigue pasando lo que me pasaba con todos los codigos que modifiqué hasta ahora (sin suerte de que funcionara).
Por ejemplo, ingresé los números:
1
2
3
5
4
10
en ese orden y el mayor valor me lo toma como 10 pero el segundo mayor me lo toma como 4 y no 5. Este problema surge al ingresar un valor mayor después de uno que ha sido mayor. No sé cómo arreglar eso.
En línea

Ari Slash


Desconectado Desconectado

Mensajes: 1.783



Ver Perfil WWW
Re: Ayuda con problema en C
« Respuesta #5 en: 11 Mayo 2010, 16:41 pm »

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int main(){
  5.     int recibido,max1=0,max2=0,orden1=0,orden2=0,i;
  6.  
  7.     for(i=0;i<6;i++){
  8.                      do{
  9.                         printf("\nIngrese %d ° valor mayor a 0:",i+1);
  10.                         scanf("%d",&recibido);
  11.                      }while (recibido<=0); //se repetira hasta que ingrese numeros mayor a 0
  12.  
  13.                      if(recibido>max1){
  14.                         max2=max1;
  15.                         orden2=orden1;
  16.                         max1=recibido;   // si es mayor al max1 se guardara el valor y su orden
  17.                         orden1=i;
  18.                         recibido=0;
  19.                         } else {
  20.                      if(recibido<max1 && recibido>max2){
  21.                                         max2=recibido; //si es menor al max1 pero mayor al max 2, guardamos en max2, junto al orden
  22.                                         orden2=i;
  23.                                         recibido=0;
  24.                      }
  25.                      }
  26.     }
  27. printf("\nEl mayor valor es:%d de orden %d y el segundo mayor valor es:%d de orden:%d",max1,orden1+1,max2,orden2+1);
  28. // al i le sumamos +1 para que el orden sea entendible al usuario al igual que cuando se pide ingresar un valor
  29. return 0;
  30. }


se le agrego esto
se supone que una vez que hay un nuevo numero mayor, el que esta antes pasa a ser el segundo mayor xD
Código
  1. if(recibido>max1){
  2.                         max2=max1;
  3.                         orden2=orden1;
  4.                         max1=recibido;   // si es mayor al max1 se guardara el valor y su orden
  5.                         orden1=i;
  6.                         recibido=0;
  7.                         }


saludos
« Última modificación: 11 Mayo 2010, 17:11 pm por Ari-Slash » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema hal.dll ayuda
Windows
marrison 2 2,102 Último mensaje 24 Noviembre 2012, 23:55 pm
por marrison
Ayuda con problema C++
Programación C/C++
JeseBichito10 2 2,923 Último mensaje 3 Abril 2014, 12:24 pm
por Eternal Idol
Problema en C [Ayuda]
Programación C/C++
cacacolass 9 2,716 Último mensaje 30 Abril 2014, 08:09 am
por eferion
[C++] Divisibilidad por primos de un número por partes
Programación C/C++
El_Lentejas 6 4,712 Último mensaje 17 Junio 2020, 21:56 pm
por dijsktra
Ayuda con un problema
Programación C/C++
gonwhter 1 2,766 Último mensaje 1 Diciembre 2020, 18:02 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines