• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Задача на массивы, Pascal. Помогите найти ошибку

~nezabudka~

Ученик
Регистрация
26 Май 2011
Сообщения
3
Реакции
0
Баллы
0
Задача на массивы, Pascal. Помогите найти ошибку

Дан вектор А[1:15].

1) найти минимальный элемент

2) найти произведение минимального элемента и суммы элементов 2ектора, больших - 2

3) найти произведение среднеарифметического значения вектора на максимальный элемент вектора.

4) найти номер максимального элемента из первых 10 элементов вектора .

В четвертом задании что-то не так :tehnari_ru_117:


PROGRAM VECTOR;
USES WINCRT;
CONST N=15;B=2;
VAR
A:ARRAY[1..15] OF INTEGER;
MIN,MAX,I,S1,S2,P1,MAXX: INTEGER;
SRA,P2:REAL;
BEGIN
RANDOMIZE;
WRITELN(' ЗАДАН ВЕКТОР А:');
FOR I:=1 TO N DO
A:=RANDOM(30)-10;
BEGIN
FOR I:=1 TO N DO
WRITE(A:4);
WRITELN;
WRITELN;
END;
MIN:=A[1];
BEGIN
FOR I:=2 TO N DO
IF A<MIN
THEN MIN:=A;
WRITELN(' 1) МИНИМАЛЬНЫЙ ЭЛЕМЕНТ ВЕКТОРА РАВЕН:',MIN:4);
WRITELN;
END;
S1:=0;
P1:=1;
BEGIN
FOR I:=1 TO N DO
IF A>B
THEN
S1:=S1+A;
P1:=S1*MIN;
WRITELN(' 2) СУММА ЭЛЕМЕНТОВ >2:',S1:4);
WRITELN;
WRITELN(' ПРОИЗВЕДЕНИЕ МИНИМАЛЬНОГО ЭЛЕМЕНТА И');
WRITELN(' СУММЫ ЭЛЕМЕНТОВ >2 РАВНО:',P1:8);
WRITELN;
END;
BEGIN
S2:=0;
P2:=1;
SRA:=0;
MAX:=A[1];
BEGIN
FOR I:=2 TO N DO
IF A>MAX
THEN MAX:=A;
END;
FOR I:=1 TO N DO
S2:=S2+A;
SRA:=S2/N;
P2:=SRA*MAX;
WRITELN(' 3) МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ ВЕКТОРА:',MAX:4);
WRITELN;
WRITELN(' СРЕДНЕАРИФМЕТИЧЕСКОЕ ЗНАЧЕНИЕ ВЕКТОРА:',SRA:8:2);
WRITELN;
WRITELN(' ПРОИЗВЕДЕНИЕ СРЕДНЕАРИФМЕТИЧЕСКОГО ЗНАЧЕНИЯ ВЕКТОРА');
WRITELN(' НА МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ РАВНО:',P2:8:2);
WRITELN;
END;
MAX:=A[1];
MAXX:=1;
BEGIN
FOR I:=1 TO 10 DO
IF A>MAX
THEN
BEGIN
MAX:=A;
MAXX:=I;
WRITELN(' 4) МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ ИЗ ПЕРВЫХ 10-И РАВЕН:',MAX:4,', ЕГО НОМЕР:',MAXX:4);
END;
END;
END.
 
В четвертом задании что-то не так
Дык опять напортачено с расстановкой операторных скобок.
Для начала:
1. Каждый блок-задание Вы заключаете в операторные скобки BEGIN-END. В принципе это не ошибка, но просто абсолютно не нужно. Для читабельности лучше воспользоваться пустыми строками.
2. Тоже не ошибка - но КАКОГО БЕСА ЛЫСОГО ВЫ НАБИВАЕТЕ ПРОГРАММУ КАПСАМИ? Это совсем не в традициях ни Паскаля, ни его прародителя Алгола-60, ни вообще Виртовских языков. Это стиль полузабытого Фортрана.
3. Всем начинающим программистам настоятельно рекомендую не пренебрегать отступами, лесенками и т.п. форматированием листинга. Это делает код намного более читабельным и позволяет избежать ошибок, на которых, в частности, Вы подрываетесь.
Вот фрагмент программы, каким он должен, с моей точки зрения, выглядеть (задание 4).

Код:
Max:=A[1];
MaxX:=1;
For i:=2 to 10 do
 if A[i]>Max then
  begin
   Max:=A[i];
   MaxX:=i;
  end;
Writeln('  4) МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ ИЗ ПЕРВЫХ 10-И   РАВЕН: ',Max:4,',  ЕГО НОМЕР: ',MaxX:4);
Readln
End.
 
Назад
Сверху