![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
goatsee |
![]()
Сообщение
#1
|
Гость ![]() |
как из 2х мерного массива, сделать 1мерный, если размеры совтадают??? жду ответа, буду сидеть до утра=(
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
TypeCast-ом...
type
arr_2d = array[1 .. 10, 1 .. 10] of integer;
arr_1d = array[1 .. 100] of integer;
var
mx: arr_2d;
...
arr_1d(mx)[1] := 10;
...
Идея понятна? При записи arr_1d(mx) матрица рассматривается как одномерный массив... Сообщение отредактировано: volvo - 22.06.2007 0:45 |
goatsee |
![]()
Сообщение
#3
|
Гость ![]() |
что то не выходит, а другова способа нет?
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Не знаю, что там у тебя не выходит... А насчет другого способа - если у тебя ЭТО не получилось, с чего ты взял, что ДРУГОЕ получится? Ну, попробуй так:
type
arr_2d = array[1 .. 10, 1 .. 10] of integer;
arr_1d = array[1 .. 100] of integer;
var
mx: arr_2d;
arr: arr_1d absolute mx; { <--- физически накладываешь массив на матрицу }
Все, дальше можно работать с массивом arr, ибо как массив так и матрица находятся в одном и том же месте в памяти... |
goatsee |
![]()
Сообщение
#5
|
Гость ![]() |
volvo супер 2рой вариант сработал=)
один вопрос остался Код program practuka; uses crt; type arr_2d= array[1 .. 2, 1 .. 2] of integer; arr_1d= array[1 .. 4] of integer; var f: text; x,i,j:integer; mx: arr_2d; arr: arr_1d absolute mx; begin assign(f, 'matr.txt'); rewrite(f); clrscr; begin for i:=1 to 4 do begin write('3HA4EHUE',i,':'); read(arr[i]); writeln; end; end; for j := 1 to 4 do for i := 1 to 4 do if arr[i]<arr[i+1] then begin x:=arr[i]; arr[i]:=arr[i+1]; arr[i+1]:=x; end; writeln; for i:=1 to 4 do writeln(f,'(',arr[i],')','(',i,',',j,')'); {в файле выводятся координаты} close(f); end. проблема в том, что координаты с 1мевого массива, как переделать что б в файле записывались координаты 2мерного массива пример: 1 2 3 5 выводит: (5)(1,4) (3)(2,4) (2)(3,4) (1)(4,4) а надо (5)(2,2) (3)(2,1) (2)(1,2) (1)(1,1) |
hiv |
![]()
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
один вопрос остался проблема в том, что координаты с 1мевого массива, как переделать что б в файле записывались координаты 2мерного массива Подумай хорошенько над этим! Код ... for j := 1 to 4 do {зачем тебе этот цикл, ведь j потом нигде не используется} for i := 1 to 4 do if arr[i]<arr[i+1] then {при i=4, чему будет равен arr[i+1]} begin x:=arr[i]; arr[i]:=arr[i+1]; {аналогично предыдущему} arr[i+1]:=x; {аналогично предыдущему} end; ... -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
goatsee |
![]()
Сообщение
#7
|
Гость ![]() |
просто он сортирует, но не выводит данные координат
я согласен, что тут лушнее, но по другому он не хочет |
hiv |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
просто он сортирует... -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
hiv |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
... , но по другому он не хочет Захочет, если репу почесать...program practuka;
uses crt;
type
arr_2d= array[1 .. 2, 1 .. 2] of integer;
arr_1d= array[1 .. 4] of integer;
var f: text;
x,i,k,j:integer;
mx: arr_2d;
arr: arr_1d absolute mx;
sort: boolean;
begin
assign(f, 'matr.txt');
rewrite(f);
clrscr;
for i:=1 to 4 do
begin
write('3HA4EHUE',i,':');
read(arr[i]);
writeln;
end;
repeat
sort:=true;
for i := 1 to 3 do
if arr[i]<arr[i+1] then
begin
x:=arr[i];
arr[i]:=arr[i+1];
arr[i+1]:=x;
sort:=false;
end;
until sort;
writeln;
for i:=1 to 4 do
begin
k := (i-1) div 2 + 1;
j := i-(k-1)*2;
writeln(f,'(',arr[i],')','(',k,',',j,')'); {в файле выводятся координаты}
end;
close(f);
end.
-------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
hiv, не совсем... Надо вводить индексный массив, чтобы распечатать изначальные позиции чисел:
program practuka;
uses crt;
type
arr_2d= array[1 .. 2, 1 .. 2] of integer;
arr_1d= array[1 .. 4] of integer;
var f: text;
x,i,k,j:integer;
mx: arr_2d;
arr: arr_1d absolute mx;
indexes: arr_1d;
sort: boolean;
begin
assign(f, 'matr.txt');
rewrite(f);
clrscr;
for i:=1 to 4 do
begin
write('3HA4EHUE',i,':');
read(arr[i]);
writeln;
indexes[i] := i;
end;
repeat
sort:=true;
for i := 1 to 3 do
if arr[i]<arr[i+1] then
begin
x:=arr[i];
arr[i]:=arr[i+1];
arr[i+1]:=x;
x := indexes[i];
indexes[i] := indexes[i+1];
indexes[i+1] := x;
sort:=false;
end;
until sort;
writeln;
for i:=1 to 4 do
begin
k := (indexes[i]-1) div 2 + 1;
j := indexes[i]-(k-1)*2;
writeln(f,'(',arr[i],')','(',k,',',j,')');
end;
close(f);
end.
У тебя печатается нечто другое... ![]() |
hiv |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
hiv, не совсем... Надо вводить индексный массив... Вот: program practuka;
uses crt;
type
arr_2d= array[1 .. 2, 1 .. 2] of integer;
arr_1d= array[1 .. 4] of integer;
var f: text;
x,i,k,j:integer;
mx: arr_2d;
arr: arr_1d absolute mx;
index: arr_1d;
sort: boolean;
begin
assign(f, 'matr.txt');
rewrite(f);
clrscr;
for i:=1 to 4 do
begin
write('3HA4EHUE',i,':');
read(arr[i]);
writeln;
index[i]:=i; {инициализируем индексы}
end;
repeat
sort:=true;
for i := 1 to 3 do
if arr[i]<arr[i+1] then
begin
x:=arr[i];
arr[i]:=arr[i+1];
arr[i+1]:=x;
sort:=false;
x:=index[i]; {также меняем местами и индексы}
index[i]:=index[i+1];
index[i+1]:=x;
end;
until sort;
writeln;
for i:=1 to 4 do
begin
k := (index[i]-1) div 2 + 1; {вместо i используем индексный массив}
j := index[i]-(k-1)*2;
writeln(f,'(',arr[i],')','(',k,',',j,')'); {в файле выводятся координаты}
end;
close(f);
end.
На выходе: Код (5)(2,2) (3)(2,1) (2)(1,2) (1)(1,1) Сообщение отредактировано: hiv - 22.06.2007 11:59 -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
goatsee |
![]()
Сообщение
#12
|
Гость ![]() |
большое спасибо
|
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 23:31 |