Ayuda con programa en c++

komoasi
25 de Mayo del 2008
Hola a todos!!

Me pusieron una tarea en la clase y no se muy bien que es lo que tengo que hacer... ojala puedan ayudarme, aqui les dejo el enunciado.

Consideremos un arreglos de N elementos enteros (int). En él se le llama sub arreglo a un grupo cualquiera de elementos consecutivos. Por ejemplo, el arreglo

[ -10 2 667 22 -44 ]

tendría (entre otros más) los sub arreglos

[ 2 667 22 ]

[ 667 22 -44 ]

Para cada arreglo dado sería posible calcular la suma de los elementos que lo componen. Por ejemplo, estas sumas serían 637, 691 y 645 para cada uno de los anteriores.

Partiendo de esto, se plantea el problema de encontrar el sub arreglo de un arreglo dado tal que la suma de sus elementos sea máxima. Por ejemplo, si consideramos el primer arreglo de arriba, el sub arreglo de suma máxima estaría formado por los elementos segundo, tercero y cuarto.

1. Conciba un algoritmo capaz de obtener el sub arreglo de suma de elementos máxima correspondiente a un arreglo inicial suministrado.
En caso de que hubiese más de un sub arreglo máximo, basta que el algoritmo sea capaz encontrar uno de ellos.
El algoritmo debe representarse como un diagrama de flujo adecuadamente comentado.
Esta parte aporta 5 puntos a la teoría.
2. Investigue bajo qué condiciones pudiera haber más de un sub arreglo máximo y dé ejemplos.
Esta parte aporta 5 puntos a la teoría.
3. Implemente el algoritmo del primer punto en una aplicación que reciba un arreglo de int y escriba:
* Índice en el arreglo dado del primer elemento en el subarreglo máximo
* Índice en el arreglo dado del último elemento en el subarreglo máximo
* Suma de los elementos del sub arreglo máximo
Por ejemplo, para el arreglo dado como ejemplo arriba, la salida podría producir algo similar a esto:

Arreglo a analizar:

-10 2 667 22 -44

Subarreglo: 1 - 3
Elementos del subarreglo:
2 667 22

Suma del subarreglo: 691

La aplicación debe estar programada en C++ haciendo empleo de los recursos característicos del lenguaje. El código debe estar auto documentado según el método de marcaje de la herramienta Doxygen o alguna otra similar.
Esta parte aporta 10 puntos a la práctica.

Productos

Se remitirá al profesor por email un archivo .zip con el siguiente contenido:

* Diagrama de flujo del algoritmo (imágenes jpg)
* Documento de Microsoft Word o Acrobar Reader que presente su análisis de las condiciones en que pudiera haber más de un sub arreglo máximo y presente ejemplos.
* Archivo(s) fuente de la aplicación (.h / .cpp)