Pascal/Turbo Pascal - ayuda con estos dos problemas en turbo pascal

 
Vista:
sin imagen de perfil

ayuda con estos dos problemas en turbo pascal

Publicado por Patricia (5 intervenciones) el 04/12/2014 20:14:15
1) Dado un número entero N, si la suma de sus divisores (descartándose a si mismo) es igual a N se dice que ese número es perfecto. Si la suma es inferior, se dice que es deficiente, y si es superior se dice que es abundante. Por ejemplo:
• 6 tiene como divisores a 1, 2 y 3 y la suma de éstos es 6, por lo tanto es PERFECTO
• 8 tiene como divisores a 1, 2 y 4 y la suma de éstos es 7, por lo tanto es DEFICIENTE
• 24 tiene como divisores a 1, 2, 3, 4, 6, 8 y 12 y la suma de éstos es 36, por lo tanto es ABUNDANTE.





2) Tengo que diseñar un programa modularizado que permita realizar las siguientes operaciones con dos matrices de N x N:

a.- Sumar matrices
b.- Obtener el valor máximo de una matriz (El valor más grande)
c.- Obtener el valor mínimo de una matriz (El valor más chico)
d.- Obtener la cantidad de números positivos, negativos y ceros que tiene la matriz
e.- Obtener la cantidad de números pares y la cantidad de impares que tiene la matriz.



_Muchisimas gracias para el que me pueda ayudar :)
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
sin imagen de perfil

ayuda con estos dos problemas en turbo pascal

Publicado por David (224 intervenciones) el 07/12/2014 17:02:33
Te propongo las siguientes soluciones:

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
{Programa 1}
 
Uses CRT;
 
Var
  NUM , R : integer;
 
Function EsPerfecto(var N : Integer): Shortint;
 
Var
  aux, suma, i  : Integer;
 
begin
  suma:=0;
  aux:= n div 2;
  For I:=1 to aux do
      if (N mod i = 0) then
         suma:=suma+i;
  if suma=n then
    Esperfecto := 0
  else
    if suma > n then
      esperfecto:=1
    else
      esperfecto:=-1
end;
 
begin
  Clrscr;
  Writeln('Introduzca un n£mero: ');
  readln(NUM);
  r:=Esperfecto(NUM);
  case r of
    1 : Writeln('El n£mero ',NUM,' es abundante');
    0 : Writeln('El n£mero ',NUM,' es perfecto');
   -1 : Writeln('El n£mero ',NUM,' es deficiente');
  end;
  readln;
end.


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
78
79
80
81
82
83
84
85
86
87
{Programa 2. Aquí, una vez resueltos los procedimientos, dejo para tí el programa principal. No debe resultarte difícil resolverlo}
Const
  TOPE = 2;
 
Type
  TipoMatriz = Array [1..TOPE,1..TOPE] of integer;
 
var
  Mat1,Mat2,MatRes : TipoMatriz;
 
Procedure SumaMatriz(M1,M2:TipoMatriz; var MR:TipoMatriz);
 
var
  i, j : Integer;
 
begin
  for i :=1 to tope do
    for j:=1 to tope do
      mr[i,j]:=M1[i,j]+m2[i,j];
end;
 
Function Maximo (Var M1 : TipoMatriz) : Integer;
 
var
  i,j,max : Integer;
 
begin
  max := M1[1,1];
  for i:=1 to tope do
    for j:=1 to tope do
      if m1[i,j] > max then
        max := m1[i,j]
  maximo:=max
end;
 
Function Minimo (Var M1 : TipoMatriz) : Integer;
 
var
  i,j,min : Integer;
 
begin
  min := M1[1,1];
  for i:=1 to tope do
    for j:=1 to tope do
      if m1[i,j] < min then
        min := m1[i,j]
  minimo:=min
end;
 
Procedure POS_NEG_CERO (var M1 : TipoMatriz; var posi : Integer; var nega : integer; var cero : Integer);
 
var
  i , j : Integer;
 
begin
  for i :=1 to tope do
    for j:=1 to tope do
      begin
        if m1[i,j]= 0 then
          inc(CERO)
        else
          if m1[i,j]>0 then
            inc(posi)
          else       {si no es cero ni positivo}
            inc(nega)
      end;
end;
 
Procedure Pares_Impares(var M1 : TipoMatriz; var pares : Integer; var Impares : Integer);
 
var
  i, j : integer;
 
begin
  for i:= to tope do
    for j:=1 to tope do
      begin
        if m1[i,j]<>0 then
          if m1[i,j] mod 2 = 0 then
            inc(pares)
          else
            inc(impares);
      end;
end;
 
begin
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