Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 28.05.2011, 19:44   #1 (permalink)
~nezabudka~
Новичок
 
Регистрация: 26.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Post Задача на массивы, Pascal. Помогите найти ошибку

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

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

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

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

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

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


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[I]:=RANDOM(30)-10;
BEGIN
FOR I:=1 TO N DO
WRITE(A[I]:4);
WRITELN;
WRITELN;
END;
MIN:=A[1];
BEGIN
FOR I:=2 TO N DO
IF A[I]<MIN
THEN MIN:=A[I];
WRITELN(' 1) МИНИМАЛЬНЫЙ ЭЛЕМЕНТ ВЕКТОРА РАВЕН:',MIN:4);
WRITELN;
END;
S1:=0;
P1:=1;
BEGIN
FOR I:=1 TO N DO
IF A[I]>B
THEN
S1:=S1+A[I];
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[I]>MAX
THEN MAX:=A[I];
END;
FOR I:=1 TO N DO
S2:=S2+A[I];
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[I]>MAX
THEN
BEGIN
MAX:=A[I];
MAXX:=I;
WRITELN(' 4) МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ ИЗ ПЕРВЫХ 10-И РАВЕН:',MAX:4,', ЕГО НОМЕР:',MAXX:4);
END;
END;
END.
~nezabudka~ вне форума   Ответить с цитированием

Старый 28.05.2011, 19:44
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Подскажу вам, что решение проблемы может крыться в аналогичных обсуждениях

Помогите найти ошибку в программе
Помогите найти ошибку, Pascal abc

Старый 28.05.2011, 20:32   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от ~nezabudka~ Посмотреть сообщение
В четвертом задании что-то не так
Дык опять напортачено с расстановкой операторных скобок.
Для начала:
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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:20.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.