Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Ещё одна задача... но на двухмерный массив (матрицу)

Автор: Димас 27.12.2006 22:09

Здача 1077 б


Дан двухмерный массив. Превратить:
б.) первый столбец на место последнего, при этом вторую,тертью... последний столбцы сместить влево.


Лично я ничего не понял из написаного выше... обясните пожалуйста логику задачи:-)

эх..... как всё у меня запущено и трудно blink.gif

Автор: klem4 27.12.2006 22:13

1 2 3
4 5 6
7 8 9

-->

2 3 1
5 6 4
8 9 7

Автор: Димас 27.12.2006 22:17

ага во , как получается smile.gif

а как это делается(решается) в матиматике? blink.gif

Автор: klem4 27.12.2006 22:29

  for i := 1 to n do
for j := 1 to m - 1 do begin
T := x[i, j];
x[i, j] := x[i, j + 1];
x[i, j + 1] := T;
end;


Автор: Димас 27.12.2006 22:52

А можно чуть поподробней обяснить это:


for i := 1 to n do
for j := 1 to m - 1 do begin
T := x[i, j];
x[i, j] := x[i, j + 1];
x[i, j + 1] := T;
end;


Пожалуйстаsmile.gif

?

Автор: Димас 28.12.2006 0:59

ну ладно....
есть ещё одна задачка на двухмерный массив

Задача1066б


Дано двухмерный массив. Удалить из него: б.) S-й столбец

Всё в задаче больше ничего не сказаноsad.gif

что это за S-й столбец ?

например?

blink.gif

Автор: Айра 28.12.2006 1:48

Цитата
что это за S-й столбец ?

По-моему, пользователь должен ввести номер столбца (S), который нужно удалить.
1 2
4 5
7 8
s=1 =>
2
5
8

Автор: Димас 28.12.2006 5:00

Посидел я до 00:00 ночи, и вот что решил всё таки blink.gif задачу1077б
воть:


Program bla_bla;

uses crt;

const
mass: Array [1..3,1..3] of integer = ((11, 12, 13),(21, 22, 23),(31, 32, 33));

var
klon_p,i:integer;
begin
ClrScr;
textcolor(2);
writeln('исходный масив');
{------------------------------}
for i:=1 to 3 do
begin
writeln(mass[i,1],' ', mass[i,2],' ', mass[i,3]);

end;
{------------------------------}
for i:=1 to 3 do
begin
klon_p:=mass[i,1];
mass[i,1]:=mass[i,2];
mass[i,2]:=mass[i,3];
mass[i,3]:=klon_p;
end;
{------------------------------}
textcolor(4);
writeln;
writeln('результат обработки');
{------------------------------}
for i:=1 to 3 do
begin
writeln(mass[i,1],' ', mass[i,2],' ', mass[i,3]);

end;
{------------------------------}
readln;
end.



а терь мона и спатки cool.gif

smile.gif

Автор: Димас 28.12.2006 17:14

Цитата(Димас @ 27.12.2006 21:59) *

ну ладно....
есть ещё одна задачка на двухмерный массив

Задача1066б


Дано двухмерный массив. Удалить из него: б.) S-й столбец

Всё в задаче больше ничего не сказаноsad.gif

blink.gif


как бы это всё на паскалике накатать.... wacko.gif
Цитата(Айра @ 27.12.2006 22:48) *

По-моему, пользователь должен ввести номер столбца (S), который нужно удалить.
1 2
4 5
7 8
s=1 =>
2
5
8

А как такое можно сделать(удалить один столбец) с масивом???? blink.gif

мож есть функция?

(я могу тока нулями заменить, а вот удалить проблема nea.gif )

ПоЖуЛуйСтА помогитессс smile.gif


Автор: hiv 28.12.2006 17:55

Цитата(Димас @ 28.12.2006 13:14) *
А как такое можно сделать(удалить один столбец) с масивом???? blink.gif
Никак. Есть два варианта:
1) Статически определяешь такую запись:

const Max_Razm:=20;
type
record
N :integer; {кол-во строк}
M :integer; {кол-во столбцов}
Matr :array[1..Max_Razm,1..Max_Razm] of Integer; {значения матрицы}
end;


2) Создаешь динамический массив (динамическую матрицу), размер которой можно менять в ходе выполнения программы. См. http://forum.pascal.net.ru/index.php?showtopic=6730&hl=%E4%E8%ED%E0%EC%E8%F7%E5%F1%EA%E8%E9+%EC%E0%F1%F1%E2

Автор: Димас 28.12.2006 18:20

мда , динамические матрицы ......


хотелось бы с записям поработать....

но я с ними никада не работал.... и не знаком.... как бы с ними познакомиться?

Общем что "такое записи и с чем их едят"? blink.gif

smile.gif

Автор: klem4 28.12.2006 18:22

Правила форму читать не пробовал ?

FAQ для кого создается ? А поиск ? Тоже для красоты ?

F_A_Q: http://forum.pascal.net.ru/index.php?showtopic=9198

Автор: Димас 28.12.2006 18:48

Цитата(klem4 @ 28.12.2006 15:22) *

Правила форму читать не пробовал ?

FAQ для кого создается ? А поиск ? Тоже для красоты ?

F_A_Q: http://forum.pascal.net.ru/index.php?showtopic=9198


Пардон rolleyes.gif

просто с такой скоростю как у меня через GPRS тока и бегать по факам и тратить дорогой и глючный трафик плохого опсоса....

 ! 
А дороговизна и глючность - это НАШИ проблемы? А может, все-таки, ТВОИ? Ты пришел на форум, будь добр следовать его Правилам ... Не можешь - google.com и ищи форум, где правила НЕ выполняются...
volvo


Автор: Димас 28.12.2006 19:25

Цитата(hiv @ 28.12.2006 14:55) *

Никак. Есть два варианта:
1) Статически определяешь такую запись:

const Max_Razm:=20;
type
record
N :integer; {кол-во строк}
M :integer; {кол-во столбцов}
Matr :array[1..Max_Razm,1..Max_Razm] of Integer; {значения матрицы}
end;




такс....

ну написал эту запись, а толку?

что дальше?

blink.gif

Автор: hiv 28.12.2006 21:19

Цитата(Димас @ 28.12.2006 15:25) *
что дальше? blink.gif

Твоя матрица будет статическая, т.е. ее размеры в ходе выполнения изменить будет нельзя, НО!
Определяя запись record, ты как бы к ней привязываешь переменные говорящие о ее заполненности по строкам и столбцам.
ЗЫ: А вообще-то это лучше делать объектом и привязывать методы (процедуры и функции) работающие с этой матрицей. Ну например сортировки, добавления и удаления столбцов и строк, и т.д. т.п.

Автор: Димас 29.12.2006 5:06

тренировался на рекорд(записи)
на такой задачке:

Задача 1194

Известы данный о 20 сотруниках фирмы(фамилия, зарплата и пол).
определить:
а)фамилию мужчины,имебщего самую большую зарплату(считать что такой есть и он едниственый)
б)фамилию мужчины и женщины, имеющих самую маленькую зарплату(счиать что такие есть и они единственые в свой групе сотрудников)


Исходный код: blink.gif

program z1194;
uses crt;
{-----------------------------------------------------}
const kol_sotrudnik = 4; { количество сотрудников}
{-----------------------------------------------------}
type
danin_sotrudnik = record
fam : string;
zarpl : integer;
pol : string;
end;
{----------------------------------------------------------------}
var
mass_sotrudnik: Array[1..kol_sotrudnik] of danin_sotrudnik;
i,max_zarpl,min_zarpl,max_i,min_i,max_vse,max_ivse,max_zarplvse:integer;
{----------------------------------------------------------------}
begin
ClrScr;
{---ввод и вывод максимального значения у мужиков---}
max_zarpl:=0;

for i:=1 to kol_sotrudnik do
begin
write('Фамилия N ',i,' ');
readln(mass_sotrudnik[i].fam);

write('Зарплата N ',i,' ');
readln(mass_sotrudnik[i].zarpl);

write('Пол m/j N ',i,' ');
readln(mass_sotrudnik[i].pol);

writeln('--------------------');

if (max_zarpl<mass_sotrudnik[i].zarpl) and (mass_sotrudnik[i].pol='m') then
begin
max_zarpl:=mass_sotrudnik[i].zarpl ;
max_i:=i;
end;

end;
writeln('самая большая зарплата мужцины в ',mass_sotrudnik[max_i].fam);
{---***********-}

max_zarpl:=0;

for i:=1 to kol_sotrudnik do
begin
if (max_zarplvse<mass_sotrudnik[i].zarpl) and (mass_sotrudnik[i].pol='m')
and (mass_sotrudnik[i].pol='j')
then
begin
max_zarplvse:=mass_sotrudnik[i].zarpl ;
max_ivse:=i;
end;

end;

{--*************---}

min_zarpl:=mass_sotrudnik[max_ivse].zarpl;
for i:=1 to kol_sotrudnik do
begin

if (min_zarpl>mass_sotrudnik[i].zarpl) and (mass_sotrudnik[i].pol='m') then
begin
min_zarpl:=mass_sotrudnik[i].zarpl ;
min_i:=i;
end;

end;
writeln('самая минимальная зарплата у мужчин в ',mass_sotrudnik[min_i].fam);

{---------------------------------------}
min_zarpl:=mass_sotrudnik[max_ivse].zarpl;
for i:=1 to kol_sotrudnik do
begin

if (min_zarpl>mass_sotrudnik[i].zarpl) and (mass_sotrudnik[i].pol='j') then
begin
min_zarpl:=mass_sotrudnik[i].zarpl ;
min_i:=i;
end;

end;
writeln('самая минимальная зарплата у женщин в ',mass_sotrudnik[min_i].fam);


writeln;
write('End');
readln;
end.


Проверте пожалуйста всё ли правильно я написал?????? blink.gif blum.gif blink.gif

// const kol_sotrudnik = 4 - узял не 20 как сказано в задаче а 4 шоб меньше вводить wink.gif

офф... спкокойной ночи wub.gif

Автор: Димас 29.12.2006 15:17

Цитата(Димас @ 27.12.2006 21:59) *

ну ладно....
есть ещё одна задачка на двухмерный массив

Задача1066б


Дано двухмерный массив. Удалить из него: б.) S-й столбец

Всё в задаче больше ничего не сказаноsad.gif

Блин ну помогите мне в этой задачке ?

не могу справится blink.gif


Автор: Димас 29.12.2006 21:55

Такс, ещё одна тренировка на записи(рекорд)....

Задача 1248


В таблице хранятся следуйщие данные об учениказ: фамилия,имя,отчество,рост,маса.
Вычеслить средний рост учеников, рост самого высокого и самого низкого ученика. Сколько учеников могут заниматся в баскетбольной секции, если рост баскетболиста должен быть больше 170 см


Я реши тякс:

Program z1248;

uses crt;

const kol_uchniv = 10; {количество учеников}
{------------тип------------}
type
dani_uchniv = record
fam : string;
imya : string;
otchestvo : string;
rost : integer;
masa : integer;
end;
{---------------------------}

var
{------------------массив-----------------------}
mass_u:Array[1..kol_uchniv] of dani_uchniv;
{-----------------------------------------------}
i:integer;
s_rost:real;
ser_rost:real;
max_rost,max_i:integer;
min_rost:integer;
kol_uchniv2:integer;
Begin
ClrScr;
{------------------Таблица учеников--------------}
{1}
mass_u[1].fam:='Белый ';mass_u[1].imya:=' Дима'; mass_u[1].otchestvo:=' Юрьевич '; mass_u[1].rost:=170;
mass_u[1].masa:=60;
{end}

{2}
mass_u[2].fam:='Пупкин ';mass_u[2].imya:=' Андрей'; mass_u[2].otchestvo:='Николаевич'; mass_u[2].rost:=175;
mass_u[2].masa:=70;
{end}

{3}
mass_u[3].fam:='Барбакарь';mass_u[3].imya:='Вика'; mass_u[3].otchestvo:=' Батьковна '; mass_u[3].rost:=155;
mass_u[3].masa:=45;
{end}

{4}
mass_u[4].fam:='Кулик ';mass_u[4].imya:=' Вован'; mass_u[4].otchestvo:=' Батькович '; mass_u[4].rost:=185;
mass_u[4].masa:=80;
{end}
{5}
mass_u[5].fam:='Литвин';mass_u[5].imya:=' Тарас'; mass_u[5].otchestvo:=' Пукинович '; mass_u[5].rost:=170;
mass_u[5].masa:=55;
{end}
{6}
mass_u[6].fam:='Тарасюк';mass_u[6].imya:=' Саня'; mass_u[6].otchestvo:=' Батькович '; mass_u[6].rost:=170;
mass_u[6].masa:=60;
{end}
{7}
mass_u[7].fam:='Дрозач';mass_u[7].imya:=' Толя'; mass_u[7].otchestvo:=' Леонидович'; mass_u[7].rost:=190;
mass_u[7].masa:=70;
{end}
{8}
mass_u[8].fam:='Сидоров';mass_u[8].imya:=' Тарас'; mass_u[8].otchestvo:=' Иванович '; mass_u[8].rost:=150;
mass_u[8].masa:=55;
{end}
{9}
mass_u[9].fam:='Иванов';mass_u[9].imya:=' Саня'; mass_u[9].otchestvo:=' Иванович '; mass_u[9].rost:=200;
mass_u[9].masa:=90;
{end}
{10}
mass_u[10].fam:='Куку';mass_u[10].imya:=' Натали'; mass_u[10].otchestvo:='Ивановна '; mass_u[10].rost:=190;
mass_u[10].masa:=70;
{end}
{-----------------------------------------------}
textcolor(2);
writeln('-----------------------------------------------------------------');
writeln('| N/N | Фамилия | Имя | Отчество | Рост(см) | Маса(кг)|');
writeln('-----------------------------------------------------------------');
{---------------------Цыкл для вывода-------------------}
textcolor(7);

for i:=1 to kol_uchniv do
begin
writeln(' ',i,' ',mass_U[i].fam,' ',mass_U[i].imya,' ',mass_U[i].otchestvo,' ', mass_u[i].rost,
' ',mass_u[i].masa);
end;
{------------------Цыкл для середнього роста--------------------------}
s_rost:=0;

for i:=1 to kol_uchniv do
begin
{----ниже формула сумы ростов----}
s_rost:=s_rost + mass_u[i].rost;
end;
{-----------Средний рост------------}
ser_rost:=s_rost/kol_uchniv;
{-----------------------------------}

{---------------цыкл для вычисления максимального роста учеников---------------------}
max_rost:=0;
max_i:=0;
for i:=1 to kol_uchniv do
begin
if (max_rost<mass_u[i].rost)
then

begin
max_rost:=mass_u[i].rost ;
max_i:=i;
end;

end;
textcolor(7);
{---------------------------------конец цыкла max------------------------------}

{--------------------цыкл для вычисления минимального роста учеников----------}
min_rost:=mass_u[max_i].rost;

for i:=1 to kol_uchniv do
begin
if min_rost>mass_u[i].rost
then
min_rost:=mass_u[i].rost;
{min_i:=i;}
end;
{--------------------------------конец цыкла min-------------------------------}

{------------------------Вычисления баскетболистов---------------------------}

kol_uchniv2:=kol_uchniv;

for i:=1 to kol_uchniv do
begin
if mass_u[i].rost<170
then
kol_uchniv2:=kol_uchniv2-1;

end;
{---------------------конец вычисления баскетболистов---------------------------------------------}

{---------------------------------Вывод итогов--------------------------------------}
textcolor(2);
writeln('--------------------------------------------------------------');
textcolor(4);

writeln(' Cередний Рост Учеников = ', ser_rost:5:1 ,' см');
writeln;
writeln(' Рост самого высокого Ученика = ',mass_u[max_i].rost,' см');
writeln;
writeln(' Рост самого низкого Ученика = ',min_rost);
writeln;
writeln(' Могут Заниматься в Баскетбольной Секции Только ',kol_uchniv2,' чел ',' из ',kol_uchniv,' чел' );
textcolor(2);
writeln('--------------------------------------------------------------');
textcolor(9);
writeln('Made in Ukrane! Produce By STORM!');
textcolor(2);
writeln('Для завершения просмотра нажмите любую клавишу');
readkey;
end.



И теперь думаю немного с записями разрулился smile.gif

теперь мне не составит труда решить задачу 1066б smile.gif

Спасибо всем кто помогал! с Наступающим 2007 новым годом Всех!!!!! no1.gif

офф smile.gif