profile
Опубликовано 6 лет назад по предмету Информатика от Tiger31

Помогите решить задачу по информатике точнее написать программу!

  1. Ответ
    Ответ дан XyJIuraH

    Program Olimp4(input);
    Uses CRT;
    Var x,y:array [1..100] of integer;
    a,n,m,i,j,k,max,sum,msum:integer;
    Begin
    ClrScr;
    Assign(input,'input.txt');Reset(input);
    randomize;
    {Вввод данных из файла}
    readln(n);
    for i:=1 to n do read(x[i]);
    readln;
    readln(m);
    for j:=1 to m do read(y[j]);
    for k:=1 to 10000 do begin
    sum:=0; i:=1; j:=1;
    {Пока сумма не отрицательна и кучки не закончились}
    while (sum>=0) and (i<=n) and (j<=m) do
    begin
    {Случайное число 0,1}
    a:=random(2);
    {Если 0, то выбор из первой кучки, если 1, - то из второй}
    if (a=0) then begin
    {Подсчет суммы}
    sum:=sum+x[i];
    i:=i+1;
    end
    else begin
    {Подсчет суммы}
    sum:=sum+y[j];
    j:=j+1;
    end;
    {Максимальная сумма}

    if sum>msum then msum:=sum;
    end;
    {Закончилась вторая кучка, продолжаем брать из первой}

    if i<=n then begin
    while i<=n do begin
    {Подсчет суммы}
    sum:=sum+x[i];

    {Если сумма отрицательна, то выход из цикла}
    if sum<0 then i:=n+2;

    {Максимальная сумма}

    if sum>msum then msum:=sum;
    inc(i);
    end;

  2. Ответ
    Ответ дан Диля545

    Program Olimp4(input); 
    Uses CRT; 
    Var x,y:array [1..100] of integer; 
    a,n,m,i,j,k,max,sum,msum:integer; 
    Begin 
    ClrScr; 
    Assign(input,'input.txt');Reset(input); 
    randomize; 
    {Вввод данных из файла} 
    readln(n); 
    for i:=1 to n do read(x[i]); 
    readln; 
    readln(m); 
    for j:=1 to m do read(y[j]); 
    for k:=1 to 10000 do begin 
    sum:=0; i:=1; j:=1; 
    {Пока сумма не отрицательна и кучки не закончились} 
    while (sum>=0) and (i<=n) and (j<=m) do 
    begin 
    {Случайное число 0,1} 
    a:=random(2); 
    {Если 0, то выбор из первой кучки, если 1, - то из второй} 
    if (a=0) then begin 
    {Подсчет суммы} 
    sum:=sum+x[i]; 
    i:=i+1; 
    end 
    else begin 
    {Подсчет суммы} 
    sum:=sum+y[j]; 
    j:=j+1; 
    end; 
    {Максимальная сумма} 

    if sum>msum then msum:=sum; 
    end; 
    {Закончилась вторая кучка, продолжаем брать из первой} 

    if i<=n then begin 
    while i<=n do begin 
    {Подсчет суммы} 
    sum:=sum+x[i]; 

    {Если сумма отрицательна, то выход из цикла} 
    if sum<0 then i:=n+2; 

    {Максимальная сумма} 

    if sum>msum then msum:=sum; 
    inc(i); 
    end;

Самые новые вопросы