Programa de Concurso de Programacion

Iniciado por ¡Micronet!, 26 Diciembre 2010, 05:25 AM

0 Miembros y 3 Visitantes están viendo este tema.

¡Micronet!



Aqui pongo este problema... que lo quiero resolver entre todos, por que para ese entonces no entendi como hacerlo, espero me puedan ayudar a comprender este programa en C++, ya que en eso lo hare saludos...


Mi Unico Objetivo es aprender... :)

Lo que no entiendo es que hacer en ese programa... alguien me lo podria explicar porfavor, para ponerme a trabajar en el :)

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

ghastlyX

Básicamente, te piden que dada una secuencia de números encuentres la longitud de la subsecuencia consecutiva creciente más larga y digas en qué posición empieza si no lo he entendido mal.

El problema es fácil, ya que además te permiten hacerlo cuadráticamente, dado que la longitud de la secuencia te dicen que como mucho será 1000.

¡Micronet!

#2
Cita de: ghastlyX en 26 Diciembre 2010, 16:07 PM
Básicamente, te piden que dada una secuencia de números encuentres la longitud de la subsecuencia consecutiva creciente más larga y digas en qué posición empieza si no lo he entendido mal.


okai ... mañana empiezo con este programa... y publico mi programa :), espero sea posible que me puedan ayudar en el transcurso... se que a lo mejor es un programa basico pero me mantiene ocupado programando :) jejeje


Lh: No hagas doble post utiliza el botón modificar. Gracias

usando el ejemplo... numero 7
son 7 numeros que se agregan... de los cuales son:

3,1, 4,1, 5,9,2

tengo en mente que la secuencia es la siguiente:
3 + 1 = 4  (S=3 (ORIGEN))              
4 + 1 = 5 (P=4 (FIN)) ¿por que? porque el siguiente numero no da la suma correcta
1 + 5 = 9 (Error)






Código (C++) [Seleccionar]
#include <iostream>
using namespace std;

int main(){
int p=0,i,v[6];
int origen,fin,sum;
cout<<"Dame una secuencia de 7 numeros"<<endl;

for(i=0;i<6;i++){
cin>>p;cout<<endl;
v[i]=p; p=0;
}

origen= v[0];
for(i=0;i<6;i++){
cout<<v[i]<<" ";
}cout<<endl;


for(i=0;i<6;i++){
sum=v[i]+v[i+1];
if(v[i+2] == sum){
fin=v[i+1];
}
i+=1;
}

cout<<endl<<"Origen(S): "<<origen<<"  Final(P) "<<fin;


system ("pause");
   return 0;
}


Gracial daniel666...


*Suponiendo que estoy bien

Hice este programa... el cual por obvias razones me arrojara basura... mis dudas
suponiendo que estoy viendo bien el problema....

como solucionaria lo que me arroja de basura (osease...que no se pase del limite de mi vector) ¿?  :huh:

y como hago que mi vector sea dinamico ¿? (por que si lo noto en el problema es un numero infinito)  :huh:



*Si estoy mal desde el inicio

Alguien me puede explicar con mas detalle el problema ¿? :S... para poder resolverlo mejor... :S

"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

negux

para que usas la matriz  :huh: deberia de ser un arreglo no?

int v[6];

leogtz

Cita de: daniel666999 en 30 Diciembre 2010, 18:21 PM
para que usas la matriz  :huh: deberia de ser un arreglo no?

int v[6];


Está usando un arreglo, no una matriz.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

xassiz~

Cita de: Leo Gutiérrez. en 30 Diciembre 2010, 19:50 PM

Está usando un arreglo, no una matriz.
¿No es lo mismo vector, arreglo, matriz, array?

Ferno

Cita de: pablomi en 30 Diciembre 2010, 21:19 PM
¿No es lo mismo vector, arreglo, matriz, array?

Arreglo = vector = array (arreglo en inglés).
Matriz es un arreglo de arreglos, es decir, de dos dimensiones. Es un arreglo, el cual cada elemento es de tipo arreglo. Al hacer esto, es análogo a decir que formaste una tabla o una matriz.

leogtz

No, no es lo mismo. vector es propio de notación matemática, aunque también es aplicable aquí. Matriz es diferente de arreglo o array.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

¡Micronet!


"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"

08l00D

#9
Cita de: ¡Micronet! en 30 Diciembre 2010, 08:41 AM
y como hago que mi vector sea dinamico ¿? (por que si lo noto en el problema es un numero infinito)  :huh:
justamente con memoria dinamica... lo que podrias hacer es declarar el array como un puntero al tipo de dato que quieras usar y con el operador new le asignas la cantidad de memoria que precises... despues el identificador que usaste para declarar el puntero lo podes usar como si enrealidad fuera un array... es decir indexandolo con los operadores [ y ].. o sino usando aritmetica de punteros.. puntero + i... *(puntero + i)

con respecto a tu problema pienso que lo estas planteando mal... el algoritmo no seria asi..el problema te deci que encuentres la subsecuencia creciente mas grande..osea de un array de enteros cual es la secuencia de menor a mayor mas grande...
Como dice el ejercicio P se refiere al numero en el que empieza esa subsecuencia...
y S se refiere a la longitud de esa subsecuencia NO al elemento con el que termina... es decir a la cantidad de elementos que conforman esa subsecuencia...

Citar
tengo en mente que la secuencia es la siguiente:
3 + 1 = 4  (S=3 (ORIGEN))             
4 + 1 = 5 (P=4 (FIN)) ¿por que? porque el siguiente numero no da la suma correcta
1 + 5 = 9 (Error)

El planteamiento esta mal por que el programa no te pide que busques el cumplimiento de una sucesion de patrones....
mira te pongo el ejemplo de como seria la subsecuencia de esa secuencia que pusiste:
secuencia: 3,1,4,1,5,9,2
subsecuencia maxima: 3,4,5,9  (como ves cuenta de 4 elementos, S es igual a 4)
p: 3
s: 4

tambien hay otra subsecuencia maxima empezando por el elemento nº 2
1,4,5,9

la implementacion del algoritmo no es muy compleja... si entendiste lo que puse vas a poder hacerlo facilmente.. cualquier duda pregunta...