Pascal/Turbo Pascal - Descomposicion Factorial de un numero dado

 
Vista:
sin imagen de perfil

Descomposicion Factorial de un numero dado

Publicado por Carlos (4 intervenciones) el 14/09/2015 19:50:54
Hola, muchos ya han publicado sobre esto.

el caso es que la tarea planteada no permite usar cadenas ni arreglos ni longint ni nada...

la tarea consiste en, dado un numero mayor a uno, desplegar los divisores, elevados a su correspondiente exponente. El codigo que arme casi, casi, me deja hacerlo. Si alguien me ayuda se los agradesco.

Esto fue lo que pude escribir:

program DF1;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Var  resto, numero, divisor, exponente, divisor_anterior : integer;
 
begin
readln(numero);
divisor:=2;
divisor_anterior:=1;
while numero > 1 do
begin
resto:=numero mod divisor;
	if resto=0 then
		if divisor <> divisor_anterior then
			begin
				numero:=numero div divisor;
				divisor_anterior:= divisor;
				exponente:=1;
			end
		else
			begin
				exponente:=exponente+1;
				numero:=numero div divisor;
			end
	else
	divisor:=divisor+1;
	writeln(divisor,'^',exponente);
  end;
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Descomposicion Factorial de un numero dado

Publicado por ramon (2158 intervenciones) el 14/09/2015 23:53:54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{Esto no tiene nada espero te sirva de referencia}
 
program descomfactprimos;
  uses
     crt;
  var
    n, nn, di, s, r, numero : integer;
    fin : boolean;
 
  begin
       clrscr;
       writeln;
       s := 0;
       write('   Entre Numeri Entero : ');
       readln(n);
       nn := n;
       r := 0;
      while ( nn > 1 ) do
      begin
         di := 2;
         fin := true;
       while ( nn MOD di <> 0 ) do
       inc(di);
       if (r <> di) and (r > 0) then
       begin
       write('   ',r,'^',s);
       s := 0;
       r := di;
       fin := false;
       end
    else
       r := di;
       s := s + 1;
       nn := nn div di;
     end;
     if fin = false then
     write('   ',r,'^',s);
     writeln;
     writeln('   Pulse Una Tecla');
     readkey;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Descomposicion Factorial de un numero dado

Publicado por Carlos (4 intervenciones) el 15/09/2015 02:12:28
Pah, la verdad es que es la primera vez que estoy cursando programación y de lo que leí debí haber entendido la mitad mas o menos, lo que quiero decir es que el uses y el uso del crt y no se que mas no lo entendí y aparte no podemos aplicarlo a la tarea, si te animas y me das una mano a partir de mi código te agradezco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Descomposicion Factorial de un numero dado

Publicado por Carlos (4 intervenciones) el 15/09/2015 03:15:25
Ahora logre acercarme mas a una posible solucion, te dejo un par de fotos, una tiene un error que quiero arreglar, la otra tiene un ejemplo donde no se porque no funciona muy bien, el codigo lo cambie un poco, lo que use fue esto:

program DF1;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Var  resto, numero, divisor, exponente,divisor_anterior : integer;
 
begin
readln(numero);
divisor:=2;
divisor_anterior:=1;
while numero > 1 do
begin
resto:=numero mod divisor;
	if resto=0 then
		if divisor <> divisor_anterior then
			begin
				numero:=numero div divisor;
				divisor_anterior:= divisor;
				exponente:=1;
			end
		else
			begin
				exponente:=exponente+1;
				numero:=numero div divisor;
				divisor_anterior:=1;
			end
	else
	divisor:= divisor + 1;
	begin
		if exponente > 1 then
			begin
				writeln(divisor,'^',exponente);
				exponente:=0;
			end
		else
			begin
				if divisor_anterior > 1 then
					begin
						writeln(divisor_anterior);
					end
				else
				end
			end
		end
  end.

Error-2-creo
Error-creo

espero que me puedan ayudar porque estoy en serios problemas :D gracias por todo

las entradas en la foto, aunque claras, fueron: 14, 25 y 16
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Descomposicion Factorial de un numero dado

Publicado por ramon (2158 intervenciones) el 15/09/2015 15:22:50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{Mira todas las formas son similares te lo dejo limpio del uses si te fijas veras lo que supone su anulación espero te sirva }
 
program descomfactprimos;
  var
    n, nn, di, s, r, numero : integer;
    fin : boolean;
  begin
       writeln;
       s := 0;
       write('   Entre Numeri Entero : ');
       readln(n);
       nn := n;
       r := 0;
      while ( nn > 1 ) do
      begin
         di := 2;
         fin := true;
       while ( nn MOD di <> 0 ) do
       inc(di);
       if (r <> di) and (r > 0) then
       begin
       write('   ',r,'^',s);
       s := 0;
       r := di;
       fin := false;
       end
    else
       r := di;
       s := s + 1;
       nn := nn div di;
     end;
     if fin = false then
     write('   ',r,'^',s);
     writeln;
     writeln('   Pulse Enter');
     readln;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Descomposicion Factorial de un numero dado

Publicado por Carlos (4 intervenciones) el 16/09/2015 16:50:24
El problema con tu solucion es que cada divisor que divide solo una vez al numero dado de despliega como r^1 y yo quiero que solo despliegue el r, si me ayudas te agradezco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Descomposicion Factorial de un numero dado

Publicado por ramon (2158 intervenciones) el 16/09/2015 19:11:06
Mira quita esto

write(' ',r); solo presentara lo que quieres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar