IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Массив
сообщение
Сообщение #1


Гость






Мальчишки вы все так классно решаете, а я в паскале не понимаю, через 2 дня надо сдавать контрольную , помогите пожалуйста а? :p2:

Дали вот такое запутанное задание

Вычислить
Цитата

                          s1    s2
                        E  + E
                z= _____________
                          k1*k2

s2 - сумма положительных элементов массива X(80)
k2 - кол- во положительных элементов массива X(80)

s1 - сумма положительных элементов массива y(60).
k1 - кол- во положительных элементов массива y(60).
выполнить с использованием подпрограмм

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






немного не так создало тему
корректирую
E в степени s1 прибавить E в степени s2 и делиться все это на k1*k2
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Значит, принцип такой:
function get_amount(var arr: array of integer;
         const n: integer): integer;
var i, count: integer;
begin
  count := 0;
  for i := 0 to pred(n) do
    if arr[i] > 0 then inc(count);
  get_amount := count;
end;

function get_sum(var arr: array of integer;
         const n: integer): integer;
var i, s: integer;
begin
  s := 0;
  for i := 0 to pred(n) do
    if arr[i] > 0 then inc(s, arr[i]);
  get_sum := s;
end;

var
  x: array[1 .. 80] of integer;
  y: array[1 .. 60] of integer;

begin
  { здесь - заполнение массивов }
  write('z = ', (exp(get_sum(y, 60)) + exp(get_sum(x, 80))) /
                (get_amount(y, 60) * get_amount(x, 80)) );
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






а у меня при запуске выдаёт здесь ошибку еррор 200, а когда компилируешь всё в порядке, подскажите volvo что я не так делаю

Код
begin
 { здесь - заполнение массивов }

!!!!!!!!!!!  write('z = ', (exp(get_sum(y, 60)) + exp(get_sum(x, 80))) /
               (get_amount(y, 60) * get_amount(x, 80)) );
end.


Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


10 и 11 посты

посмотри.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Может, можно обойтись без модуля Crt? Просто не указывай его в Uses и не будет Error 200...

Хотя СТОП !!! Ты массивы заполнила значениями? Если нет, то у тебя действительно деление на 0, потому что количество положительных элементов в обоих массивах = 0. Комментарии читаем ВНИМАТЕЛЬНО. Там где написано "здесь - заполнение массивов" должно быть заполнение массивов. Без него программа работать не будет.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Я сделала так но в конце опять ошибка( после заполнения массива)
что то опять напартачила, а можно как то автоматизировать заполнение массива ну случайными числами например??????

Код

function get_amount(var arr: array of integer;

        const n: integer): integer;

var i, count: integer;

begin

 count := 0;

 for i := 0 to pred(n) do

   if arr[i] > 0 then inc(count);

 get_amount := count;

end;


function get_sum(var arr: array of integer;

        const n: integer): integer;

var i, s: integer;

begin

 s := 0;

 for i := 0 to pred(n) do

   if arr[i] > 0 then inc(s, arr[i]);

 get_sum := s;

end;


var

 x: array[1 .. 80] of integer;

 y: array[1 .. 60] of integer;
 i: integer;

begin

 { здесь - заполнение массивов }


WriteLn ('Vvedite elementi massiva X:');
For i := 1 To 80 Do
Begin
Write ('x[', i, '] = ');              
ReadLn (x[i]);
end;


WriteLn ('Vvedite elementi massiva Y:');
For i := 1 To 60 Do              

Begin
Write ('y[', i, '] = ');
ReadLn (y[i]);
               end;

 write('z = ', (exp(get_sum(y, 60)) + exp(get_sum(x, 80))) /

               (get_amount(y, 60) * get_amount(x, 80)) );
     end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






For i := 1 To 60 Do y[i] := Random(100); {числа от 0 до 99 }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






т.е должно быть так??

Код

var
 x: array[1 .. 80] of integer;
 y: array[1 .. 60] of integer;
begin
For i:= 1 To 80 Do
begin
x[i] := Random(100); {числа от 0 до 99 }
end;

For i:= 1 To 60 Do
  begin
y[i] := Random(100); {числа от 0 до 99 }
end;
 write('z = ', (exp(get_sum(y, 60)) + exp(get_sum(x, 80))) /
               (get_amount(y, 60) * get_amount(x, 80)) );
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Похоже на правду, но есть маленькое замечание, у тебя в телах циклов for всего одни оператор - присвоение элементу массива случайного значения, по этому вовсе не нужно ставить
Begin...end;
Это для составного оператора, у тебя можно просто
for i := 1 to n do x[i] := random(100);


;) Это так ... к слову


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






вот так всё равно не работает sad.gif
Код

function get_amount(var arr: array of integer;
        const n: integer): integer;
var i, count: integer;
begin
 count := 0;
 for i := 0 to pred(n) do
   if arr[i] > 0 then inc(count);
 get_amount := count;
end;
function get_sum(var arr: array of integer;
        const n: integer): integer;
var i, s: integer;
begin
 s := 0;
 for i := 0 to pred(n) do
   if arr[i] > 0 then inc(s, arr[i]);
 get_sum := s;
end;
var
 x: array[1 .. 80] of integer;
 y: array[1 .. 60] of integer;
  i: integer;
begin
 { здесь - заполнение массивов }
For i := 1 To 80 Do x[i] := Random(100); {числа от 0 до 99 }
For i := 1 To 60 Do y[i] := Random(100);
 write('z = ', (exp(get_sum(y, 60)) + exp(get_sum(x, 80))) /
               (get_amount(y, 60) * get_amount(x, 80)) );
end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


А что конкретно не работает ? Компилируется нормально.

зы и будь добра, выложи полностью свою программу.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Странно. У меня эта программа выдает:
Цитата
z =  3.3281958460818649E+1865
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






спасибо мальчики разобралась всё дело в той самой полурабочей версии паскаля.
Спасибо ВСЕМ вы супер!!! :thanks:
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.04.2025 16:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name