Pascal/Turbo Pascal - ayuda con un programa de pascal

 
Vista:

ayuda con un programa de pascal

Publicado por durillo (1 intervención) el 18/05/2013 18:31:30
hola tengo un problema con un progrma de pascal el ejercicio me pide:

Define un tipo de datos registro
tpMonomio para representar a un monomio, almacenando su grado y coeficiente.
Construye procedimientos o funciones que permitan pedir los valores del monomio al
usuario, mostrar el monomio al usuario (con el formato del ejercicio anterior) y calcular el
monomio derivada de uno dado.
Define un tipo de datos registro tpPolinomio2 para representar a un polinomio, que
contenga un vector de monomios junto con un número entero que represente la cantidad de
monomios del polinomio. Los monomios ocuparán las primeras posiciones del vector
ordenados de menor a mayor grado. Supondremos que el polinomio no contendrá más de 50
monomios. Implementa módulos que permitan inicializar un polinomio al polinomio nulo e
insertar un monomio en un polinomio. Empléalos para pedir un polinomio al usuario. Añade
también procedimientos o funciones para calcular el grado de un polinomio, mostrar un
polinomio al usuario y derivar un polinomio. El programa principal pedirá al usuario un
polinomio y mostrará su grado y su derivada. El programa se llamará “polinRegistro.pas”
yo e hecho esto

program polinRegistro;
Const N=50;
type

tpMonomio=record
monomio:real;
grado:integer;
end;
tpPolinomio2=record
vector :array[0..N] of tpMonomio;
end;
var t:tpMonomio;
z:tpPolinomio2;

procedure leer(var v:tpMonomio);
begin
Repeat
write('Introduce coeficiente y grado de monomio:');
read(v.monomio,v.grado);
if v.monomio> 0 then
until v.grado<0;
end;

pero a partir de hay nose como seguir, nose si eso esta bien si kiera, y nose como hacer las derivadas y el grado si me hechais una mano os lo agradeceria ya se que es largo de leer pero muxas 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

ayuda con un programa de pascal

Publicado por ramon (2158 intervenciones) el 28/05/2013 12:33:29
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
{A ver si es esto}
 
program polinRegistro;
 uses
   crt;
 
 Const
   N = 50;
 type
   tpMonomio = record
          coefi : integer;
          grado : integer;
        end;
 
    tpPolinomio2 = record
       vector : array[0..N] of tpMonomio;
          num : integer;
       end;
 
  var
   t : tpMonomio;
   z : tpPolinomio2;
   ne : integer;
 
    procedure inicial;
    begin
        fillchar(z,sizeof(tpPolinomio2),0);
    end;
 
    procedure Eltradamonomio(var v : tpmonomio);
    var
      mas : char;
    begin
      write('Introduce coeficiente : ');
      read(v.coefi);
      write('Introduce  grado de monomio : ');
      read(v.grado);
      if v.coefi in[0,1] then
      writeln('  Monomio = ',1,'x',v.grado)
     else
      writeln('  Monomio = ',v.coefi,'x',v.grado);
    end;
 
  procedure ordenamonomio(var c : tpPolinomio2);
  var
    temp : tpMonomio;
    t, u : integer;
    begin
     for t := 1 to c.num do
      for  u := c.num downto t + 1 do
      begin
       if c.vector[t].grado > c.vector[u].grado then
        begin
          temp := c.vector[t];
          c.vector[t] := c.vector[u];
          c.vector[u] := temp;
          end;
       end;
    end;
 
   procedure cargaPolinomio;
   var
     decision : char;
   begin
    repeat
      clrscr;
      writeln('  Entre Monomio ');
      Eltradamonomio(z.vector[ne]);
      writeln('*** Desea Entrar Mas [S/N] ***');
      repeat
         decision := upcase(readkey);
      until decision in['S','N'];
      if decision = 'S' then
      begin
      ne := ne + 1;
      if ne > n then
      ne := n;
      end;
    until decision = 'N';
    z.num := ne;
   end;
 
   procedure gradopolinpmio;
   var
     temporal : array[1..5] of tpMonomio;
     grad, d, r : integer;
     pul : char;
   begin
      r := 1;
   repeat
      clrscr;
      writeln(' Entre Monomios ');
      writeln;
      Eltradamonomio(temporal[r]);
      writeln('  Otro [S/N]');
      repeat
          pul := upcase(readkey);
      until pul in['S','N'];
      if pul = 'S' then
      begin
         r := r + 1;
         if r > 5 then
         begin
         r := 5;
         pul := 'N';
         end;
      end;
    until pul = 'N';
    grad := 0;
    for d := 1 to r do
    begin
    if temporal[d].grado = 0 then
    grad := grad + 1
  else
    grad := grad + temporal[d].grado;
   end;
    writeln;
    writeln(' El Grado Es : ',grad);
    writeln('    Pulse Una Tecla ');
    readkey;
   end;
 
   procedure verpolinomios;
   var
     tep : char;
     co : integer;
    begin
        if z.num > 0 then
        begin
           for co := 1 to z.num do
           writeln('Monomio Es : ',z.vector[co].coefi,'x',z.vector[co].grado);
        end
     else
        writeln('  Ningun Monomio Entredo Pulse Una Tecla');
        readkey;
    end;
 
   procedure menu;
  var
     fin : boolean;
     tecl : char;
   begin
      fin := false;
  repeat
    clrscr;
    writeln('<<<<< Menu General >>>>>');
    writeln;
    writeln('     1 = Entrada Polinomio');
    writeln('     2 = Presentacion Grado');
    writeln('     3 = Ordenar Polinomio');
    writeln('     4 = Ver Polinomios Entrados');
    writeln('     5 = Salir');
    writeln;
    writeln('***** Elija Opcion *****');
    repeat
    tecl := readkey;
    until tecl in[#49..#53];
   case tecl of
 #49 : begin clrscr; cargaPolinomio; end;
 #50 : begin clrscr; gradopolinpmio; end;
 #51 : begin clrscr; ordenamonomio(z); end;
 #52 : begin clrscr; verpolinomios; end;
 #53 : fin := true;
  end;
  until fin = true;
 end;
 
 
  begin
     inicial;
     ne := 1;
     menu;
 
     {gradopolinpmio;
     Eltradamonomio;
     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