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]);
ну ладно.... есть ещё одна задачка на двухмерный массив
Задача1066б
Дано двухмерный массив. Удалить из него: б.) S-й столбец
Всё в задаче больше ничего не сказано
как бы это всё на паскалике накатать....
Цитата(Айра @ 27.12.2006 22:48)
По-моему, пользователь должен ввести номер столбца (S), который нужно удалить. 1 2 4 5 7 8 s=1 => 2 5 8
А как такое можно сделать(удалить один столбец) с масивом????
мож есть функция?
(я могу тока нулями заменить, а вот удалить проблема )
ПоЖуЛуйСтА помогитессс
hiv
28.12.2006 17:55
Цитата(Димас @ 28.12.2006 13:14)
А как такое можно сделать(удалить один столбец) с масивом????
Никак. Есть два варианта: 1) Статически определяешь такую запись:
const Max_Razm:=20; type record N :integer; {кол-во строк} M :integer; {кол-во столбцов} Matr :array[1..Max_Razm,1..Max_Razm] of Integer; {значения матрицы} end;
2) Создаешь динамический массив (динамическую матрицу), размер которой можно менять в ходе выполнения программы. См. Динамические массивы
Димас
28.12.2006 18:20
мда , динамические матрицы ......
хотелось бы с записям поработать....
но я с ними никада не работал.... и не знаком.... как бы с ними познакомиться?
Общем что "такое записи и с чем их едят"?
klem4
28.12.2006 18:22
Правила форму читать не пробовал ?
FAQ для кого создается ? А поиск ? Тоже для красоты ?
просто с такой скоростю как у меня через 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;
такс....
ну написал эту запись, а толку?
что дальше?
hiv
28.12.2006 21:19
Цитата(Димас @ 28.12.2006 15:25)
что дальше?
Твоя матрица будет статическая, т.е. ее размеры в ходе выполнения изменить будет нельзя, НО! Определяя запись record, ты как бы к ней привязываешь переменные говорящие о ее заполненности по строкам и столбцам. ЗЫ: А вообще-то это лучше делать объектом и привязывать методы (процедуры и функции) работающие с этой матрицей. Ну например сортировки, добавления и удаления столбцов и строк, и т.д. т.п.
Димас
29.12.2006 5:06
тренировался на рекорд(записи) на такой задачке:
Задача 1194
Известы данный о 20 сотруниках фирмы(фамилия, зарплата и пол). определить: а)фамилию мужчины,имебщего самую большую зарплату(считать что такой есть и он едниственый) б)фамилию мужчины и женщины, имеющих самую маленькую зарплату(счиать что такие есть и они единственые в свой групе сотрудников)
Исходный код:
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.
Проверте пожалуйста всё ли правильно я написал??????
// const kol_sotrudnik = 4 - узял не 20 как сказано в задаче а 4 шоб меньше вводить
офф... спкокойной ночи
Димас
29.12.2006 15:17
Цитата(Димас @ 27.12.2006 21:59)
ну ладно.... есть ещё одна задачка на двухмерный массив
Задача1066б
Дано двухмерный массив. Удалить из него: б.) S-й столбец
Всё в задаче больше ничего не сказано
Блин ну помогите мне в этой задачке ?
не могу справится
Димас
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}
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
{--------------------цыкл для вычисления минимального роста учеников----------} 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-------------------------------}
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.
И теперь думаю немного с записями разрулился
теперь мне не составит труда решить задачу 1066б
Спасибо всем кто помогал! с Наступающим 2007 новым годом Всех!!!!!
офф
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.