• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите пожалуйста найти ошибку

Татьяна19

Новые
Регистрация
15 Мар 2011
Сообщения
15
Реакции
0
Баллы
0
Помогите пожалуйста найти ошибку

1.Составьте программу вычисления суммы элементов от второго положительного и до конца.
uses crt;
const n=8;
var
f:text;
k,s,i:integer;
mas:array[1..50] of integer;

Procedure input;
begin
assign(f,'c:\file.txt');
rewrite(f);
writeln('Vvedite elementi massiva');
for i:=1 to n do
begin
mas:=random(50)-30;
write(f,mas:4);
end;
close(f);
end;

procedure obrabotka;
begin
k:=0;
s:=0;
reset(f);
for i:=1 to n do
begin
if mas>0
then begin k:=i;
if mas[i+1]>0
then begin
for i:=k to n do
s:=s+mas; end; end;
end;
writeln('Nachinaia s ',k,' elementa');
close(f);
end;


Procedure output;
begin
reset(f);
for i:=1 to n do
begin
read(f,mas);
write(mas:4);
end;
close(f);
end;
Begin
randomize;
assign(f,'c:\file.txt');
clrscr;
Input;
obrabotka;
Output;
writeln;
write('Summa ot vtorogo polozhitelnogo elementa ravna ',
s);
readln;
end.
2. Составьте программу обмена в массиве B(N) первого отрицательного и максимального элементов.
uses crt;
var
f:text;
max,c,p,k,i,n:integer;
mas:array[1..50] of integer;

Procedure input;
begin
writeln('Vvedite kol-vo elementov');
readln(n);
assign(f,'c:\file.txt');
rewrite(f);
for i:=1 to n do
begin
mas:=random(30)-15;
write(f,mas:4);
end;
close(f);
end;

procedure obrabotka;
begin
max:=0;
reset(f);
for i:=1 to n do
begin
if mas>max
then
begin max:=mas;
k:=i; end;
end;
if mas<0 then
c:=i;
p:=mas[k];
begin
mas[k]:=mas[c];
mas[c]:=p;
writeln('Perestanovka maximal elementa i pervogo otricatelnogo');
for i:=1 to n do
write(mas:4);
writeln;
end;
writeln('Maximalni sredi otricatelnih elementov =',max,' nomer elementa raven ',k);
close(f);
end;


Procedure output;
begin
reset(f);
for i:=1 to n do
begin
read(f,mas);
write(mas:4);
end;
close(f);
end;
Begin
randomize;
assign(f,'c:\file.txt');
clrscr;
Input;
writeln('Ishodnii massiv');
Output;
writeln;
obrabotka;
writeln;
readln;
end.
 
1.Составьте программу вычисления суммы элементов от второго положительного и до конца.
2. Составьте программу обмена в массиве B(N) первого отрицательного и максимального элементов.
Прежде всего, в обеих программах файлы - это, извините, "не пришей кобыле хвост". Никакого смысла они тут не имеют, а потому выброшены за полной ненадобностью. Ну и кроме того исправлены некоторые ошибки, в частности, там было много лишнего. Вот:
Код:
uses crt;
const n=8;
var
 k,s,i:integer;
 mas:array[1..50] of integer;

Procedure input;
begin
 for i:=1 to n do
  begin
   mas[i]:=random(50)-30;
   write(mas[i]:4);
  end;
 writeln;
end;

procedure obrabotka;
var b:boolean;
begin
 k:=0;
 s:=0;
 i:=0;
 b:=false;
 repeat
  inc(i);
  if (mas[i]>0) and (b=false) then b:=true
  else
  if (mas[i]>0) and b then k:=i;
 until (k>0) or (i=n);
 if k>0 then
  for i:=k to n do
   s:=s+mas[i];
 if k=0 then
  writeln('V massive menshe dvuh polojitelnyh elementov!')
 else
  writeln('Nachinaia s ',k,' elementa summa ravna ',s);
end;


BEGIN
 randomize;
 clrscr;
 Input;
 Obrabotka;
 readln;
END.

Код:
uses crt;
var
 max,c,p,k,i,n:integer;
 mas:array[1..50] of integer;

Procedure input;
begin
 write('Vvedite kol-vo elementov ');
 readln(n);
 writeln('Ishodnii massiv:');
 for i:=1 to n do
  begin
   mas[i]:=random(30)-15;
   write(mas[i]:4);
  end;
 writeln;
end;

procedure obrabotka;
var b:boolean;
begin
 max:=-16;
 b:=true;
 for i:=1 to n do
  begin
   if mas[i]>max then
    begin
     max:=mas[i];
     k:=i;
    end;
   if (mas[i]<0) and b then
    begin
     c:=i;
     b:=false;
    end;
  end;
 p:=mas[k];
 mas[k]:=mas[c];
 mas[c]:=p;
 writeln('Perestanovka maximalnogo (',k,') elementa i pervogo otricatelnogo (',c,')');
 for i:=1 to n do
  write(mas[i]:4);
 writeln;
end;

BEGIN
 randomize;
 clrscr;
 Input;
 Obrabotka;
 readln;
END.
 
Назад
Сверху