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

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

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

> Массив
Alena
сообщение 8.09.2005 10:13
Сообщение #1


Гость






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

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

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

                          s1    s2
                        E  + E
                z= _____________
                          k1*k2

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

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

Сообщение отредактировано: volvo - 8.09.2005 10:14
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 13)
Alena
сообщение 8.09.2005 10:16
Сообщение #2


Гость






немного не так создало тему
корректирую
E в степени s1 прибавить E в степени s2 и делиться все это на k1*k2
 К началу страницы 
+ Ответить 
volvo
сообщение 8.09.2005 11:37
Сообщение #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.
 К началу страницы 
+ Ответить 
Alena
сообщение 8.09.2005 14:39
Сообщение #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 - 8.09.2005 15:17
 К началу страницы 
+ Ответить 
klem4
сообщение 8.09.2005 14:45
Сообщение #5


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

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

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


10 и 11 посты

посмотри.

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


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


Гость






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

Хотя СТОП !!! Ты массивы заполнила значениями? Если нет, то у тебя действительно деление на 0, потому что количество положительных элементов в обоих массивах = 0. Комментарии читаем ВНИМАТЕЛЬНО. Там где написано "здесь - заполнение массивов" должно быть заполнение массивов. Без него программа работать не будет.
 К началу страницы 
+ Ответить 
Alena
сообщение 8.09.2005 15:50
Сообщение #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.
 К началу страницы 
+ Ответить 
volvo
сообщение 8.09.2005 15:53
Сообщение #8


Гость






For i := 1 To 60 Do y[i] := Random(100); {числа от 0 до 99 }
 К началу страницы 
+ Ответить 
Guest
сообщение 8.09.2005 16:03
Сообщение #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.
 К началу страницы 
+ Ответить 
klem4
сообщение 8.09.2005 16:23
Сообщение #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 
 К началу страницы 
+ Ответить 
Guest
сообщение 8.09.2005 16:37
Сообщение #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.

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


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

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

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


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

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

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


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


Гость






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


Гость






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

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

 



- Текстовая версия 21.06.2025 20:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"