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

01.01.2001

помогите написать прогу в паскале срочно!!
Даны натуральное число 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');

  • 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.

  • Во первых, забыл Брейк, во-вторых, результат кто выводить будет, Пушкин?

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

    Надо

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

    Сорри за транслит, англ. буквы писать не могу

  • Если не получается, выбери способ проще но длиннее:

    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.

Вас заинтересует