PDA

Ver la versión completa : Ayuda sobre algoritmo



Don Balon
24/03/2009, 22:22
Holaa.. bueno como harian este algoritmo?, NO tiene q ser con graficos.

Enunciado:


Dado un numero X natural distinto de 1 generar la secuencia de numeros pares menores o iguales a X

A ver si me ayudan en esta tareita, porq toy frito con esto.
Saludos

Enkapzulada
25/03/2009, 00:10
Nunca entiendo bien las tareitas que te dan, que tenes que armar el seudo codigo o wut? o.O!

Una manera es ir contando segun tu numero de x, excluyendo el 1, e ir dividiendo x 2 y analizando el resto de cada numero menor o igual a dicho x , si es divisible por 2 genial, sino te va a dar un resto, por ende es impar, no acumulas el numero en tu contenedor ( array for sample)

Sopeti06
25/03/2009, 02:08
aver, lo dejo escrito aca, asi mientras t escribo la solucion voy pensandolo de aca..

Dado un numero X natural distinto de 1 generar la secuencia de numeros pares menores o iguales a X

nose en q codigo lo tenes q armar o si en pseudocodigo o q.. yo t doy la idea, vs dsp armala en el compilador q tengas :P

mira, se puede hacer con un puntero para poder guardar en el puntero el numero ese x y poder devolverlo con una funcion a otra variable, asi no haces q la variable ingresada x se altere..(si no sabes ocmo usar punteros, debido a q nose q nivel ni para q es esto, podes copiar la variable haciendo un proceso "X=X2;" x ej..
en lo q respecta al cuerpo, haces una repetitiva en la q le sumas 2 a la variable xq tiene q ser par, y la condicion pones a la variable x, para q se repita ese proceso la cantidad de veces necesaria (segun lo q este algoritmo t pide son x veces.. osea no debe superar las x veces.. tenes q dar x numeros pares partiendo de ese x).. y antes de eso le mandas un mientras para verificar q el numero no sea impar, xq si lo es debes sumarle un 1 antes para hacerlo par..
y para verificar q no sea igual a 1 podes hacerle un do while o bucle hasta q la condicion X=!1 se cumpla..
Q conste a todo eso le agregas cartelitos de salida q dicen, introduci el numero, re ingrese el numero x diferente de 1, bla bla.. si no fuese q vengo de vacas t lo compilaba en un pedo pero toy muy oxidado xD jajaja

P.D: Aca srspoil.. viste q no soy puro vicio? jajaja cualkier cosa mandame un pm asi m explicas para q carajo es.. mñ entro al foro y lo leo ^^ d ultima ultimamos por msn asi t lo explico bn.. y aclara para q compilador y curso es xD ajajaja bye bye

vofijatee
25/03/2009, 09:56
Según lo que entendí seria así:



#include <cstdlib>
#include <iostream>

using namespace std;

bool espar(int numero);

int main(int argc, char *argv[])
{
int numero;
cout << "Ingresa el numero \n";
cin >> numero;

if (espar(numero) == true)
{
for (int i=numero; i<100;i = i+2)
{
cout << i << "\n";
}
}
else
{
// si es impar hacer algo
// ¿lo hago par?
numero++;
for (int i=numero; i<100;i = i+2)
{
cout << i << "\n";
}
}

system("PAUSE");
}

bool espar(int numero)
{
int resto;
int numero2;
resto = numero % 2;
if ((resto==0) && (numero!=0))
{
return true;
}
else
{
return false;
}
}



Esto hace la secuencia de números pares hasta que el numero sea 100 (se puede cambiar pero si no se llena todo de numeritos y es un bardo). Tampoco sabía que pasaba si el número ingresado era impar, asique los convierto en par.

Bueno, cualquier cosa avisame y lo modifico.

saludos

GoD
25/03/2009, 10:24
x = [al número natural que quieras]
i = 1
y(x)

Do while x <> 1 and x >= 0
if (x/2 = 0) then
y(i) = x
i= i + 1
end if
x = x-1
Loop



Pasalo a pseudocódigo puro y tenés el algoritmo.


Saludos!

l2neitan
25/03/2009, 13:28
x = [al número natural que quieras]
i = 1
y(x)

Do while x <> 1 and x >= 0
if (x/2 = 0) then
y(i) = x
i= i + 1
end if
x = x-1
Loop



Pasalo a pseudocódigo puro y tenés el algoritmo.


Saludos!



:O Vo so groso vithe... Che, das clases particulares ? :P

Don Balon
25/03/2009, 13:55
Si, es tipo asi como dijo el tio GoD pero todavia no estamos "codeando", o sea hay q escribirlo textualmente. Es muy basico lo que estamos viendo, practicamente no estamos haciendo codigos todavia.
Hoy a la tarde le pregunto a un amigo como hizo y se los dejo.
Saludos.

GoD
25/03/2009, 14:12
A ver Don Balón si nos entendemos, vos estás en la etapa donde por ejeplo te piden como harías para cambiar una rueda y tenés que decir.

1. Pongo el gato debajo del auto.
2. Aflojo los tornillos de la rueda a cambiar.
3. Elevo el auto.
4. Termino de sacar los tornillos.
5. Saco la rueda.
6. ...

O ya estás en la etapa del pseudocódigo donde por ejemplo decís.

Mientras x <> 1 hacer

Si i = 5 entonces
Instrucción...
fin si

fin mientras


Saludos!

vampirikarulez
25/03/2009, 14:25
"primer paso: enchufar la licuadora...." es un clasico

ahora, si te kuesta eso, agarrate en pascal :P

Don Balon
25/03/2009, 14:30
A ver Don Balón si nos entendemos, vos estás en la etapa donde por ejeplo te piden como harías para cambiar una rueda y tenés que decir.

1. Pongo el gato debajo del auto.
2. Aflojo los tornillos de la rueda a cambiar.
3. Elevo el auto.
4. Termino de sacar los tornillos.
5. Saco la rueda.
6. ...

O ya estás en la etapa del pseudocódigo donde por ejemplo decís.

Mientras x <> 1 hacer

Si i = 5 entonces
Instrucción...
fin si

fin mientras


Saludos!

la de pseudocódigo tio, mira aca dejo un ejemplo de otro problema mas facil:

La estructura para todos los problemas que tengo que hacer es como esta:

__________________
- Dado un numero X natural generar la secuancia de los numeros naturales hasta X


Comienzo
N = 0
Ingresar X
Repetir
N = N+1
Mostrar N
Hasta que N = X
Fin

Luego de eso tengo que hacer la prueba de escritorio.
_________________

Saludos, a la noche dejo la posible solucion del primer problema.

GoD
25/03/2009, 14:45
Ok, acá va:

Comienzo
N = 0
Ingresar X
Si x > 1 entonces (verifico que no sea igual a 1 según el enunciado y además al poner mayor que 1 descarto que no ingresen 0 ya que cero tambien es un número natural y como no es par no se toma en cuenta)
Repetir
N = N+1
Si N/2 = 0 entonces
Mostrar N
Fin Si
Hasta que N = X
Fin si
Fin


Saludos!

Don Balon
25/03/2009, 14:57
Gracias men, voy a intentar entenderlo ahora xD.
Saludos, no me lo cerres el Th todavia por favor porq recien mañana lo corregimos en clase y quiero compararlos a ver si son igual o de otra forma y posteo :P.

Sopeti06
25/03/2009, 17:01
hice lo posible, pero era tarde y aparte cmo dije.. si no fuese q toy oxidado de las vacas, t lo tiraba al toke.. aparte creo q m hice un quilombo mientras t lo explicaba.. jajaja igual creo q no tube taaan mal xD aahhaha
god se lleva el premio :P

P.D: M costo entender lo q pedian xD ajajaja o los medicamentos q tomo m tan dejando ******, o el alcohol m quema las neuronas... seran las 2? :) jajaja
abrazo tio, abrazo balon =)

leayoo
25/03/2009, 20:15
Usas el turbo pascal? Yo durante un trimestre tuve que usarlo y la verdad que me rompia el coco pensando en los problemitas ;) Soy muy duro

Don Balon
25/03/2009, 20:18
hice lo posible, pero era tarde y aparte cmo dije.. si no fuese q toy oxidado de las vacas, t lo tiraba al toke.. aparte creo q m hice un quilombo mientras t lo explicaba.. jajaja igual creo q no tube taaan mal xD aahhaha
god se lleva el premio :P

P.D: M costo entender lo q pedian xD ajajaja o los medicamentos q tomo m tan dejando ******, o el alcohol m quema las neuronas... seran las 2? :) jajaja
abrazo tio, abrazo balon =)

SrSpoil no estuviste tantan mal xD pero se nota que es por el alcohol.. que se te cruzaban las palabras :P

--------

Miren aca deje lo que yo pense que es distinto a lo que el Tio hizo, creo q es mas facil.


Comienzo
N = 0
Ingresar X // Elijo el numero a ingresar
Repetir
N = N + 2
Si N > X entonces
N = N - 1
Mostrar X
Hasta que N = X
Fin

Ahora lo explico en criollo:

Por ejemplo elijo el numero 4, empieza a correr el programa y a sumar de a 2 a partir del 0, 0+2 = 2+2= 4 --> N = 4. Se termino el programa, los numeros consecutivos pares y/o iguales a 4 son: 2; 4.

Por ejemplo elijo el numero 5, empieza a correr el programa y suma de a 2 a partir del 0, 0+2 = 2+2= 4+2 = 6, se paso del valor de la X, entonces resta 1, 6-1=5 ---> N = 5. Se termino el programa, los numeros consecutivos pares y/o iguales a 5 son: 2; 4.


Saludos, (L

Singanee
25/03/2009, 23:59
no te dijo el profesor en la primer clase que hay miles de formas de resolver los ejercicios?

GoD
26/03/2009, 10:24
SrSpoil no estuviste tantan mal xD pero se nota que es por el alcohol.. que se te cruzaban las palabras :P

--------

Miren aca deje lo que yo pense que es distinto a lo que el Tio hizo, creo q es mas facil.


Comienzo
N = 0
Ingresar X // Elijo el numero a ingresar
Repetir
N = N + 2
Si N > X entonces
N = N - 1
Mostrar X
Hasta que N = X
Fin

Ahora lo explico en criollo:

Por ejemplo elijo el numero 4, empieza a correr el programa y a sumar de a 2 a partir del 0, 0+2 = 2+2= 4 --> N = 4. Se termino el programa, los numeros consecutivos pares y/o iguales a 4 son: 2; 4.

Por ejemplo elijo el numero 5, empieza a correr el programa y suma de a 2 a partir del 0, 0+2 = 2+2= 4+2 = 6, se paso del valor de la X, entonces resta 1, 6-1=5 ---> N = 5. Se termino el programa, los numeros consecutivos pares y/o iguales a 5 son: 2; 4.


Saludos, (L


La de usar N+2 está buena, te evitas loopear todos los impares pero tenés 4errores:
1) Te faltó cerrar el IF
2) Estás mostrado X en vez de N
3) EN ningún lugar validáz que X sea distinto a 1, ya que según el enunciado no podés admitir su ingreso.
4) SI yo ingreso 0 tu programa devuelve "algo" y no existe ningún número menor o igual a cero que sea par.

Además con el N+2 te evitás el siguiente IF para comrpar si son pares o no:
Si N/2 = 0 entonces
pero necesitas poner un IF de que si N > X le reste 1 a N para así poder llegar a la igualdad de N=X que es la que te da la salida de loop.
Conclusión: Quedate con el mío ;)

La que podés hacer para ahorrarte un par de líneas es no usar la variable N, te quedaría así:

Comienzo
Ingresar X
Si x > 1
Repetir
Si el resto de X/2 = 0 entonces
Mostrar X
Fin Si
x = x-1
Hasta que X = 1
Fin si
Fin


Fijate que el la que postee ayer hay un error porque yo te puse:
Si N/2 = 0 entonces
y en realidad es:
SI el resto de N/2 = 0 entonces
Ya que para saber si un número es para uno se fija que el resto de ese número dividido 2 de cero.

Yo lo escribí así porque no recuerdo como era en pseudocódigo pero en realidad se usa un función llamado MOD para calcular el resto de un número dividido por otro.
Sería así para el algoritmo de ayer:
SI N mod 2 = 0 entonces
o así para el que te paso en este thread:
Si X mod 2 = 0 entonces

Saludos!

Don Balon
26/03/2009, 22:22
Gracias GoD sino tambien para que X >1 podemos hacer esto tambien

Comienzo
mostrar "Ingresar un numero natural mayor a 1"
repetir
ingresar X
Hasta que x >1


Son mas codigos pero asi lo vimos en el cole hoy.
Saludos.


PD: cero (0) no es un numero natural tio, me habia olvidado de decirtelo antes. tkb! aree todo bien

Enkapzulada
27/03/2009, 01:42
PD: cero (0) no es un numero natural tio, me habia olvidado de decirtelo antes. tkb! aree todo bien

o.O!
Pobre "tio God" !

Al final son super sencillines los ejercicios, todos nos complicamos mas de la cuenta, cada uno acostumbrado a un lenguaje. :)

Exitos!

GoD
27/03/2009, 10:05
Gracias GoD sino tambien para que X >1 podemos hacer esto tambien

Comienzo
mostrar "Ingresar un numero natural mayor a 1"
repetir
ingresar X
Hasta que x >1


Son mas codigos pero asi lo vimos en el cole hoy.
Saludos.


PD: cero (0) no es un numero natural tio, me habia olvidado de decirtelo antes. tkb! aree todo bien

Don Balón, algunos matemáticos consideran al cero un número natural, preguntáselo a tu profesor.
De hecho si lees la definición de "número natural" de la real academia española, verás que SI contemplan el cero.
Acá te dejo el link para que lo leas:
http://buscon.rae.es/draeI/SrvltGUIBusUsual?TIPO_HTML=2&TIPO_BUS=3&LEMA=n%FAmero#n%C3%BAmero_natural.


Saludos!

Don Balon
30/03/2009, 12:06
Don Balón, algunos matemáticos consideran al cero un número natural, preguntáselo a tu profesor.
De hecho si lees la definición de "número natural" de la real academia española, verás que SI contemplan el cero.
Acá te dejo el link para que lo leas:
http://buscon.rae.es/draeI/SrvltGUIBusUsual?TIPO_HTML=2&TIPO_BUS=3&LEMA=n%FAmero#n%C3%BAmero_natural.


Saludos!

Sisi, mi profesor me dijo que 0 no es numero natural ;)


Aca dejo la solucion final corregida en clase:

Comienzo
N = 0
Repetir
Ingresar X
Hasta que x > 1
Repetir
N = N+2
Mostrar N
Hasta que N = X ó N = X-1
Fin


Prueba de Escritorio:

http://img13.imageshack.us/img13/2822/dibujozmg.jpg

Saludos y Gracias a todos (L