Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pascal.Проверьте пожалуйста код. Компилятора нет. 
:(
    Опции темы
ruslandlion
Дата 5.3.2012, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



В данный момент нету компилятора, проверьте пожалуйста правильно ли я написал 2 маленькие программки. Первая 
Цитата

написать программу для вычисления среднего арифметического отрицательных элементов массива (z1,z2,….z18)


вот код 

Код

Program p1;
var
i,k,n:integer;
sr:real;
a:array{1..18} of integer;
begin
n:=0; sr:=0;
randomize;
writeln('Введите число элементов массива от 1 до 18: '); read(k);
for i:=1 to k do 
begin
a[i]:random(10)-20;
n:=n+a[i];
end;
sr:= n/k;
write(sr:5);
write(‘Среднее арифметическое введенного вами числа элементов равно: ’sr );
end.



и второе задание было 
Цитата

Написать программу для вычисления  произведения элементов массива (Y1,Y2,…Y3), модуль которых больше 5 


Код

Program p1;
var
i,k,n:integer;
sr:real;
a:array{1..3} of integer;

begin
n:=1; sr:=0;
randomize;
writeln('Введите число элементов массива от 1 до 3: '); read(k);
for i:=1 to k do 
begin
a[i]:random(5)+20;
n:=n*a[i];
end;
sr:= n;
write(sr:5);
write(‘Произведение элементов массива равно: ’sr );
end.


PM MAIL   Вверх
iff
Дата 5.3.2012, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 3
Всего: 16



Цитата(ruslandlion @  5.3.2012,  17:44 Найти цитируемый пост)
n:=0; sr:=0;

begin и так всё обнулил

Цитата(ruslandlion @  5.3.2012,  17:44 Найти цитируемый пост)
array{1..18}

квадратные скобки

Цитата(ruslandlion @  5.3.2012,  17:44 Найти цитируемый пост)
a[i]:random(10)-20;

приваивание - не двоеточие
рэндом - вещественное, а a[i] - целое

Цитата(ruslandlion @  5.3.2012,  17:44 Найти цитируемый пост)
read(k);

всё сольётся в одну строку

Цитата(ruslandlion @  5.3.2012,  17:44 Найти цитируемый пост)
write(sr:5);
write(‘Среднее арифметическое введенного вами числа элементов равно: ’sr );

два раза выводить одно и тоже? причём опять всё в одну строку сливается

В задании сказано найти среднее арифметическое отрицательных элементов, а вы нашли среднее арифметическое всех элементов.


Для второго задания - аналогично, всё неправильно.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
502
Дата 5.3.2012, 18:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Я всегда прав
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 16.7.2011

Репутация: нет
Всего: 4



Цитата(ruslandlion @  5.3.2012,  17:44 Найти цитируемый пост)
В данный момент нету компилятора

поищите "online compiler"  smile 
PM MAIL   Вверх
iff
Дата 5.3.2012, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 3
Всего: 16



Код

Var Z : Array[1..18] Of Integer; Sr : Real; I, Counter : Byte;
Begin
    Randomize;
    For I := 1 To 18 Do Z[I] := Round(Random(1001) - 500);
    For I := 1 To 18 Do Write(Z[I], ' ');
    WriteLn;
    For I := 1 To 18 Do
        If Z[I] < 0 Then
        Begin
            Inc(Counter);
            Sr := Sr + Z[I];
        End;
    If Counter > 0 Then Sr := Sr / Counter;
    WriteLn('Srednee: ', Sr:0:4);
    ReadLn;
End.



--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
ruslandlion
Дата 5.3.2012, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



Спасибо большое)
PM MAIL   Вверх
ruslandlion
Дата 6.3.2012, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2006

Репутация: нет
Всего: нет



вторую прогу подправил верно? 
Код

var
i,k,n:integer;
sr:real;
a:array [ 1..3 ] of integer;
begin
n:=1; sr:=0;
randomize;
writeln('Введите число элементов массива от 1 до 3: '); read(k);
for i:=1 to k do 
begin
a:=random(20)-10;
if abs(a) > 5 then n:=n*a; 
end;
sr:= n;
write(sr:5);
write(‘Произведение элементов массива равно: ’,sr );
end.



Это сообщение отредактировал(а) ruslandlion - 6.3.2012, 11:46
PM MAIL   Вверх
iff
Дата 6.3.2012, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 3
Всего: 16



Цитата(ruslandlion @  5.3.2012,  17:44 Найти цитируемый пост)
Написать программу для вычисления  произведения элементов массива (Y1,Y2,…Y3), модуль которых больше 5 

Код

Var Y : Array[1..3] Of Integer; P : LongInt; I : Byte;
Begin
    Randomize;
    P := 1;
    For I := 1 To 3 Do Y[I] := Round(Random(1001) - 500);
    For I := 1 To 3 Do Write(Y[I], ' ');
    WriteLn;
    For I := 1 To 3 Do
        If Abs(Y[I]) > 5 Then P := P * Y[I];
    WriteLn('Proizvedenie: ', P);
    ReadLn;
End.




--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Mirkes
Дата 6.3.2012, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Цитата(iff @  5.3.2012,  18:50 Найти цитируемый пост)
Цитата(ruslandlion @  5.3.2012,  17:44 )n:=0; sr:=0;begin и так всё обнулил


Смотря какой компилятор. Классический компилятор дельфи не обнуляет. В спецификациях языка на эту тему нет ничего, так что лучше обнулить.


--------------------
Mirkes
PM MAIL   Вверх
iff
Дата 6.3.2012, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 3
Всего: 16



Турббо Паскаль точно обнуляет (я дезасемблировал код и находил то место, где инструкцией rep stosw вся память, выделенная под переменные, зануляется)


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Mirkes
Дата 8.3.2012, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Цитата(iff @  6.3.2012,  19:39 Найти цитируемый пост)
Турббо Паскаль точно обнуляет (я дезасемблировал код и находил то место, где инструкцией rep stosw вся память, выделенная под переменные, зануляется) 


Именно на Turbo Pascal отутствие зануления несколько раз стоило мне длительной отладки. Правда дело было в подпрограммах. А вообще ест хорошее правило: если в спецификациях языка не сказано, что обнуляется, обнулять.


--------------------
Mirkes
PM MAIL   Вверх
bems
Дата 8.3.2012, 05:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 0
Всего: 88



Цитата(Mirkes @  6.3.2012,  19:27 Найти цитируемый пост)
Классический компилятор дельфи не обнуляет

В дельфи глобальные переменные (включая объявленные в секции implementation юнитов) обнуляются, если для них не задано инициализирующее значение. Из локальных переменных инициализируются только автоматические типы, но и эта инициализация может требовать дальнейшего обнуления.

Это сообщение отредактировал(а) bems - 8.3.2012, 05:39


--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0983 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.