Pascal/Turbo Pascal - Programa descomposicon en factores primos pascal terminado pero no hace completamente.

   
Vista:

Programa descomposicon en factores primos pascal terminado pero no hace completamente.

Publicado por Federico (2 intervenciones) el 10/09/2015 20:40:45
Hola, tengo una tarea que consiste en hacer un programa que descomponga un numero en sus respectivos factores primos de la siguiente forma:
12 <----numero a descomponer
2^2 <---- divide ente dos, dos veces
3 <------- entre tres una vez

el codigo del programa que cree es el siguiente:
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
program factorial (input, output);
 
var
    ing, fac1, fac2, dov : integer;
begin
    readln (ing);
    fac1:= 2;
    fac2:= 0;
    repeat
          dov:= ing mod fac1;
          if dov=0 then
           begin
           ing:= ing div fac1;
           fac2:= fac2+1;
           end
          else begin
               if fac2>1 then
                 begin
                 writeln (fac1,'^',fac2);
                 fac1:= fac1+1;
                 fac2:= 0;
                 end
               else begin
                    writeln (fac1);
                    fac1:= fac1+1;
                    fac2:= 0;
                    end
               end
 
    until (ing=1);
end.



Pero el problema es que por ejemplo, cuando ingreso 12 lo que muestra es:

12
2^2

No me doy cuenta de que me estoy equivocando, agradeceria si alguien puede darme una mano.

Gracias.
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

Programa descomposicon en factores primos pascal terminado pero no hace completamente.

Publicado por ramon (2072 intervenciones) el 10/09/2015 21:48:59
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
42
43
44
45
46
47
48
{Mira esto te puede ayudar}
 
program descomfactprimos;
  uses
     crt;
  var
    n, nn, di, s, r, numero : integer;
    cadena : string;
 
  begin
       clrscr;
       writeln;
       s := 1;
       write('   Entre Numeri Entero : ');
       readln(n);
       nn := n;
      while ( nn > 1 ) do
      begin
         di := 2;
       while ( nn MOD di <> 0 ) do
       inc(di);
       cadena[s] := chr(di + 48);
       cadena[0] := chr(s);
       s := s + 1;
       nn := nn div di;
     end;
     nn := 0;
     n := 1;
     numero := ord(cadena[1]) - 48;
     for r := 2 to s  do
     begin
     nn := ord(cadena[r]) - 48;
     if numero <> nn then
     begin
        write('     ',numero,'^',n);
        n := 1;
        numero := nn;
     end
  else
     begin
     n := n + 1;
     numero := nn;
     end;
    end;
     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

Programa descomposicon en factores primos pascal terminado pero no hace completamente.

Publicado por brst (1 intervención) el 11/09/2015 00:04:54
En esa última opción no hay una manera de escribir el programa que no use las cadenas??? por ejemplo suplantandola por un par repeat until, for??
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

Programa descomposicon en factores primos pascal terminado pero no hace completamente.

Publicado por Federico (2 intervenciones) el 11/09/2015 00:06:39
Entiendo el contexto, pero el tema es que sólo podemos usar, unas pocas funciones del pascal ya que es la primer parte del curso y muchas de las cosas que usaste no las dimos, por lo tanto no son aplicables, solo podemos usar:

Tipos de datos: Integer, Real, Boolean, Char
Instrucciones:
Asignación
Entrada y Salida(read, write, WriteLn, ReadLn)
Secuencia
Selección (if, case)
Repetición (for, while, repeat)
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

Programa descomposicon en factores primos pascal terminado pero no hace completamente.

Publicado por ramon (2072 intervenciones) el 11/09/2015 17:27:23
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
{Espero esto os sirva}
 
 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
0
Comentar

Programa descomposicon en factores primos pascal terminado pero no hace completamente.

Publicado por Dario (41 intervenciones) el 12/09/2015 16:14:26
Te dejo mi solucion, espero que este bien.
Saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses crt;
var
    n,i:integer;
begin
    clrscr;
    i:=2;
    writeln('Programa para descomponer un numero en sus factores primos');
    write('Ingrese un numero: ');
    readln(n);
 
    while i <= n do
    begin
        if n mod i = 0 then
        begin
            n:=n div i;
            write(i,' ');
            i:=2;
         end
        else
            inc(i);
    end;
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