Pascal/Turbo Pascal - AYUDA Ejercicio

 
Vista:

AYUDA Ejercicio

Publicado por Fer (2 intervenciones) el 25/09/2014 15:16:18
Hola, necesito ayuda con el siguiente ejercicio de pascal:

Se tiene una pila "Secuencias", que contiene secuencias de numeros no nulos separadas por uno o mas ceros.
Se pide generar una pila "Resultado" cuyos elementos se correspondan con la cantidad de elementos que tiene cada secuencia en la pila
Ademas, en el tope de la pila "Resultado" debe estar el valor que represente cuantas secuencias quedaron en la pila "Resultado"


Ejemplo:
PILA Secuencias : <base> 1 7 0 0 3 8 9 0<tope>
PILA Resultado: <base> 2 3 2<tope>

EDIT: considerando que secuencias es cargado por el usuario y podria no cargar nada, o no cargar ceros. o cargar solo ceros, etc.
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 Ejercicio

Publicado por ramon (2158 intervenciones) el 26/09/2014 00:16:52
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
{A ver si esto te ayuda}
 
program pila;
 uses
    crt;
  type
    lapila = ^mipila;
    mipila = record
             dato : integer;
             sig  : lapila;
           end;
 
   var
     actual : lapila;
     num : integer;
     entrada : string[20];
 
   procedure meterdatos(cc : integer);
   var
     nuevo : lapila;
   begin
      if actual = nil then
      begin
          new(actual);
          actual^.dato := cc;
          actual^.sig := nil;
      end
    else
       begin
           new(nuevo);
           nuevo^.dato := cc;
           nuevo^.sig := actual;
           actual := nuevo;
       end;
     end;
 
   procedure sacadepila;
   var
     tempo : lapila;
     nn, t, dat : integer;
   begin
      t := 1;
      nn := 12;
      dat := 0;
      gotoxy(20,9);write('Numero En Pila');
      while nn > 11 do
      begin
       if actual <> nil then
       begin
           dat := actual^.dato;
           tempo := actual;
           actual := actual^.sig;
           gotoxy(30 - t,10);write(dat);
           dat := 0;
           t := t + 1;
           dispose(tempo);
       end;
       if actual = nil then
       nn := 1;
     end;
   end;
 
    procedure entranumero;
    var
      n : char;
      x, y : integer;
    begin
       num := 1;
       x := 15;
       y := 3;
       gotoxy(4,3);write('Entre Num : ');
       repeat
          n := readkey;
          if n in['0'..'9'] then
          begin
             entrada[num] := n;
             entrada[0] := chr(num);
             gotoxy(x + num,y);write(entrada[num]);
             num := num + 1;
             if num > 20 then
             n := chr(13);
          end;
          if n = chr(8) then
          begin
             num := num - 1;
             if num < 1 then
             num := 1;
             entrada[num] := ' ';
             entrada[0] := chr(num);
             gotoxy(x + num,y);write(entrada[num]);
          end;
       until n = chr(13);
    end;
 
  procedure inserta_a_pila(h : char);
  var
    vn : integer;
  begin
     vn := ord(h) - 48;
     meterdatos(vn);
  end;
 
  procedure pasaapila(valores : string);
  var
    cero, pr, cont : integer;
    fin : char;
    conv : string[2];
  begin
     cero := 0;
     pr := 1;
     for cont := 1 to length(valores) do
     if valores[cont] > '0' then
     begin
        if cero > 0 then
        pr := pr + 1;
        cero := 0;
        inserta_a_pila(valores[cont]);
     end
  else
      begin
          cero := cero + 1;
      end;
      writeln;
      write('  grupos = ',pr);
      str(pr,conv);
      fin := conv[1];
      inserta_a_pila(fin);
      writeln;
      write('  Numero Entrado = ',entrada);
      writeln;
  end;
 
 
 
  begin
      clrscr;
      actual := nil;
      entranumero;
      writeln;
      pasaapila(entrada);
      sacadepila;
      readkey;
      if actual <> nil then
      dispose(actual);
  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

AYUDA Ejercicio

Publicado por Fer (2 intervenciones) el 26/09/2014 02:19:40
me falto aclarar que usamos estructu en ves de crt.

pero esto me ayudo a entender un par de cosas, gracias
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

AYUDA Ejercicio

Publicado por ramon (2158 intervenciones) el 26/09/2014 18:04:58
Me puedes aclarar esto usamos estructu en ves de crt.
que tipo de pascal estas usando eso que pones serian estructuras de datos que no tienen que ver nada con la
unidat crt de pascal.
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