Pascal/Turbo Pascal - Problemas de WHILE, REPEAT-UNTIL y FOR

 
Vista:

Problemas de WHILE, REPEAT-UNTIL y FOR

Publicado por Byteman (2 intervenciones) el 03/10/2013 19:32:33
Es la primera vez que posteo, y mi duda se refiere a unos problemas que nos han planteado en la universidad referidos a los comandos mencionados en el título. He buscado por mí mismo como utilizar las secuencias de While, etc, pero no he conseguido resolverlos. ¿Podríais echarme una mano? Gracias de antebrazo:

1- Escribe un programa que lea una secuencia de números terminada en 0 y muestre por
pantalla la posición que ocupa el valor máximo así como el término de la posición anterior.
Nota: Sólo existe un valor máximo en la secuencia y no está en la primera posición.
Ejemplo: Si la secuencia introducida es 1 6 2 8 9 20 3 12 7 14 11 16 0, el valor máximo está en la
posición 6 y el valor que ocupa la posición anterior es 9.

2- Escribe un programa que lea una frase terminada en punto y encuentre la primera posición
en la que aparece una letra que queremos buscar. Si la letra no se encuentra entre los caracteres
introducidos escribe un mensaje indicándolo.
Ejemplo: Introduce la letra que quieres buscar: t
Introduce una frase terminada en punto: Es posible que esta tarde llueva.
Devolverá: La primera vez que aparece la letra t es en la posición 18

3- Lee un entero N y muestra en pantalla un dibujo como los del ejemplo.
Ejemplo: N=3 N=4 N=5
P4_10
Escribe un programa que a partir de un entero positivo impar N, forme figuras del siguiente
tipo:
Ejemplo:
N=5
1 2 3
2 3 3
3 3 3

N=4
1 2 3 4
2 3 4 4
3 4 4 4
4 4 4 4

N=5
1 2 3 4 5
2 3 4 5 5
3 4 5 5 5
4 5 5 5 5
5 5 5 5 5
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

Problemas de WHILE, REPEAT-UNTIL y FOR

Publicado por ramon (2158 intervenciones) el 04/10/2013 19:46:42
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
{Algo así}
 
program varios;
 uses
    crt;
  var
    numeros : array[0..100] of integer;
    num, ms : integer;
 
 
  procedure posicion_maximo;
  var
    pos, el, an : integer;
  begin
      clrscr;
      writeln('******* Entre Valores numericos Finaliza [0] ********');
      writeln;
    ms := 0;
    num := 1000;
    while  num <> 0 do
    begin
      write('    Entre El Valor Del Num.[',ms,'] : ');
      readln(num);
      if num <> 0 then
      begin
         numeros[ms] := num;
         ms := ms + 1;
         if ms > 100 then
         ms := 100;
      end;
     end;
       el := 0;
       an := 0;
       for num := 0 to ms - 1 do
       if numeros[num] > el then
       begin
           el := numeros[num];
           an := numeros[num - 1];
           pos := num;
       end;
       clrscr;
       writeln('>>> Los Numeros Entrados Son <<<');
       writeln;
       for num := 0 to ms - 1 do
       write('   ',numeros[num]);
       writeln;
       writeln('***** Los Resultados Son *****');
       writeln;
       writeln('<<<<< El Numero Maximo Es = ',el);
       writeln('<<<<< La Posicion Es      = ',pos + 1);
       writeln('<<<<< El Anterior Es      = ',an);
       writeln;
       writeln('<<<<< Pulse Una Tecla >>>>>');
       readkey;
    end;
 
  procedure posicion_letra;
  var
    tex : string;
    t, letra : char;
    pos, cont : integer;
    no : boolean;
  begin
      clrscr;
      writeln(' Ingrese La Letra A Buscar / Distinge Minusculas De ',
                     'Mayusculas \');
      writeln;
      write('    La Letra Es : ');
      readln(letra);
      clrscr;
      writeln('*** Entre Texto ***');
      writeln;
      cont := 1;
      write('   Texto : ');
     repeat
      t := readkey;
      if t <> '.' then
      begin
      tex[cont] := t;
      tex[0] := chr(cont);
      write(tex[cont]);
      cont := cont + 1;
      end;
    until t = '.';
      clrscr;
      for cont := 1 to length(tex) do
      begin
         if tex[cont] = letra then
         begin
            pos := cont;
            no := false;
            break;
         end
      else
         no := true;
      end;
    if no = false then
    begin
      writeln('  El Texto Es                       = ',tex);
      writeln('  La Letra A Buscar Es              = ',letra);
      writeln('  La Posicion Donde Se Encuentra Es = ',pos);
      writeln;
      writeln('  Pulse Una Tecla');
    end
  else
     writeln('   Letra No Encontrada Pulse Una Tecla');
     readkey;
  end;
 
  procedure dibujo_numero;
  var
    con, j, d, y, nume : integer;
  begin
      clrscr;
      writeln('***** Entre Un Numero del 1 Al 9 *****');
      writeln;
      write('   Numero : ');
      readln(nume);
      con := 0;
      for d := 1 to nume do
      begin
        for y := d to nume do
        begin
           write(' ',y);
           con := con + 1;
        end;
           for j := (nume - con) downto 1 do
           write(' ',nume);
           con := 0;
        writeln;
      end;
      readkey;
  end;
 
 
 begin
    posicion_maximo;
    posicion_letra;
    dibujo_numero;
 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