<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><div data-html-editor-font-wrapper="true" style="font-family: arial, sans-serif; font-size: 13px;">Dejame un dia para revisar todo el contenido. A i gracias creo que va por hay la cosa.<br><br>September 12, 2017 8:40 PM, "Davidson, Steven" <<a target="_blank" tabindex="-1" href="mailto:%22Davidson,%20Steven%22%20<srd4121@njit.edu>">srd4121@njit.edu</a>> wrote:<br> <blockquote><div><div><div dir="ltr">Hola Colegio,<div></div> <div>En primer lugar, un fichero de cabecera no es técnicamente una biblioteca, aunque se exceptúa aquellas bibliotecas basadas en plantillas de C++. Sugiero que crees dos ficheros: "funciones.h" y "funciones.cpp". El fichero de cabecera debería contener sólo las declaraciones (esto es, prototipos), mientras que el fichero fuente contendrá las creaciones e implementaciones de tales funciones. Así, puedes usar el fichero de cabecera en otros ficheros fuente, sin duplicar las definiciones de las funciones. Recuerda que C/C++ no permite las redefiniciones.</div> <div></div> <div>Para Linux, no debería haber ningún problema, ya que todo lo que tienes está escrito en código fuente y usas el estándar.<br> </div> <div></div> <div>De todos modos, tienes algunos errores en varias funciones; esto es,</div> <div> <br>- La fórmula que usas en 'comb()' es incorrecta; escribes,<br> </div> <div> <div>int comb(int m, int n){</div> <div>return factor(m)/factor(n)*(m-n);</div> <div>}</div> <div></div> <div>La fórmula de combinaciones es:<br><br>m!<br>-------------<br>n! * (m-n)!</div> <div></div> <div>Por lo tanto, debería ser,</div> <div> <div>int comb( int m, int n )<br>{</div> <div>return factor(m) / (factor(n) * factor(m-n));</div> <div>}</div> <div></div> </div> <div>Aconsejo definir 'comb()' de otra manera, porque es posible que algunas combinaciones no se pueden calcular, por salirse del intervalo válido de enteros al calcular cada factorial. La fórmula sería:<br><br>m * (m-1) * ... * (m-n+1)<br>---------------------------------<br>n * (n-1) * ... * 2 * 1</div> <div> <br>Claro está, recomiendo usar 'float' o incluso 'double' para la mayoría de estas funciones, porque puede haber desbordamiento al usar enteros.</div> <div></div> <div> <br>- Para el mínimo y máximo, usas valores iniciales para 'max' que no son correctos, al menos que el array que aceptas siempre va a contener enteros no negativos.<br><br>Aconsejo usar las constantes, 'INT_MIN' e 'INT_MAX', definidas en <climits>. Puedes consultar la referencia en nuestra página yendo a: <a rel="external nofollow noopener noreferrer" target="_blank" tabindex="-1" href="http://c.conclase.net/librerias/index.php?ansilib=limits#inicio">http://c.conclase.net/librerias/index.php?ansilib=limits#inicio</a><br> </div> <div></div> <div>- Usas arrays de cantidad variable (VLA, en inglés). Escribes,<br> <div>int fibo( int a )<br>{</div> <div>int n[a];</div> ...</div> <div>}<br><br>Esto no es estándar, por ahora; es posible que C++17 incluya esta prestación en el lenguaje, pero no está asegurada. Si quieres memoria dinámica, entonces adjudícala explícitamente.</div> <div></div> <div>De todas maneras, el algoritmo que usas realmente no necesita guardar todos los resultados. Sólo necesitas tres variables: la suma, y las dos sumas anteriores. Por ejemplo,<div> <br>int nAnt2 = 0;</div> <div>int nAnt1 = 1;<br>...<br>int nResultado = 1;</div> <div>for( int i=2; i<=a; i++ )<br>{</div> <div>int nActual = nAnt1 + nAnt2;<br><br>nAnt2 = nAnt1;</div> <div>nAnt1 = nActual;<br>nResultado += nActual;</div> <div>}</div> </div> <div></div> <div>- Como ya escribes en tu comentario, cuidado con crear memoria dinámicamente para que se tenga que liberar fuera de la función.<br><br>Aconsejo imponer que la función acepte un tercer parámetro que es el array que contendrá los valores resultantes. Por ejemplo,</div> <div></div> <div>int* orden( int resultado[], int n[], int n2 )<br>{</div> <div>...<br>return resultado;<br>}<br><br>Así puedes "encadenar" las invocaciones de 'orden' con otra función que requiera el array.<br><br> </div> <div>Espero que esto te aclare las dudas.</div> </div> <div></div> <div>Steven</div> <div></div> <div> <div>2017-09-12 11:44 GMT-04:00 colegio4497 <span dir="ltr"><<a target="_blank" rel="external nofollow noopener noreferrer" tabindex="-1" href="mailto:colegio4497@disroot.org">colegio4497@disroot.org</a>></span>:<blockquote style="margin: 0px 0px 0px 0.8ex;border-left: 1px solid rgb(204,204,204);padding-left: 1ex"><div><div style="font-family: arial,sans-serif;font-size: 13px">Simpre para escribir mi codigo de classe uso la libreria funciones.h Me gustaria saber como se hace para incorporar la libreria al systema linux. Os la pongo para que hagais con ella lo que querais.</div></div></blockquote> </div> </div> </div></div></div></blockquote> <signature></signature><br> </div></body></html>