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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 125
141  Programación / Programación C/C++ / Re: ¿Rust sustituirá algún día a C? en: 1 Diciembre 2014, 17:49 pm
Nada más semejante a la realidad...

El artículo en la wikipedia enuncia:

No termino de entender qué tiene que ver con lo que he comentado yo entre C y C++.

C seguirá siendo la base de los sistemas operativos y la programación en general, ergo no creo que "muera" dentro de mucho, mucho tiempo...

Tampoco recuerdo haber comentado nada acerca de la muerte de ningún lenguaje :S:S:S
142  Programación / Programación C/C++ / Re: ¿Rust sustituirá algún día a C? en: 1 Diciembre 2014, 15:38 pm
Los gurús de las predicciones son esa clase de personajillos especialistas en explicar los motivos por los que sus demoledoras previsiones no se han cumplido en absoluto.

Sinceramente no entiendo como se puede comparar la velocidad de ejecucion  de dos lenguajes de programacion.

Puede ser que un compilador de Rust genere codigo objeto mas optimizado que otro compilador de C.
Y aun así, mas optimizado y veloz para que plataforma?  Corre mas rapido en un pentium 3.. pero lo hará en un i5?

A ver, por defecto C tiende a ser más rápido que C++ y no depende en absoluto de las optimizaciones del compilador. Es más debido a las características del propio lenguaje. En C manejas la memoria a un nivel muy bajo, mientras que en C++ una simple línea de código puede desembocar en una serie de llamadas en cascada demoledora (resevas de memoria, herencia, métodos virtuales, ... )

Como norma general yo creo que cuanto más bajo sea el nivel del lenguaje más rápido tiende a ser, digo como norma general porque bien es cierto que los compiladores de lenguajes de alto nivel pueden llegar a hacer maravillas... aún así estas maravillas tienen un límite.
143  Programación / Programación C/C++ / Re: Duda programación C en: 1 Diciembre 2014, 14:43 pm
Con una variable.

Código
  1. int digitoSecuenciaMasLarga = -1;
  2.  
  3. // ...
  4.  
  5. if ( longitud > longitud_maxima)
  6. {
  7.  longitud_maxima= longitud;
  8.  
  9.  if ( digitoSecuenciaMasLarga == -1 )
  10.    digitoSecuenciaMasLarga = numero;
  11.  else if ( digitoSecuenciaMasLarga != numero )
  12.    ++contador_iguales;
  13.  
  14.  longitud = 0;
  15. }
144  Programación / Programación C/C++ / Re: ¿Esto se puede hacer mejor? (C++ iteradores) en: 1 Diciembre 2014, 13:44 pm
Desde mi punto de vista, "auto" no debe usarse indiscriminadamente, solo en aquellos casos en los que el código quede más claro (por ejemplo en el caso de iteradores... todos conocemos los iteradores y no hace falta decir... esto es un iterador). Sin embargo, si de un vistazo rápido no consigues adivinar el tipo al que va a equivaler "auto" entonces es mejor usar el nombrado tradicional. Eso sí, es mi punto de vista, no intento que nadie piense igual.

Por otro lado, no se si cplusplus tiene documentación dedicada de forma exclusiva a la palabra "auto", no obstante, si buscas en google puedes encontrar bastante documentación:

http://en.cppreference.com/w/cpp/language/auto

Un saludo.
145  Programación / Programación C/C++ / Re: Duda programación C en: 1 Diciembre 2014, 12:53 pm
Código
  1. if ( longitud_maxima == 0 )
  2.  printf( "Es una secuencia vacia.\n" );
  3. else if ( contador_iguales>1 )
  4.  printf("\nNo hay secuencia mas larga \"estrictamente\".\n");
  5. else
  6.  printf("\nLa subsecuencia mas larga tiene %d numeros (%d).\n\n", longitud_maxima, /*numero de la subsecuencia mas larga*/);
146  Programación / Programación C/C++ / Re: Duda programación C en: 1 Diciembre 2014, 12:28 pm
No hace falta ese if. Eso lo puedes comprobar al final:

* Si la longitud máxima es 0, es que no se ha introducido ninguna secuencia
* En caso contrario, puede suceder que haya una o varias secuencias máximas del mismo tipo ( 0 o 1 )
* O, caso final, hay una o varias secuencias máximas y éstas son de ambos tipos ( 0 y 1 )

Como ves, puedes eliminar ese if y mover su mensaje al final del programa.
147  Programación / Programación C/C++ / Re: ¿Esto se puede hacer mejor? (C++ iteradores) en: 1 Diciembre 2014, 12:09 pm
Lo cierto es que, pensando un poco más, no hace falta usar "max":

Código
  1. vector<double>::iterator maximo(vector<double>& v)
  2. {
  3.  auto it = v.begin( );
  4.  auto to_return = it;
  5.  
  6.  for ( ++it ; it != v.end( ); ++it )
  7.  {
  8.    if ( *it > *to_return )
  9.      to_return = it;
  10.  }
  11.  
  12.  return to_return;
  13. }
148  Programación / Programación C/C++ / Re: Duda programación C en: 1 Diciembre 2014, 11:58 am
* Si suponemos que se introduce una secuencia correcta, el primer if sobra
* Puedes reutilizar variables si su función es la misma
* Tienes que almacenar en algún sitio el carácter de la secuencia más larga
* La variable que almacena el carácter actual puede ser perfectamente un char
* scanf no te va a devolver EOF si el usuario pulsa "ENTER" ¿Has probado tu programa?
149  Programación / Programación C/C++ / Re: ¿Esto se puede hacer mejor? (C++ iteradores) en: 1 Diciembre 2014, 11:21 am
Algo así:

Código
  1. vector<double>::iterator maximo(vector<double>& v)
  2. {
  3.  vector<double>::iterator it;
  4.  vector<double>::iterator to_return = v.begin( );
  5.  
  6.  double max = numeric_limits<double>::min( );
  7.  
  8.  for ( it = v.begin( ) ; it != v.end( ); ++it )
  9.  {
  10.    if ( *it > max )
  11.    {
  12.      to_return = it;
  13.      max = *it;
  14.    }
  15.  }
  16.  
  17.  return to_return;
  18. }

O, usando C++11

Código
  1. vector<double>::iterator maximo(vector<double>& v)
  2. {
  3.  auto to_return = v.begin( );
  4.  
  5.  double max = numeric_limits<double>::min( );
  6.  
  7.  for ( it = v.begin( ) ; it != v.end( ); ++it )
  8.  {
  9.    if ( *it > max )
  10.    {
  11.      to_return = it;
  12.      max = *it;
  13.    }
  14.  }
  15.  
  16.  return to_return;
  17. }



V2.0:

Código
  1. vector<double>::iterator maximo(vector<double>& v)
  2. {
  3.   return std::max_element( v.begin( ), v.end( ) );
  4. }

Vale que con esta última versión no vas a practicar demasiado con los iteradores... pero nunca hay que perder de vista que la stl tiene infinidad de herramientas que hacen que no tengamos que reinventar la rueda cada dos por tres.

Un saludo.
150  Programación / Programación C/C++ / Re: Problema al devolver objeto en: 28 Noviembre 2014, 20:34 pm
Deberías revisar la implementación del operador de asignación (=) de tu clase "Asociacion". Este operador se llama al hacer la asignación "*as=consecuentes[1]".

Por otro lado, as=&consecuentes[0]; esto no va a tener ningún efecto porque "as" está declarada a nivel local, luego si haces que "as" apunte a otro objeto, ese cambio se va a perder fuera de la función:

Código
  1. void func( int* ptr )
  2. {
  3. *ptr = 200;
  4.  ptr = 100;
  5. }
  6.  
  7. int main( )
  8. {
  9.  int dato;
  10.  int* ptr = &dato;
  11.  
  12.  func( ptr );
  13.  
  14.  printf( "%d\n", *ptr ); // imprime 200, ok
  15.  printf( "%p\n, ptr ); // Va a ser distinto de 100, este cambio no se ha aplicado
  16. }
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 125
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines