Ввести число С. Определить, есть ли в массиве элемент, равный С. Найти • номер первого...

0 голосов
10 просмотров

Ввести число С. Определить, есть ли в массиве элемент, равный С. Найти
• номер первого такого элемента
• номер последнего такого элемента

Вот моя программа. Я не могу понять ошибку. Она не показывает номер первого такого элемента. Обнуляет его почему-то.

var a: array[1..10] of integer;
i, b, e, f, d, C: integer;
begin
d:= 1;
f:= 1;
write ('Введите число C: ');
readln (C);
writeln;
for i:= 1 to 10 do
begin
write('a[',i,'] = ');
readln(a[i]);
end;
for i:= 1 to 10 do
if a[i] = C then e:= e+1;
writeln;
if e > 0 then writeln ('В массиве нашлось число, равное С');
writeln;
for i:= 1 to 10 do
begin
if (a[i] = C) then b:= i;
if f > b then f:= b;
end;
writeln ('Первое такое число a[',f,']');
for i:= 1 to 10 do
begin
if (a[i] = C) then b:= i;
if d < b then d:= b;
end;
writeln ('Последнее такое число a[',d,']');
end.


Информатика (206 баллов) | 10 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Var a: array [1 .. 10] of integer;
  i, Count, C, tmpLast, tmpFirst: integer;
begin
  write('Введите число C: ');
  readln(C);
  writeln;
  for i := 1 to 10 do
  begin
    write('a[', i, '] = ');
    readln(a[i]);
    if a[i] = C then
    begin
      Count := Count + 1;
      tmpLast := i;
    end;
  end;
  writeln;
  if (Count = 0) then writeln('В массиве нет числа равное С')
  else
  begin
    writeln('В массиве нашлось число, равное С');
    if (Count = 1) then
      writeln('Первое и единственное число в позиции a[', tmpLast, ']')
    else
    begin
      i := 0;
      repeat
        i := i + 1;
        tmpFirst := i;
      until (a[i] = C);
      writeln('Первое такое число a[', tmpFirst, ']');
      writeln('Последнее такое число a[', tmpLast, ']');
    end;
  end;
  readln;
end.


image
(9.4k баллов)