Ayuda Arrays en pseudolenguaje Problema

Ola me gustaría aver si podeis ayudarme con la solucion a este problema en pseudolenguaje: dado un numero natural divirlo en digitos y cada digito asignarlo a una posicion de un array k iria de 1 hasta el numero de digitos ( k tampoco se calcularlo en pseudolenguaje ) de tipo natural. de forma k por ejemplo el 243 kedaria en el array asi: en la posicion uno estaria el 2, el la dos el 4 y en la tres el 3.

gracias por la ayuda k estoy perdio jeje
tienes que usar la función mod o %. que te dal el resto de dividir. usas un bucle for que vaya desde uno hasta el número de dígitos y en el cuerpo del bucle pones lo de mod por 10^i (siendo el i el contador del for) de manera que en cada iteración te saque una cifra del total. y luego en tu array haces la asignación con el índice i. es más o menos así. no sé si me he explicado claramente. hace tiempo que no hago este tipo de cosas

EDIT

incluso sin el 10 elevado a 'i'. si no que en cada iteración haces x mod 10; eso te da las unidades. lo metes en la casilla del array. te quedas con la parte entera de la division que has hecho, es decir 243 / 10 = 24,3; pues te quedas con el 24 (eso es sencillo de hacer) y vuelves a hacer lo mismo. lo malo es que te saldrá el array invertido, luego tendrías que darle la vuelta. o corregirlo a la vez que lo vas metiendo


funcion sacadigitos (int n) {
array cifras[]:
int temp;
for (int i=1; i<= numCifras(n);i++) {
temp = n mod 10;
cifras[i]= temp;
n = parteEntera(n);
}
invertir(cifras)

EDIT:
imagino que invertir un array y hacer una función que te cuente el número de dígitos de un número sabras ponerlo. si no, nada más que lo preguntes e intentaré ayudarte
gracias Nagy eso me a dado una idea de como dividir el numero en digitos lo k pasa es k aun no se darle la vuelta a un array, como se haría?

gracias por las ayudas
a ver, para invertir un array yo haría lo siguiente.
funcion invertir (vector v[]):vector //esto significa que la funcion devuelve un valor vector.
vector[] aux; //define los vectores de modo que tengan el mismo tamaño
for (int i=0; i<n; i++){
aux[i] = v[n-i];
}
return aux[i]

una aclaración: como la función invertir devuelve un valor vector, tendrías que cambiar un poco el cuerpo del programa anterior.
en vez de invertir(.........)
habría que poner vector[] a = invertir(.....)

espero haberte ayudado
vale Nagy muchas gracias ya tengo bien el problema entero jeje [plas] .Mira aqui va otro k se resiste y no se hacerlo ( creo k tambien seguia con arrays pero nose):unos alumnos quieren quedar un dia del presente mes en el k puedna acudir todos. se pide un algoritmo que recoja de cada alumno sus dias libres e imprima las fechas conconrdantes para todos los alumnos, y cada alumno escrivirá una unica línea con los numeros de los dias libres separados por espacios.

haber si alguien sabe algo, lo agradecería mucho xk pronto tengo un control de arrays [mad]
vale, este es un poco más chungo. pregunta que te hago: los días de cada alumno, ¿te los dan? o hay que captarlos? en el segundo caso (que es un poco más sencillo que el primero), lo que tienes es una matriz de dimensiones numAlumnos x 31. (pongo 31 porque es el máximo de días que tiene un mes y el máximo, consecuentemente de días que puede tener libre un alumno).
la primera manera que se me ocurre para hacerlo, es que vayas fijando un elemento en la matriz, con cierto orden. es decir, el elemento [0][0]=4, por ejemplo. ahora tienes que comprobar en cada fila si está está el 4. en el momento que no está, pasas al [0][1]=20(por ejemplo). cuando está en todas las filas, lo incluyes en un array auxiliar. cuando llegas a la casilla [0][31]y haces todas sus comprobaciones has terminado. solo te queda devolver el array auxiliar

intenta hacerlo con las indicaciones que te he dado. si aun así no te sale, yo te ayudo con el código. lo que pasa es que la programción, y sobre todo los comienzos, es mejor que se ponga uno. si no, no se le quedan tanto los conocimientos. sé que suena a rollo de profe, pero es la puta verdad. para cualquier duda por aquí ando. saludos


bueno te dejo aquí lo que yo haría:

funcion diasLibres (vector[][] calendario):vector //también puedes poner que devuelva una cadena
{
int i, j, aux;
boolean esta = false;
vector[] resultado;
for (i=0;i<numMaxDias;i++){
_____aux=[0][i] // solo hay que hacerlo fijar un número en la primera fila, y luego comprobar las demás.
_____if (esta(calendario, aux)
___________añadir(resultado, aux);
_____}
return resultado;

ahora la función esta;
funcion esta(vector[][] calendario, int aux): boolean{
boolean estaEnTodas = false;
for (int i=1; i<numMaxDías;i++)
____for(int j=0; j<maxAlumnos;j++)
____________encontrado = (aux == calendario[i][j])
return encontrado;


esta función que te he hecho yo no es la más eficiente que hay ni en broma. pero al nivel que estás programando no creo que os pongan problemas de eficiencia. estaría bien controlar que, si un número no se encuentra en una fila entera, ese número lo descartamos y no lo buscamos más; pasaríamos al siguiente. tal y cómo yo te lo he puesto, aunque el número buscado no se encuentre en una fila, seguirá hasta el final. pero toy cansado ya XD. eso a ver si eres capaz de hacerlo tú. saludos y me acuesto. buenas noches
Gracias de verdad Nagy por ayudarme lo malo es k se me fue la luz, por lo k al final lo intenté yo solo y tras hora y pico me salió, algo diferente al tuyo, pero funciona jeje gracias de verdad.

P.D:una cosa para aprender mas o menos bien a hacer algoritmo con arrays cuanto se echa mas o menos, cuanto echasteis vosotros en aprenderlo mas o menos bien?. es k mi maestra nos lo a explicado en 2 dias solamente y quiere k sepamos ya hacer todos los ejercicios en 1 o 2 dias mas, y para mi es casi imposible }:/
mmm no te sabría decir. pero hacer de todo con arrays te puedo asegurar que tardas más de dos días, vaya. a no ser que estés las 24 horas con ellos. con arrays simples se pueden hacer cosas, pero es que cuando entras en bidimensionales (matrices) ya se pone un poco más jodido. tú ve haciendo los problemas que te dicen, por lo que nos has enseñado son bastante didácticos. aprende bien los arrays, ya que luego vienen otras estructuras más potentes, e incluso otras que se apoyan en arrays, ya verás. ya sabes, si tienes cualquier duda no dudes en postearla que, si soy capaz, te echaré un cable. salu2
7 respuestas