|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
28.05.2011, 19:44 | #1 (permalink) |
Новичок
Регистрация: 26.05.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задача на массивы, Pascal. Помогите найти ошибку
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. |
28.05.2011, 19:44 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Подскажу вам, что решение проблемы может крыться в аналогичных обсуждениях Помогите найти ошибку в программе Помогите найти ошибку, Pascal abc |
28.05.2011, 20:32 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Дык опять напортачено с расстановкой операторных скобок.
Для начала: 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. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|