Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Удаление всех строк и столбцов, содержащих хоть 1 ноль





Также положительные, отрицательные и т.д.

uses crt; var a: array [1..10,1..9] of integer; b: array [1..9] of byte; m,n,i,j,f,p,k: byte; begin clrscr;randomize;n:=10;m:=9;writeln('Исходная матрица:'); for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(10); write(a[i,j]:3); end; writeln; end;writeln; {номера столбцов с нолями} f:=0; for j:=1 to m do begin k:=0; for i:=1 to n do if a[i,j]=0 then begin k:=1; f:=1; end; b[j]:=k; end; if f=0 then write('В матрице нет нолей!') else begin {удаление строк с нолем} i:=n; {начнем с конца} while (i>=1)and(n>0) do begin k:=0; j:=1; while (j<=m)and(k=0) do if a[i,j]=0 then k:=1 else j:=j+1; if k=1 then {если есть ноль} begin f:=f-1; {вычитаем строку} if i=n then {если строка на этот момент последняя} begin n:=n-1; {обрезаем} i:=i-1; {верх} end else {если не последняя} begin for k:=i to n-1 do {от этой строки до предпоследней} for p:=1 to m do {всем элементам строк} a[k,p]:=a[k+1,p]; {присваиваем значения нижней} n:=n-1; {уменьшаем количество} end; end else i:=i-1; {если нет нолей, вверх} end; if n=0 then writeln('Все строки и столбцы удалены!') else {если остались строки, удаляем столбцы} begin f:=m; {начнем с конца} for i:=m downto 1 do {в обратном порядке читаем массив номеров} if b[i]=1 then {если есть ноль} begin if i=f then {и последний на данный момент, также как строки} begin m:=m-1; f:=f-1; end else {если не последний, тоже как строки} begin for k:=i to m-1 do for p:=1 to n do a[p,k]:=a[p,k+1]; m:=m-1; end; end; writeln('Матрица после сжатия:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:3); writeln; end; end; end;readln end.

 

Цифровая сортировка (DigidalSort)

Пусть нужно отсортировать массив по возрастанию, а на вход поступают числа в диапазоне [-100;100]. При этом их количество настолько большое, что не поможет даже быстрая сортировка. Выходом служит так называемая цифровая сортировка. Возьмем

 
  a:array[-100..100] of integer
 

Предварительно обнулим его.

 
  for i:=-100 to 100 do a[i]:=0;
 
var a: array [-100..100] of integer; i,n,c,j: integer; begin readln(n); for i:=1 to n do begin read(c); inc(a[c]); end; for i:=-100 to 100 do for j:=1 to a[i] do write(i,' '); readln end.






Date: 2016-05-15; view: 480; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию