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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Código más eficiente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Código más eficiente  (Leído 6,211 veces)
prometheus48

Desconectado Desconectado

Mensajes: 176


Making a Distro...


Ver Perfil
Código más eficiente
« en: 1 Enero 2012, 15:59 pm »

Hola,

Estaba yo con el ordenador y de repente se me ocurrió hacer un programa el cual te pide 3 números y después te dice cuál es el más grande.
Pero no solo eso, lo que quería era hacer un programa en C++, que sea lo mas rápido posible, que gaste muy pocos recursos y que ocupe muy poca memoria.
Osea, un programa simple, pero programado de tal forma que sea perfecto.
Hice un código muy simple intentando llamar lo menos posible a funciones,
bueno, aquí va mi código, espero que alguien me diga como mejorarlo, o que posteen
su propia versión

Código
  1. #include <iostream>
  2.  
  3.  
  4.  
  5. int main()
  6. {
  7.    int a,b,c;
  8.    std::cout<<"Type 3 numbers ";
  9.    std::cin>>a;
  10.    std::cin>>b;
  11.    std::cin>>c;
  12.    if(a>b and a>c)
  13.    {
  14.           std::cout<<"The biggest number is \n" <<a<<std::endl;
  15.           std::cin.get();
  16.    }
  17.    if(b>a and b>c)
  18.    {
  19.           std::cout<<"The biggest number is  \n"<<b<<std::endl;
  20.           std::cin.get();
  21.    }
  22.    if(c>a and c>b)
  23.    {
  24.           std::cout<<"The biggest number is \n"<<c<<std::endl;
  25.           std::cin.get();
  26.    }      
  27.    system("PAUSE");
  28.    return EXIT_SUCCESS;
  29. }
  30. [/code==cpp]  
  31. Salu2!


En línea

"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana.
Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas"
The knowledge is free
folostia

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Código más eficiente
« Respuesta #1 en: 1 Enero 2012, 16:46 pm »

Aquí te dejo mi versión,pero está en C:

Código:
/*el mayor de tres números*/
#include <stdio.h>
#include <stdlib.h>

int main(){
    int mayor,num1,num2;
    printf("Escribe tres numeros: ");
    scanf("%i %i %i", &max,&num1,&num2);
   
    if (max < num1){
        max=num1;
    }
    if (max < num2){
        max=num2;
    }   
    printf("\nEl mayor es: %i",max);
    system("PAUSE");
    return 0;
}


En línea

"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941
Leyer


Desconectado Desconectado

Mensajes: 782


leyer@elhacker.net


Ver Perfil WWW
Re: Código más eficiente
« Respuesta #2 en: 1 Enero 2012, 16:55 pm »

Mi version, usar system pause? :-X

Código
  1. #include <iostream>
  2. using namespace std;
  3. int main(int argc,char *argv[]){
  4. int n1,n2,n3;
  5. cout<<"Type 3 numbers\n";
  6. cin>>n1>>n2>>n3;
  7. int _M=(n1>n2)?(n1>n3)?n1:n3:(n2>n3)?n2:n3;
  8.        cout<<"The biggest number is " <<_M;
  9.        cin.get();
  10.        cin.get();
  11. return 0;
  12. }
  13.  
« Última modificación: 1 Enero 2012, 17:02 pm por Leyer » En línea

alexis33de

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Código más eficiente
« Respuesta #3 en: 1 Enero 2012, 16:56 pm »

Mi versión hecha en Borland  ;D. No leí q decía sin funciones XD, nueva versión !!!
Código
  1. #include <iostream.h>
  2. #include <conio.h>
  3.  
  4. int main()
  5. {
  6. int numeros[2];
  7.    int max=0;
  8.   cout<<"coloque los 3 numeros";
  9.    for(int i=0;i<3;i++)
  10.    {
  11.     cin>>numeros[i];
  12.         max=numeros[0];
  13.        if(numeros[i]>max)
  14.   {
  15.     max=numeros[i];
  16.          }
  17.  
  18.    }
  19.   cout<<max;
  20.   getch();
  21.   return 0;
  22. }
« Última modificación: 1 Enero 2012, 17:21 pm por alexis33de » En línea

prometheus48

Desconectado Desconectado

Mensajes: 176


Making a Distro...


Ver Perfil
Re: Código más eficiente
« Respuesta #4 en: 1 Enero 2012, 17:07 pm »

Aun más simplificado
Código
  1.  
  2. #include <iostream>
  3.  
  4.  
  5.  
  6. int main()
  7. {
  8.    int a,b,c;
  9.    std::cout<<"Type 3 numbers ";
  10.    std::cin>>a>>b>>c;
  11.    if(a>b and a>c)std::cout<<"The biggest number is \n" <<a;
  12.    std::cin.get();
  13.    if(b>a and b>c)std::cout<<"The biggest number is  \n"<<b;
  14.    std::cin.get();
  15.    if(c>a and c>b) std::cout<<"The biggest number is \n"<<c;
  16.    std::cin.get();
  17.    return 0;
  18. }
  19. [/code=cpp]
En línea

"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana.
Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas"
The knowledge is free
Sagrini

Desconectado Desconectado

Mensajes: 107


Ver Perfil WWW
Re: Código más eficiente
« Respuesta #5 en: 1 Enero 2012, 18:20 pm »

El último NO es más simplificado que los otros, al contrario.
Os dejo el mío ;)
Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5. int a, b, c; printf ("Escribe tres numeros: "); scanf ("%d %d %d", &a, &b, &c);
  6. if (a<b) a=b; if (a<c) a=c; printf ("El mayor numero ingresado es %d\n\n", a);
  7. getchar (); return 0;
  8. }
  9.  
  10.  
En línea

ace332

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: Código más eficiente
« Respuesta #6 en: 1 Enero 2012, 18:23 pm »

Otra más en C  ;D. No se cuan rápido sea, me dio flojera comparar :laugh:
Código
  1. #include <stdio.h>
  2.  
  3. #define permutar(a,b) {int t=a;a=b;b=t;}
  4.  
  5. int main()
  6. {
  7.  int a,b,c;
  8.  scanf("%d%d%d",&a,&b,&c);
  9.  if(b<a)permutar(a,b);
  10.  if(c<b)permutar(b,c);
  11.  printf("%d\n",c);
  12.  return 0;
  13. }
  14.  

PD: Ahora que lo veo mejor... es el sort burbuja para 3 elementos

Saludos
« Última modificación: 1 Enero 2012, 18:35 pm por GarbageCollector » En línea

Sagrini

Desconectado Desconectado

Mensajes: 107


Ver Perfil WWW
Re: Código más eficiente
« Respuesta #7 en: 1 Enero 2012, 20:46 pm »

El tuyo no me gusta :P Tanta llamada a funciones te retrasa mucho. El mío te supera (por milésimas, pero lo hace) en cuestión de tiempo y ciclos ^^
En línea

alexis33de

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Código más eficiente
« Respuesta #8 en: 1 Enero 2012, 20:49 pm »

Y como se saca los tiempos, no se como se hace en mi compilador  ;D , seria bueno q alguien coloque los tiempos d todos los codigod  :rolleyes:
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.148


I'Love...!¡.


Ver Perfil WWW
Re: Código más eficiente
« Respuesta #9 en: 1 Enero 2012, 22:25 pm »

...
en CPP
Código
  1.  
  2. #include <cstdlib>
  3. #include <iostream>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. /// EntryPoint
  9. int main(int argc, char *argv[])
  10. {
  11.    int a = 16,
  12.        b = 1500,
  13.        c = 14;
  14.  
  15.    cout << "El maximo valor fue: " << max(a,max(b, c)) << endl;
  16.    cin.get();
  17.  
  18.    return EXIT_SUCCESS;
  19. }
  20.  
  21.  

en C-ANSI:

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define max(a,b) a>b?a:b
  5.  
  6. /// EntryPoint
  7. int main(int argc, char *argv[])
  8. {
  9.    int a = 16,
  10.        b = 15,
  11.        c = 14;
  12.  
  13.    printf("El maximo valor fue: %d", max(a, max(b, c)));
  14.    getchar();
  15.  
  16.    return EXIT_SUCCESS;
  17. }
  18.  
  19.  

Tambien puedes suplantar max(a, max(b, c)) por:

Código
  1.  
  2. ((a>((b>c)?b:c))?a:((b>c)?b:c))
  3. ///o tambien por (Son identicos solo quite los parentesis cosa NO recomendada!&#161;):
  4. a>b>c?b:c?a:b>c?b:c
  5.  
  6.  

En ambos codigos... pero no se entiende muy bien que digamos, mejor deja max(a, max(b, c)) ya que se entiende muchisimo mejor!¡.

Dulces Lunas!¡.
« Última modificación: 1 Enero 2012, 22:59 pm por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines