Другие языки программирования и технологии

помогите написать прогу в паскале срочно!!

Даны натуральное число N, целое число A и массив X(n). Если в массиве X(n) есть хотя бы один член, равный А, то получить сумму всех членов, следующих за первым таким членом, в противном случае ответом должно быть число -10.

Cам пытался но не вышло ((( Вот: for i:=1 to n do if a=A then for j:=i+1 to n do s:=s+a[j] else writeln('Otvet -10');
Vladimer Knaub
Vladimer Knaub
351
i:=1;s:=0;elementFound:=false;
while (i <= n) and not elementFound do begin
if X[ i]=A then begin
elementFound:=true;{нашли! }
j:=i+1 to n do s:=s+x[ j];
end;
i:=i+1;
end;
if elementFound then writeln(s)
else writeln(-10);

Вместо булевой переменной elementFound можно хранить признак находки в i (если в конце цикла i=n+1, то не нашли, а если n+2, то нашли) ; но это идеологически неправильно.

И не совсем понятно, как быть, если последний элемент равен A.
СН
Сергей Неизвестный
73 135
Лучший ответ
Во первых, забыл Брейк, во-вторых, результат кто выводить будет, Пушкин?

Вместо
тхен фор ж: =и+1 то н до с: =с+х [ж]

Надо

тхен бегин фор ж: =и+1 то н до с: =с+х [ж] ; вывод (с) ; брейк; енд;

Сорри за транслит, англ. буквы писать не могу
AA
Aidos Abu
5 517
Если не получается, выбери способ проще но длиннее:

Var n,a,sum:integer; i,s,k:byte; {n-длина массива a-заданное число i-индексы массива s- исп. для запоминания номера элемента который равен а k-флаг }
x:array[1..32000]of integer;
begin
{ввод}
writeln('A,N = ');
readln(a,n);
writeln('Введите массив ');
for i:=1 to n do readln(x);
{проверка: есть ли элемент равный а}
for i:=1 to n do
if x[ i ]=a then begin k:=1; s:=i; end;
{Если да считаем сумму и выводим, нет - вывод -10}
if k=1 then begin
for i:=s+1 to n do
sum:=sum+x[ i ];
writeln('Cумма = ',sum) end
else writeln('-10');
end.