cloudy Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 uses crt;const n=10;var a:array [1..n] of integer; kr,summa,summa1,s1,max,min,minim,i,s,x,t,j,i_max,i_min,i_i:integer; sr,sred:real; flag:byte;procedure vvod;begin writeln ('vvedite cifri'); for i:=1 to n do readln (a);end;procedure srednii;begin vvod; s:=0; for i:=1 to n do s:=s+a; sr:=s/n; for i:=1 to n do a:=a-sr; тута for i:=1 to n do write (a);end;procedure ravno;begin vvod; s:=0; for i:=1 to n do s:=s+a; sr:=s/n; for i:=1 to n do a:=a-sr; еще тута t:=abs(a[1]); i_i:=1; for i:=2 to n do if abs(a) begin t:=abs(a); i_i:=i; end;write ('indeks elementa raven: ',i,'-e');end;procedure minimalnii;begin vvod; for i:=1 to n do if a[j]>a[j+1] then begin x:=a[j]; a[j]:=a[j+1]; a[j+1]:=x; end; for i:=1 to n do if a>0 then min:=a; break;write ('minimalnii polozhitelnii element raven', min);end;procedure summaa;begin vvod; s1:=0; if a<0 then s1:=0 else for i:=1 to n do repeat s1:=s1+a; until a<0;writeln ('summa ravna: ', s1);end;procedure swap;begin vvod; max:=a[1]; i_max:=1; for i:=2 to n do if max begin max:=a; i_max:=i; end;; for i:=1 to n do if a<0 then begin minim:=a; i_min:=i; break; end; a[i_max]:=minim; a[i_min]:=max; for i:=1 to n do write (a);end;procedure last;begin vvod; summa1:=0; for i:=1 to n-1 do for j:=1 to n-i do if a[j]>a[j+1] then begin x:=a[j]; a[j]:=a[j+1]; a[j+1]:=x; end; for i:=2 to n-1 do summa:=summa+a; sred:=summa/(n-2); write ('summa ravna: ', sred);end;begin clrscr; flag:=0; repeat writeln('1.vichet srednego'); writeln('2.znachenie blizkoe k srednemu'); writeln('3.minimum sredi polozhitelnih'); writeln('4.summa do pervogo otricatelnogo'); writeln('5.swap max and first otricatelnii'); writeln('6.srednee bez max and min'); writeln('0.exit'); write ('vvedite nomer: '); readln (kr); case kr of { 1:srednii; 2:ravno; 3:minimalnii;} 4:summaa; 5:swap; 6:last; 0:exit end; flag:=1 until flag=0;end.Добавлено спустя 1 минуту 2 секунды:Блин помогите плииз, еси это не сдам зачета нее видать=(задано целое n>0 и массив элементов х1,х2,х3, ... ,хnа) преоброзавать исходный массив, вычитая из каждого элемента среднее значениеб)определить индекс элемента, значение которого наиболее близко к среднему значению элементов массивав)найти минимальный элемент среди положительных элементов заданного массиваг)вычислить сумму элементов массива, расположенных до первого отрицательного элемента массивад)поменять местами максимальныи и первый отрицательный элементы массивае)вычислить среднее значение элементов массива, отбросив минимальный и максимальный элементывот задание Ссылка на комментарий
coder Опубликовано 8 декабря, 2009 Жалоба Поделиться Опубликовано 8 декабря, 2009 a:=a-sr; тутаа чудес не бывает, смотримa:array [1..n] of integer;sr,sred:real;вот и определитесь вам шашечки или ехать ?кто помешал в этих процедурах ввести temp : array [1..n] of real и с ним работать.и в procedure ravno; добавить t : real , а то опять спросите =)удачи. Ссылка на комментарий
cloudy Опубликовано 9 декабря, 2009 Автор Жалоба Поделиться Опубликовано 9 декабря, 2009 аа я получается реал приравнял к интеджер.спасибо coderuses crt;const n=10;var a:array [1..n] of integer;kr,summa,summa1,s1,max,min,minim,i,s,x,t,j,i_max,i_min,i_i:integer;sr,sred:real;flag:byte;procedure vvod;beginwriteln ('vvedite cifri');for i:=1 to n doreadln (a);end;procedure srednii;beginvvod;s:=0;for i:=1 to n dos:=s+a;sr:=s/n;for i:=1 to n dob:=a-sr;for i:=1 to n dowrite (a);end;procedure ravno;beginvvod;s:=0;for i:=1 to n dos:=s+a;sr:=s/n;for i:=1 to n dob:=a-sr;t:=abs(a[1]);i_i:=1;for i:=2 to n doif abs(a)begint:=abs(a);i_i:=i;end;write ('indeks elementa raven: ',i,'-e');end;procedure minimalnii;beginvvod;for i:=1 to n doif a[j]>a[j+1] thenbeginx:=a[j];a[j]:=a[j+1];a[j+1]:=x;end;for i:=1 to n doif a>0 thenmin:=a;break;write ('minimalnii polozhitelnii element raven', min);end;procedure summaa;beginvvod;s1:=0;if a<0 then s1:=0else for i:=1 to n dorepeats1:=s1+a;until a<0;writeln ('summa ravna: ', s1);end;procedure swap;beginvvod;max:=a[1];i_max:=1;for i:=2 to n doif maxbeginmax:=a;i_max:=i;end;;for i:=1 to n doif a<0 thenbegin как сделать чтобы он брал токо первый отрицательный членminim:=a;i_min:=i;break; это лишнее пхдуend;a[i_max]:=minim;a[i_min]:=max;for i:=1 to n dowrite (a);end;procedure last;beginvvod;summa1:=0;for i:=1 to n-1 dofor j:=1 to n-i doif a[j]>a[j+1] thenbeginx:=a[j];a[j]:=a[j+1];a[j+1]:=x;end;for i:=2 to n-1 dosumma:=summa+a;sred:=summa/(n-2);write ('summa ravna: ', sred);end;beginclrscr;flag:=0;repeatwriteln('1.vichet srednego');writeln('2.znachenie blizkoe k srednemu');writeln('3.minimum sredi polozhitelnih');writeln('4.summa do pervogo otricatelnogo');writeln('5.swap max and first otricatelnii');writeln('6.srednee bez max and min');writeln('0.exit');write ('vvedite nomer: ');readln (kr);case kr of{ 1:srednii;2:ravno;3:minimalnii;}4:summaa;5:swap;6:last;0:exitend;flag:=1until flag=0;end.посморите еще вот ето Ссылка на комментарий
TolkienDRR Опубликовано 9 декабря, 2009 Жалоба Поделиться Опубликовано 9 декабря, 2009 break; это лишнее пхду exit используется для выхода из цикла. бряк для завершения проги (если не ошибаюсь). давно им не пользовался. а вообще есть хелп, гугл и книги =) Ссылка на комментарий
Lakers Опубликовано 9 декабря, 2009 Жалоба Поделиться Опубликовано 9 декабря, 2009 наоборот, break- выход из цикла а exit из программы. uses crt;const n=10;var a:array [1..n] of integer; b:array [1..n] of real;kr,summa,summa1,s1,max,min,minim,i,s,x,t,j,i_max,i_min,i_i:integer;sr,sred:real;flag:byte;procedure vvod;beginwriteln ('vvedite cifri');for i:=1 to n doreadln (a);end;procedure srednii;beginvvod;s:=0;for i:=1 to n dos:=s+a;sr:=s/n;for i:=1 to n dobeginb:=a-sr;write (b:0:3);end;end;procedure ravno;var ind:integer;beginvvod;s:=0;for i:=1 to n dos:=s+a;sr:=s/n;ind=1;for i:=2 to n doif abs(a[ind]-sr)write ('indeks elementa raven: ',i,'-e');end;procedure minimalnii;var min:integer;beginvvod;min=32767;for i:=1 to n doif (a>0)and(awrite ('minimalnii polozhitelnii element raven', min);end;procedure summaa;beginvvod;s1:=0;i=1;while (a>0)and(i<=n) do begin s1:=s1+a; inc(i); end;writeln ('summa ravna: ', s1);end;procedure swap;var w:integer;beginvvod;max:=1;for i:=1 to n do if a>a[max] then max:=i;i=1;while (a>0)and(i<=n) do inc(i);if i<=n thenbegin w:=a[max]; a[max]:=a;a:=w;end;for i:=1 to n dowrite (a);end;procedure last;beginvvod;summa1:=0;for i:=1 to n-1 dofor j:=1 to n-i doif a[j]>a[j+1] thenbeginx:=a[j];a[j]:=a[j+1];a[j+1]:=x;end;for i:=2 to n-1 dosumma:=summa+a;sred:=summa/(n-2);write ('summa ravna: ', sred);end;beginclrscr;flag:=0;repeatwriteln('1.vichet srednego');writeln('2.znachenie blizkoe k srednemu');writeln('3.minimum sredi polozhitelnih');writeln('4.summa do pervogo otricatelnogo');writeln('5.swap max and first otricatelnii');writeln('6.srednee bez max and min');writeln('0.exit');write ('vvedite nomer: ');readln (kr);case kr of{ 1:srednii;2:ravno;3:minimalnii;}4:summaa;5:swap;6:last;0:exit;end;flag:=1until flag=0;end. Ссылка на комментарий
cloudy Опубликовано 9 декабря, 2009 Автор Жалоба Поделиться Опубликовано 9 декабря, 2009 спасибо большое!!!Добавлено спустя 45 секунд:TolkienDRR то есть моно исполозовать exit для выхода? Ссылка на комментарий
TolkienDRR Опубликовано 9 декабря, 2009 Жалоба Поделиться Опубликовано 9 декабря, 2009 да, чтот ошибся )) после выполнения break в цикле, программа переходит к следующему после цикла оператору, exit - завершает текущую процедуру/функцию, если вызывается в подпрограммах, или программу, если вызывается в основной части программы.i=1;while (a>0)and(i<=n) do inc(i);if i<=n thenbeginw:=a[max];a[max]:=a;a:=w;end;процедура первое не положительное найдет. чтобы находило отрицательное заменить цикл наwhile (a[i]>=0)and(i<=n) do inc(i);а вообще что надо чтобы функция выполняла?Добавлено спустя 33 секунды:а вообще что должна у тебя делать процедура swap? Ссылка на комментарий
cloudy Опубликовано 10 декабря, 2009 Автор Жалоба Поделиться Опубликовано 10 декабря, 2009 поменять местами максимальный и первый отрицательный элементы Ссылка на комментарий
TolkienDRR Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 for i:=1 to n do if a[i]>a[max] then max:=i; странная запись, делается так:var b:boolean;i_max, i_zero, i, max:integer;beginb:=true;max:=-100;i_max:=0;for i:=1 to n do begin if b and (a[i]<0) then begin b:=false; i_zero:=i; end if a[i]>max then begin i_max:=i; max:=a[i]; end;end;k:=a[i_max];a[i_max]:=a[i_zero];a[i_zero]:=k; Ссылка на комментарий
coder Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 0:exit;end;flag:=1until flag=0;end.выглядит как у "индуса"а что бы не написать такflag:=0;repeat ....case kr of...0: flag:=1;end;until flag=1; Ссылка на комментарий
Lakers Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 coderя основную программу не смотрел тока процедуря подправил.var b:boolean;i_max, i_zero, i, max:integer;beginb:=true;max:=-100;i_max:=0;for i:=1 to n do begin if b and (a<0) then begin b:=false; i_zero:=i; end if a>max then begin i_max:=i; max:=a; end;end;k:=a[i_max];a[i_max]:=a[i_zero];a[i_zero]:=k;TolkienDRR зачем столько переменных то ради смены элементов местами? Ссылка на комментарий
Maru Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 странная запись, делается так:var b:boolean;i_max, i_zero, i, max:integer;beginb:=true;max:=-100;i_max:=0;for i:=1 to n do begin if b and (a[i]<0) then begin b:=false; i_zero:=i; end if a[i]>max then begin i_max:=i; max:=a[i]; end;end;k:=a[i_max];a[i_max]:=a[i_zero];a[i_zero]:=k;Что за max := -100?max := a[1]; Ссылка на комментарий
coder Опубликовано 10 декабря, 2009 Жалоба Поделиться Опубликовано 10 декабря, 2009 Что за max := -100?типо "плинтус", ниже не бывает =)) Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти