C/C++

Помогите с паскалем...

В одномерном массиве, состоящем из N вещественных элементов, вычислить:
• минимальный элемент массива;
• сумму элементов массива, расположенных после максимального элемента.
X - массив длины N, min и max - значения его минимального и максимального элементов, a и b - границы диапазона, из которого случайным образом выбираются вещественные числа, sum - сумма элементов, стоящих за максимальным элементом (за первым максимальным если их больше одного). Если максимальный элемент последний в массиве, то печатается сообщение, что элементов за ним нет:
 var i, index, m, N: integer; 
a, b, max, min, sum: real;
X: array of real;
begin
randomize();
write('a b N: ');
readln(a, b, N);
setlength(X, N);
m := N - 1;
X[0] := a + (b - a) * random;
writeln(1: 4, ')', X[0]: 20: 12);
index := 0;
max := X[0];
min := X[0];
for i := 1 to m do
begin
X[i] := a + (b - a) * random;
writeln(i + 1: 4, ')', X[i]: 20:12);
if X[i]>max then
begin
index := i;
max := X[i]
end;
if X[i]
АС
Андрей Станица
66 572
Лучший ответ
Ну в цикле проверяйте кто меньше текущий или сохраненный (перед циклом сохраните первый) и если сохраненный меньше пересохраняйте текущий. Так найдете минимальный.
Мкксимальный по тому же признаку (только еще индекс хранить) и вторым проходом по массиву считать сумму.
Все.
Так с Pascal, C++ или C? И да, как заполняется массив (вводится ли с клавиатуры или же автоматически заполняется случайными числами)?

Итак, Pascal:

1-ый вариант (массив вводится вручную с клавиатуры):
 Program P1; 
uses crt;
const n=10;
type mas=array [1..n] of real;
var i, ind: byte;
m: mas;
min, max, s: real;
begin
clrscr;
writeln ('Заполните массив числами, вводя их с клавиатуры. После ввода каждого числа нажимайте клавишу Enter. При вводе дробных значений целую часть от дробной отделяйте точкой, а не запятой.');
for i:=1 to n do begin
write ('Введите ', i, '-й элемент массива: ');
readln (m[i]);
end;
ind:=1;
min:=m[1];
max:=m[1];
s:=0;
for i:=1 to n do begin
if m[i]max then begin
ind:=i;
max:=m[i];
end;
end;
writeln ('Минимальный элемент массива: ', min :0:2);
if ind=n then writeln ('В массиве нет элементов, расположенных после максимального.') else begin
for i:=ind+1 to n do s:=s+m[i];
writeln ('Сумма элементов, расположенных после максимального: ', s :0:2);
end;
write ('Программа завершена. Для выхода нажмите клавишу Enter.');
readkey;
end.
2-ой вариант (массив заполняется автоматически при помощи генератора случайных чисел):
 Program P1; 
uses crt;
const n=10;
type mas=array [1..n] of real;
var i, ind: byte;
m: mas;
min, max, s: real;
begin
clrscr;
randomize;
for i:=1 to n do m[i]:=random (101)-10;
ind:=1;
min:=m[1];
max:=m[1];
s:=0;
write ('Был сгенерирован массив:');
for i:=1 to n do write (' ', m[i] :0:2);
writeln (' ');
for i:=1 to n do begin
if m[i]max then begin
ind:=i;
max:=m[i];
end;
end;
writeln ('Минимальный элемент массива: ', min :0:2);
if ind=n then writeln ('В массиве нет элементов, расположенных после максимального.') else begin
for i:=ind+1 to n do s:=s+m[i];
writeln ('Сумма элементов, расположенных после максимального: ', s :0:2);
end;
write ('Программа завершена. Для выхода нажмите клавишу Enter.');
readkey;
end.
Т.к. длина ответа ограничена (как, впрочем, и длина комментария), то тексты обоих вариантов этой программы на языках C++ и C напишу уже в комментариях к этому ответу.
AH
Almas Hasenov
43 559
Almas Hasenov C++:

Ручной ввод:
 #include  
const unsigned short n=10;
unsigned short i, ind;
long double m[n];
long double minm, maxm, s;
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
cout
Almas Hasenov Продолжаю:
     for (i=0; i							
Almas Hasenov Автоматическое заполнение:
 #include  
#include
#include
const unsigned short n=10;
unsigned short i, ind;
float m[n];
float minm, maxm, s;
using namespace std;
int main ()
{
setlocale (LC_ALL, "RUS");
srand (time (0));
for (i=0; i
Almas Hasenov Продолжаю:
    for (i=0; i							
Almas Hasenov C:

Ручной ввод:
 #include   
int main ()
{
const unsigned short n=10;
unsigned short i, ind;
long double m[n];
long double minm, maxm, s;
printf("Заполните массив числами, вводя их с клавиатуры. После ввода каждого числа нажимайте клавишу Enter. При вводе дробных значений целую часть от дробной отделяйте точкой, а не запятой.\n");
for (i=0; i
Almas Hasenov Продолжаю:
     for (i=0; i							
Almas Hasenov Ну и автоматическое заполнение на C:
 #include  
#include
#include
int main ()
{
const unsigned short n=10;
unsigned short i, ind;
float m[n];
float minm, maxm, s;
srand (time (0));
for (i=0; i
Almas Hasenov Продолжаю (вернее, заканчиваю):
     printf ("\nМинимальный элемент массива: %f", minm);  
if (ind==n) {printf ("\nВ массиве нет элементов, расположенных после максимального.");}
else {for (i=ind+1; i