Другие языки программирования и технологии
Помогите составить программу в pascal? срочно надо!!!!
1. Дан одномерный массив, состоящий из n элементов. Найдите среднее арифметическое положительных чисел массива. (если можно с мальнькимими объяснениями!!)
Руслан Хабибуллин,
Во-первых, ничего не режет. Нужно правильно пробелы расставлять.
Во-вторых 0 - это не положительное число и не отрицательное. Это ноль, поэтому условие написано неправильно. Ноль причисляется к положительным за границей и в программировании, в частности в ассемблере и С/С++, но не в математике.
В-третьих, автор вопроса не указал версию Паскаля и с высокой долей вероятности это может быть Turbo Pascal, у которого нет процедуры SetLength, и следовательно он с динамическими массивами работать не умеет.
program N63168941;
var a:array[ 1 .. 1000 ] of integer;
i, n, k:integer;
s:longint;
m:real;
begin
write('Введите кол-во элементов массива: ');
readln(n); {Ввод кол-ва элементов массива с клавиатуры}
randomize; {Инициализация генератора случайных чисел}
writeln('Заданный массив: ');
s := 0; {Начальное значение суммы}
k := 0; {Обнуление счётчика положительных эл-тов}
for i := 1 to n do {Цикл по элементам массива}
begin
a[ i ] := random(21) - 10; {генерация элементов [-10;10] }
write(a[ i ]:4); {Вывод текущего элемента на экран}
if a[ i ] > 0 then {если положительный, то}
begin
s := s + a[ i ]; {сложение с суммой}
inc(k) {или k := k + 1 - увеличение счётчика}
end
end;
m := s / (k + ord(k = 0)); {Вычисление ср. арифметического}
writeln;
writeln('Сумма положительных элементов = ',s);
writeln('Их количество = ',k);
writeln('Их среднее арифметическое = ',m:0:3);
readln {Ожидание нажатия Enter перед закрытием консоли}
end.
P.S. Посмотреть, как в Turbo Pascal реализуется суррогатный динамический массив можно Здесь
P.P.S. Вместо непонятной формулы m := s / (k + ord(k = 0)); можно написать так:
m := 0;
if k > 0 then
m := s / k;
Во-первых, ничего не режет. Нужно правильно пробелы расставлять.
Во-вторых 0 - это не положительное число и не отрицательное. Это ноль, поэтому условие написано неправильно. Ноль причисляется к положительным за границей и в программировании, в частности в ассемблере и С/С++, но не в математике.
В-третьих, автор вопроса не указал версию Паскаля и с высокой долей вероятности это может быть Turbo Pascal, у которого нет процедуры SetLength, и следовательно он с динамическими массивами работать не умеет.
program N63168941;
var a:array[ 1 .. 1000 ] of integer;
i, n, k:integer;
s:longint;
m:real;
begin
write('Введите кол-во элементов массива: ');
readln(n); {Ввод кол-ва элементов массива с клавиатуры}
randomize; {Инициализация генератора случайных чисел}
writeln('Заданный массив: ');
s := 0; {Начальное значение суммы}
k := 0; {Обнуление счётчика положительных эл-тов}
for i := 1 to n do {Цикл по элементам массива}
begin
a[ i ] := random(21) - 10; {генерация элементов [-10;10] }
write(a[ i ]:4); {Вывод текущего элемента на экран}
if a[ i ] > 0 then {если положительный, то}
begin
s := s + a[ i ]; {сложение с суммой}
inc(k) {или k := k + 1 - увеличение счётчика}
end
end;
m := s / (k + ord(k = 0)); {Вычисление ср. арифметического}
writeln;
writeln('Сумма положительных элементов = ',s);
writeln('Их количество = ',k);
writeln('Их среднее арифметическое = ',m:0:3);
readln {Ожидание нажатия Enter перед закрытием консоли}
end.
P.S. Посмотреть, как в Turbo Pascal реализуется суррогатный динамический массив можно Здесь
P.P.S. Вместо непонятной формулы m := s / (k + ord(k = 0)); можно написать так:
m := 0;
if k > 0 then
m := s / k;
program mas;
var massiv:array of integer;
n,i,summa:integer;
begin
Writeln('Введите размерность массива');
Readln(n);
Setlength(massiv,n);
for i:=0 to n do begin
if massiv>=0 then summa:=summa+massiv;
end;
writeln('Сумма равна = '+summa);
end.
В строке с условием после переменной massiv идут квадратные скобки ...mail собака режет
var massiv:array of integer;
n,i,summa:integer;
begin
Writeln('Введите размерность массива');
Readln(n);
Setlength(massiv,n);
for i:=0 to n do begin
if massiv>=0 then summa:=summa+massiv;
end;
writeln('Сумма равна = '+summa);
end.
В строке с условием после переменной massiv идут квадратные скобки ...mail собака режет
А где ваши наработки?? ?
Если нету наработок то пишите на мыло - любой каприз за ваши мани
Если нету наработок то пишите на мыло - любой каприз за ваши мани
Похожие вопросы
- Помогите составить программу на pascal
- Помогите составить программу в Pascal ABC
- Помогите составить программу в Pascal
- Помогите составить программу на Pascal.
- Помогите составить программу в Pascal или С++(а лучше и там и там)
- Помогите составить программу в Pascal
- помогите составить программу на Pascal дана матрица NxN.Найти наибольший элемент строки K.
- Помогите составить программу через Pascal с использованием функции и процедуры.
- Пожалуйста, помогите составить программу в Pascal.
- Помогите написать программу на Pascal Срочно