Pascal/Turbo Pascal - Ejercicio n7 de la programacion en turbo pascal

   
Vista:

Ejercicio n7 de la programacion en turbo pascal

Publicado por Alejandra (1 intervención) el 28/04/2013 04:34:07
Hola soy nueva en esta pagina y tambien programando en Pascal. Hay un ejercicio de un trabajo practico que dice así:
7. Se trata de escribir un programa que clasifique enteros leidos del teclado de acuerdo a los siguientes puntos: 1.Si es 30 o mayor, o negativo, visualizar un mensaje en ese sentido; en caso contrario. si es un nuevo primo. potencia de 2. o un numero compuesto, visualizar el mensaje correspondiente: si son cero o 1. visualizar 'cero' o 'unidad'.

Tengo más o menos una idea de lo que quiere, una sentencias de if/then/else anidados, pero lo que me complica es la parte de si es un numero primo y la potencia. Estoy buscando por este sitio, por otros link que encuentro por san google y lo unico que logro es confundirme mas. Solo tengo esto resuelto:
Uses Crt;
Var a:integer;

begin
writeln('no entiendo lo que quiere este programa pero saque sus conclusiones');
Writeln('Para ver los resultados debe introducir un numero: ');
Readln(a);
if (a>=30) then writeln('el numero que introdujo es: ', a)
else if (a<0) then writeln('el numero que introdujo es negativo: ', a);

Necesito saber si alguien tiene una sentencia sencilla de como sacar un numero primo y si la potencia es correcta de esta forma a**2 o Exp(n * Ln(x)). Por favor es una novata que les agradecera mucho.... espero que alguien pueda ayudarme.

Pd: esta el mismo ejercicio presentado el 29/09/2009 por otra persona pero no tuvo solución...espero que ahora tenga algun resultado.

Muchas 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

Ejercicio n7 de la programacion en turbo pascal

Publicado por ramon (2072 intervenciones) el 30/04/2013 21:14:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{A qui tienes}
 
function esprimo(nu : integer) : string20;
  var
    c, cont : integer;
    noloes : boolean;
  begin
     cont := round(sqrt(nu));
     c := cont;
     noloes := false;
  repeat
  prim := nu mod c;
  if prim = 0 then
  begin
      esprimo := 'No Es Primo';
      noloes := true;
      break;
  end;
  c := c + 1;
  until c = nu;
  if noloes = false then
  esprimo := 'Es Primo';
  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

Ejercicio n7 de la programacion en turbo pascal

Publicado por ramon (2072 intervenciones) el 05/05/2013 18:22:35
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
{Mas completo}
 
program primos;
   uses
      crt;
   var
      i, num : integer;
 
 
   function potencia2(n : longint) : boolean;
   var
     tru : boolean;
     vv : word;
     df : real;
   begin
   if n > 0 then
   begin
      potencia2 := false;
      tru := false;
      for vv := 0 to n do
      begin
      df := exp(vv * ln(2));
      if df < 536870912 then
      begin
      if trunc(df) = n then
      begin
      tru := true;
      break;
      end;
     end;
     end;
      if tru = false then
      potencia2 := false
    else
      potencia2 := true;
   end;
  end;
 
   function primo(nu : integer) : boolean;
   begin
      if nu mod 2 = 0 then
      primo := true
    else
      primo := false;
   end;
 
   function balor(nu : integer) : string;
   begin
   case nu of
     0 : balor := '  Es cero';
     1 : balor := '  Es unidad';
 2..29 : balor := '  El Num. Es Menor De 30';
    30 : balor := '  El Num. Es 30';
 31..(31 * 100) : balor := '  El Num Es Mayor De 30';
   end;
    if nu < 0 then
    balor := '  El Num. Es Negativo';
   end;
 
    begin
        clrscr;
        write('   Entre un numero : ');
        readln(num);
        writeln('  **** El Resultado Es ****');
        writeln;
        if primo(num) = true then
        writeln('  El Num. ',num,' Es Primo')
      else
         if (primo(num) = false) and (num > 1) then
         writeln('  El Num. ',num,' Es Compuesto');
         writeln(balor(num));
         if potencia2(num) = true then
         writeln('  El Num. ',num,' Es Potencia 2')
       else
         writeln('  El Num. ',num,' No Es Potencia 2');
        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