Для лёгкости передачи и воспринимания информации
var массив = [], есть = false; for (let сч = 0; сч < массив.length; сч++) if (массив[сч] > 0) { есть = true; break; }
Не такое оно и сложное.
Главная проблема - то, что между словами может быть несколько пробелов.
Устраним её, написав функцию, которая оставляла бы между словами по 1 пробелу:
function RemoveSpaces(str : string) : string;
begin
//Тут цикл for, переписанный через while
var iter := 1;
//Проходим по строке
while (iter < str.Length) do
begin
//Если видим 2 пробела подряд, удаляем 1 и откатывает итератор.
if (str[iter] = ' ') and (str[iter + 1] = ' ') then
begin
str := str.Remove(iter, 1);
iter -= 1;
end;
iter += 1;
end;
RemoveSpaces := str;
end;
Теперь мы можем получить кол-во слов очень просто:
function CalcWords(str : string) : integer;
begin
CalcWords := RemoveSpaces(str).Split(' ').Count();
end;
Т.е. мы делим строку на массив через пробелы, и считаем кол-во элементов массива.
полный код: https://pastebin.com/A63ggdWm
Const
n = 5;
var
arr: array [1..n] of integer;
i, N1, sum: integer;
begin
write('N = ');
readln(N1);
for i := 1 to n do
begin
write('A[', i, '] = ');
readln(arr[i]);
end;
i := 1;
sum := 0;
while (sum <= N1) and (i <= n) do
begin
sum := sum + arr[i];
i := i + 1;
end;
if sum > N1 then
writeln(sum)
else
writeln('Summa not grether then N');
end.