Program kolichestvo;//числа вводим последовательно,через enter uses crt; var chisla:array[1..7] of integer; i,k:integer; begin for i:=1 to 7 do begin readln(chisla[i]); if chisla[i]<0 then k:=k+1; end; writeln('Количество отрицательных чисел последовательности:',k); end.
Ошибка, которую "заметил" компилятор, состоит в нарушении запрета на модификацию параметра цикла For в теле цикла. Для Ваших целей надо было использовать цикл с итерацией, например такой:
r := 460; while r >= 100 do begin circle(620, 480, r); r := r - 35 end;
В соответствии с алгоритмом, программа должна нарисовать концентрические окружности, центр которых имеет координаты 620;480, а радиус уменьшается от 460 до 100 с шагом 35. После окончания рисования производится заливка различными цветами областей, начальные точки которых указаны своими координатами, а границей области является какая-либо ранее нарисованная линия. Попробуйте выполнить эту программу...
Подобные задачи ("значение, которое получат переменные..."), когда для получения ответа надо выполнять цикл значительное количество раз в реальном программировании не имеют никакого смысла. Всегда можно сделать трассировку и посмотреть. Ниже - пример такой трассировки.
var s, d: real; i: integer;
begin writeln('Трассировка начата'); s := 0; for i := 1 to 49 do begin d := i * (i + 1); s := s + 1 / d; writeln('i=', i:2, ', d=', d:4, ', s=', s:8:6); end; writeln('Трассировка завершена'); writeln('S=', s); end.
В исходном тексте программы была синтаксическая ошибка: после оператора S:=0 отсутствовала точка с запятой, на что немедленно указал компилятор. Практически смысл имеет "трассировка на бумаге" для нескольких выполнений тела цикла с тем, чтобы убедиться в правильности работы алгоритма. И не более того. Анализ программы показывает, что она вычисляет сумму вида
В книге "Интегралы и ряды" М.Прудников и др.., М,: Наука, 1981 на стр. 601 приводится формула 4.1.4.2
Итак, сумма может быть легко вычислена для любого количества повторений цикла. Нужно ли вообще в таких случаях писать программу?
Это был урок для делающих первые шаги в увлекательном мире программирования.
uses crt;
var chisla:array[1..7] of integer;
i,k:integer;
begin
for i:=1 to 7 do
begin
readln(chisla[i]);
if chisla[i]<0 then
k:=k+1;
end;
writeln('Количество отрицательных чисел последовательности:',k);
end.