¿Me ayudais a programar?

Hola a todo, se de buena mano, que por este foro hay gente que sabe programar y mucho.

Me preguntaba si alguien me podria ayudar a programar con maple, son un par de ejercicios chorras ( para el que sabe )pero que a mi me estan llevando muchas complicaciones.

agradeceria mucho vuestra ayuda.

estoy por aqui esperando.
naveganterrr está baneado por "clon/troll"
Imagen
Plantea esos ejercicios a ver si hay alguien que te pueda dar alguna pista.
Dispara ya y déja los formalismos para el subforo de literatura XD

Imagen
Plantea los ejercicios y lo que has intentando/hecho
ok ahi voy:

el primer ejercicio dice:define una funcion explode,que si le das una cadena de caracteres (string) te devuelva una lista con los caracteresde esa palabra.
mi ejercicio:

restart;
explode:=proc(paraula::string);

j:=length(paraula);
for i from 1 to j do
L[i]:=paraula[i];

end do;
print(L);

end proc;
implore:=proc(llista);
paraula::string;
k:=nops(llista);
for i from 1 to k do
paraula[i]:=llista[i];
end do;
print(paraula);

end proc;

luego, se tiene que hacer al reves, este no me sale, el primero, no me sale del todo bien, porque me da la palabra hola por ejemplo, e la devuelve como[1=h, 2=o. 3=l, 4=a] donde estos numeros no deberian de slir.

2o ejercicio:Escribe una funcion que te de la posicion de un caracter, dada una lista.
posicio:=proc(lletra,llista);
i:=1;
no_trobat:=false;
j:=nops(llista);
while ((i<j) and (no_trobat=false)) do
if evalb(lletra=llista[i]) then
trobat:=true;
print(i);
end if;
i:=i+1;
end do;
end proc;
posicio("a",["h","o","r","a"]);

y el tercero, ya no me sale.
Escrive una funcion, que dado el alfabeto, si por ejemplo le ponemos k=2, te devuelba el alfabeto corrido, es decir b,c,d...a.
este, se que se tiene que hacer con una funcion que es:k mod lengh(alfabet)
pero no tengo ni idea.

gracias de nuevo
explode:=proc(paraula::string);
j:=length(paraula);
for i from 1 to j do
L[i]:=paraula[i];
end do;
print(L);
end proc;


implore:=proc(llista);
paraula::string;
k:=nops(llista);
for i from 1 to k do
paraula[i]:=llista[i];
end do;
print(paraula);
end proc;


¿Estos dos primeros hacen lo mismo, no? ¿"llista" no lo declaras como una string al principio, como haces con paraula en el explode?
Por otra parte:

posicio:=proc(lletra,llista);
i:=1;
no_trobat:=false;
j:=nops(llista);
while ((i<j) and (no_trobat=false)) do
if evalb(lletra=llista[i]) then
trobat:=true;
print(i);
end if;
i:=i+1;
end do;
end proc;
posicio("a",["h","o","r","a"]);


Defines "no_trobat", pero luego usas "trobat" ¿error tipográfico?

Y en el 3º: ¿la función mod no era para que te diese el residuo de divisiones ein? ?
el 1o i el segundo hacen lo mismo, y no deberian, deberian hacer lo contrario.
el 2o, si es un error tipografico.
tiees idea de como arreglar el 1o??
drareg18 escribió:el 1o i el segundo hacen lo mismo, y no deberian, deberian hacer lo contrario.
el 2o, si es un error tipografico.
tiees idea de como arreglar el 1o??


OK, entonces cambiando el orden del "for" y haciendo un pequeño apaño en el puntero de "paraula" debería chutar:

implore:=proc(llista);
paraula::string;
k:=nops(llista);
for i from k to 1 do
paraula[k-i+1]:=llista[i];
end do;
print(paraula);
end proc;
el implore este no acaba de funcionar, lo pongo tal y como me has dicho, y solo me sale la primera letra de la lista:s
drareg18 escribió:el implore este no acaba de funcionar, lo pongo tal y como me has dicho, y solo me sale la primera letra de la lista:s


Coñe, me has roto: ¿poniéndole "paraula[k-i+1]" y empezando a contar el "for" desde "k" no chuta?

PD: podría ser ¿eh? no tengo ni puñetera idea de maple XD
PD2: pon dentro del for un print(i), para ver si el puntero decrece; en algunos lenguajes hay que poner explícitamente el STEP -1 en el "for" para hacer decrecer el puntero "i" a la fuerza
buff da igual gordon, que es muy xungo esto.
gracias de todos modos, porque falla tambien.
igual soy yo que tengo cosas mal desde un principio.
drareg18 escribió:buff da igual gordon, que es muy xungo esto.
gracias de todos modos, porque falla tambien.
igual soy yo que tengo cosas mal desde un principio.


NOOOOOoo... no puedo aguantar una derrota XD. Pero si tiene pinta de ser muy básico joder, tanto informático por el foro y nadie le echa un cable al chaval! Cagon la leche, a ver si van a tener razón de eso de poner en entredicho el título de ingeniería ¬_¬ ...

Ingenieros Informáticos, yo os invoco coño!

PD: ale, ya me voy a tomar la pastilla XD.
PD2: mi último cartucho, basada en el primero que sí que te va, aunque sea a medias:

restart;
explode:=proc(llista::string);

paraula::string;
k:=length(llista);

for i from k to 1 do
paraula[k-i+1]:=llista[i];
end do;

print(paraula);

end proc;


Un saludo
resumiendo:

procedimiento explode que dado "hola" devuelva ["h","o","l","a"]
procedimiento ???? que dado hola y l devuelva 3?
darix2006 escribió:resumiendo:

procedimiento explode que dado "hola" devuelva ["h","o","l","a"]
procedimiento ???? que dado hola y l devuelva 3?


Llegó la caballería XD.

Yo entiendo en el 2º que le devuelva ["a","l","o","h"] ¿no?
De caballeria nada, si supieras el asco que le tengo a este "lenguaje"...

"2o ejercicio:Escribe una funcion que te de la posicion de un caracter, dada una lista."

Yo entiendo eso que puse no? Voy a mirar

Voy a casa de un vecino, que creia que lo tenia instaldo y resulta que no :S

Mientras no puedo hacer eso he releido. CREO que tiene que hacer:

funcion que pase de "hola" a ["h","o","l","a"]
funcion que pase de ["h","o","l","a"] a "hola"
funcion que diga en que posicion esta una lletra de una lista de letras

No?
bueno, espero haber resuelto tus dudas
salu2
PROGRAMA 1fexplode := proc(paraula)
local longitud, lista;
lista := [];
longitud := length(paraula);
for i from 1 to longitud do
lista := [lista[],paraula[i]];
end do;
return lista;
end proc;

fexplode("HOLA") ====> ["H", "O", "L", "A"]

PROGRAMA 2
fexplodeinv := proc(paraula)
local longitud, lista;
lista := [];
longitud := length(paraula);
for i from 1 to longitud do
lista := [paraula[i],lista[]];
end do;
return lista;
end proc;

fexplodeinv("HOLA") ==== > ["A", "L", "O", "H"]

PROGRAMA3funion := proc(lista)
local longitud, paraula;
longitud := nops(lista);
paraula:="";
for i from 1 to longitud do
paraula:=cat(paraula,lista[i]);
end do;
return paraula;
end proc;

funion(["A", "L", "O", "H"]) ===> "ALOH"

PROGRAMA 4
fbuscar := proc(lista,letra)
local longitud,pos;
longitud := nops(lista);
pos:=0;
for i from 1 to longitud do
if ( lista[i] = letra ) then
pos:= i;
i:=longitud;
end if;
end do;
return pos;
end proc;

fbuscar(["H", "O", "H"], "O") ====> 2


El ultimo se puede hacer sin lo del mod? le pasas el alfabeto como ["A","B","C"...] o como?
18 respuestas