Mail.ruПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискСмотриComboВсе проекты

Простая школьная задача в PascalABC

Алексей Тихонов Знаток (336), закрыт 8 месяцев назад
PascalABC. Напишите программу, которая запрашивает количество элементов линейного массива действительных чисел (не больше 25), затем сами элементы массива, затем выводит на экран введённый массив (на одной строке) и на следующей строке два его наименьших члена (одинаковые члены игнорируются - то есть из массива 3 2 1 1 будут выведены числа 1 и 2). Если таких членов в массиве нет, программа сообщает об этом. Отработав, программа должна спросить, не хочет ли пользователь повторить операцию.
Лучший ответ
Alexandr Мыслитель (7888) 9 месяцев назад
const
N = 25;

var
_n: integer;
a: array[1..N]of integer;
i, j: integer;
min: integer;
tmp: integer;
_continue: char;

begin
_continue := 'y';
while _continue <> 'n' do
begin
write('Введите количество элементов массива:');
readln(_n);

if (2 <= _n) and (_n <= N) then
begin
writeln('Введите элементы массива:');
for i := 1 to _n do
begin
readln(A[i]);
end;

writeln('Элементы массива:');
for i := 1 to _n do
begin
write(A[i], ' ');
end;

for i := 1 to _n do
begin
min := A[i];
for j := i + 1 to _n do
begin
if A[j] < min then
begin
tmp := A[i];
A[i] := A[j];
A[j] := tmp;
end;
end;
end;

end
else
writeln('Ошибка! Количество элементов массива должно быть болше 1 и не более 25.');
writeln;
if A[1] <> A[2] then
writeln('Два наименьших элемента массива:', A[1], ' ', A[2])
else
writeln('Наименьшие элементы совпадают.');
write('Продолжить? y/n:');
readln(_continue);
end;
end.
Алексей ТихоновЗнаток (336) 9 месяцев назад
Программа должна вывести эти элементы, а не сказать, что они одинаковы
Остальные ответы
Валерий Михайлов Мастер (1945) 9 месяцев назад
program Massiv;
var M: array [1..25] of integer;
i,n,min, max: integer;
Ans: byte;
begin
repeat
writeln('Введите кол-во элементов:');
readln(n);
writeln ('Введите элементы массива 1-', n,':');
for i:=1 to n do
read (M[i]);
writeln();
for i:=1 to n do
write(M[i],' ');
writeln();
min:=M[1];
max:=M[1];
for i:=2 to n do
begin
if M[i]>max then max:=M[i];
if M[i]<min then min:=M[i];
end;
if (min = max) then
writeln ('Нет минимального и максимального элемента.')
else
writeln ('Минимальное ч. ', min, ', максимальное ч. ', max);
writeln ('Повторить? 1 - Да, 0 - Нет');
readln (Ans);
until (Ans <> 1)
end.
Алексей ТихоновЗнаток (336) 9 месяцев назад
Надо указать два наименьших числа, а не наименьшее и наибольшее
Валерий МихайловМастер (1945) 9 месяцев назад
program Massiv;

var
M: array [1..25] of integer;
i, n, min1, min2, max: integer;
Ans: byte;

begin
repeat
writeln('Введите кол-во элементов:');
readln(n);
writeln('Введите элементы массива 1-', n, ':');
for i := 1 to n do
read(M[i]);
writeln();
for i := 1 to n do
write(M[i], ' ');
writeln();
min1 := M[1];
max := M[1];
for i := 2 to n do
begin
if M[i] > max then max := M[i];
if M[i] < min1 then min1 := M[i];
end;
min2 := max;
for i := 1 to n do
if (M[i] < min2) and (M[i] <> min1) then
min2 := M[i];
if (min1 = min2) then
writeln('Все числа равны.')
else
writeln('Мин. 1 = ', min1, ', мин. 2 = ', min2);
writeln('Повторить? 1 - Да, 0 - Нет');
readln(Ans);
until (Ans <> 1)
end.
Чижик Пыжик Мастер (1536) 9 месяцев назад
program Test;
uses crt;
const
N = 10;
var
mas: array [1..25] of integer;
i,j,size,a,ask,k:integer;
begin
repeat
write('Введите размер массива: ');
readln(size);
writeln('');
if size > 25 then
begin
writeln('Вы ввели размер массива, больше возможного!');
exit;
end;
clrscr;
for i:=1 to size do
begin
write('Введите ',i,'-ый элемент массива: ');
read(mas[i]);
clrscr;
end;
write('Все элементы массива: ');
for i:=1 to size do
begin
write(mas[i], ' ');
end;
writeln('');
for i:=1 to size-1 do
for j:=1 to size-i do
if mas[j] > mas[j+1] then
begin
a:= mas[j];
mas[j]:= mas[j+1];
mas[j+1]:= a;
end;
write('Отсортированный массив: ');
for i:=1 to size do
write(mas[i],' ');
for i:=1 to size do
if mas[i] = mas[i+1] then
begin
mas[i]:= 0;
k:= i+1;
end;
writeln('');
writeln('Первый наименьший элемент массива - ',mas[k],'. Второй наименьший элемент массива - ',mas[k+1]);
write('Повторить? -Да (1), -Нет (0): ');
readln(ask);
clrscr;
until (ask <> 1)
end.
Алексей ТихоновЗнаток (336) 9 месяцев назад
не правильно работает программа, при вводе массива 1 1 2 3 выдаёт 1 1
Jurii Высший разум (133762) 9 месяцев назад
Вау! Сколько букв?

Решение максимум на две строки кода!
Frontware Профи (521) 9 месяцев назад
зачем ты всех скрыл?
Они дали верные ответы
Алексей ТихоновЗнаток (336) 9 месяцев назад
Нет, никакой из них не соответствовал условию задачи
Alexandr Мыслитель (7888) Скорее, задача была поставлена немного некорректно. В комментарии к моему ответу, он написал: "Программа должна вывести эти элементы, а не сказать, что они одинаковы", хотя в условии задачи написано:" одинаковые члены игнорируются", и "Если таких членов в массиве нет, программа сообщает об этом.". Он сам себе противоречит. Если программа написана классическим стилем, а не в три строчки, это ещё не значит, что она будет медленней работать. Просто в варианте в три строчки задействованы встроенные в PascalABC функции, а в моем варианте, аналогичные им функции реализованы в тексте программы.
Похожие вопросы
Также спрашивают