Задание
Написать программу которая :
1.Описывает одномерный массив из 10 элементов
2.вводит значение элементов массива с клавиатуры
3.выводит на экран значение второго по величине элемента
4.если такого значения нет вывести No
программа должна осуществлять поиск за однократный проход по массиву.
Я могу написать программу которая проходится 2 раза по массиву но как написать такую чтобы она проходилась только один раз
Другие языки программирования и технологии
Как написать программу в паскале
begin
var a := ArrRandom(10,0,9);
a.Println;
var max_vals1, max_vals2:integer;
if a[0] > a[1] then begin
max_vals1 := a[0];
max_vals2 := a[1];
end else begin
max_vals1 := a[1];
max_vals2 := a[0];
end;
for var i := 2 to 9 do
if a[i] > max_vals1 then begin
max_vals2 := max_vals1;
max_vals1 := a[i];
end
else if a[i] > max_vals2 then max_vals2 := a[i];
writeln('max_vals1=',max_vals1,'; max_vals2=',max_vals2);
end.

var a := ArrRandom(10,0,9);
a.Println;
var max_vals1, max_vals2:integer;
if a[0] > a[1] then begin
max_vals1 := a[0];
max_vals2 := a[1];
end else begin
max_vals1 := a[1];
max_vals2 := a[0];
end;
for var i := 2 to 9 do
if a[i] > max_vals1 then begin
max_vals2 := max_vals1;
max_vals1 := a[i];
end
else if a[i] > max_vals2 then max_vals2 := a[i];
writeln('max_vals1=',max_vals1,'; max_vals2=',max_vals2);
end.

var min_vals : array [1..2] of integer;
data: array [1..10] of integer;
...
Здесь ввод
...
if data[1] < data[2] then begin
min_vals[1] := data[1];
min_vals[2] := data[2]
end else begin
min_vals[1] := data[2];
min_vals[2] := data[1]
end;
for i := 3 to 10 do begin
if data[i] < min_vals[1] then begin
min_vals[2] := min_vals[1];
min_vals[1] := data[i]
end else if data[i] < min_vals[2] then begin
min_vals[2] := data[i]
end;
В результате в min_vals[1] - минимальный, в min_vals[2] - следёющий по величине.
Но если в массиве есть два идентичных минимальных элемента, они оба окажутся в min_vals.
data: array [1..10] of integer;
...
Здесь ввод
...
if data[1] < data[2] then begin
min_vals[1] := data[1];
min_vals[2] := data[2]
end else begin
min_vals[1] := data[2];
min_vals[2] := data[1]
end;
for i := 3 to 10 do begin
if data[i] < min_vals[1] then begin
min_vals[2] := min_vals[1];
min_vals[1] := data[i]
end else if data[i] < min_vals[2] then begin
min_vals[2] := data[i]
end;
В результате в min_vals[1] - минимальный, в min_vals[2] - следёющий по величине.
Но если в массиве есть два идентичных минимальных элемента, они оба окажутся в min_vals.
Николай Каратаев
спасибо
3 переменных
1я -- есть или нет (изначально ноль)
2я -- текущее значение
3я -- входное
и по ходу ввода во вторую отправлять меньшее текущего или текущее, если новое больше
и первой присваивать единичку если такое случилось
1я -- есть или нет (изначально ноль)
2я -- текущее значение
3я -- входное
и по ходу ввода во вторую отправлять меньшее текущего или текущее, если новое больше
и первой присваивать единичку если такое случилось
if a[i]>premax then
begin
a[i]:=premax;
if premax>max then max=premax;
end;
вроде в premax должен оказаться второй по величине элемент
begin
a[i]:=premax;
if premax>max then max=premax;
end;
вроде в premax должен оказаться второй по величине элемент
Николай Каратаев
сек щас попробую
Похожие вопросы
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Нужно написать программу на паскале
- Написать программу в Паскале для построения графика функций. К программе желательно составить алгоритм.
- Помогите написать программу на паскале
- плизз! поомогите написать программу на паскале!
- Помогите пожалуйста написать программу в Паскале )) Написать программу для вычисления суммы в массиве из 10 элементов
- Помогите, пожалуйста, написать программу на Паскале хотя бы примерно
- Написать программу для паскаль
- люди добрые помогите мне написать программу в паскале, метод Рунге Кутта. Математическое решение есть у меня
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале
Я только не могу понять для чего в строке : var a := ArrRandom(10,0,9); в скобках стоят именно числа 10,0,9
Что будет если поставить другие?