PDA

Просмотр полной версии : Памогите плз решить задание по лабе по турбо паскалю


LEGHEBOKA
30.03.2010, 19:30
Задание:
Дан массив А(N,N). Поменять элементы К-ой строки с элементами последней строкой этого массива. Переписать в одномерный массив элементы К-ой строки. Первоначальный и преобразованый двумерные массивы и одномерный массив вывести на экран.


Началась практика, а я почти ни чё не помню.
ЗАРАНЕЕ СПАСИБО.

moodoone
31.03.2010, 12:55
program zadacha;
var
a:array[1..255,1..255];
b:array[1..255,1..255];
c:array[1..255];
k,i,j,n:integer;
begin
writeln ('Введите номер строки которую нужно поменять');
readln (k);
writeln ('Введите количество элементов массива');
readln (n);
writeln ('Введите элементы массива и нажмите (Enter)');
for i:=1 to n do
for j:=1 to n do
read(A[i,j]);
for i:=1 to n do
for j:=1 to n do
b[i,j]:=a[i,j];

for j:=1 to n do
c:=b[k,j];
b[k,j]:=b[n,j];
b[n,j]:=c;
for j:=1 to n do
c[i]:=b[k,j];
for i:=1 to n do
for j:=1 to n do
write (A[i,j]);
for i:=1 to n do
for j:=1 to n do
write (B[i,j]);
for i:=1 to n do
write (c[i]);
end.


Только недавно начал изучать паскаль так что не пинайте..Незнаю рабочия ли программа...

Malor1k
05.04.2010, 23:40
не рабочая

Alv
06.04.2010, 00:05
program zadacha;
var
a:array[byte,byte] of integer;
b:array[byte] of integer;
k,i,j,n:integer;
begin
writeln ('Введите номер строки которую нужно поменять');
readln (k);
writeln ('Введите количество элементов массива');
readln (n);
writeln ('Введите элементы массива и нажмите (Enter)');
for i:=1 to n do
for j:=1 to n do
read(A[i,j]);

for i:=1 to n do
for j:=1 to n do
write (A[i,j]);

for j:=1 to n do
begin
b[j]:=a[k,j];
a[k,j]:=a[n,j];
a[n,j]:=b[j];
end;

for i:=1 to n do
for j:=1 to n do
write (a[i,j]);

for i:=1 to n do
write (b[i]);
end.

Soherox
06.04.2010, 00:07
const
kl = 300;
type
myarr = array [1..kl, 1..kl] of integer;

var
a: myarr;
b: array [1..kl] of integer;
i, j, k, n: integer;

procedure swap(var a, b: integer);
var
t: integer;
begin
t:=a;
a:=b;
b:=t;
end;

procedure writem (a: myarr);
var
i, j: integer;
begin
writeln;
for i:=1 to n do
begin
for j:=1 to n do write(a[i, j],' ');
writeln;
end;
end;

begin
readln(n, k);
for i:=1 to n do
begin
for j:=1 to n do read(a[i, j]);
readln;
end;
writem(a);
for i:=1 to n do
begin
swap(a[k, i], a[n, i]);
b[i]:=a[k, i];
end;
writem(a);
writeln;
for i:=1 to n do write(b[i],' ');
readln;
end.

JnK
06.04.2010, 00:07
Писал на Делфи, но должно работать и на паскале:
program Project2;

var
i,j,R:integer;
N,K:integer;
Massv:array[1..255,0..255] of integer;
Massv_t:array[1..255,0..255] of integer;
Massv_o:array[1..255] of integer;
begin
Write('Размер массива: ');
ReadLn(N);
{Заполняем рандом 2 массива}
for j:=1 to N do // Столбец
for i:=1 to N do // строка
begin
r:=Random(100);
Massv[j,i]:=r;
Massv_t[j,i]:=r;
end;
{Какую строку будем менять}
Write('Строка: ');
ReadLn(K);
{Замена + Сохранение в одномерном массиве}
for i:=1 to N do // строка
begin
Massv_o[i]:=Massv[K,i]; // сохраняем в одномерном
Massv[K,i]:=Massv[N,i]; // заменяем K строку последней
Massv[N,i]:=Massv_o[i]; // последнюю заменяем из одномерного массива
end;

{Вывод}
WriteLn('-Массив--------------');
for j:=1 to N do // Столбец
begin
for i:=1 to N do // строка
begin
Write(Massv_t[j,i],' ');
end;
WriteLn; // новая строка
end;
WriteLn('-Измененый Массив--------------------');
for j:=1 to N do // Столбец
begin
for i:=1 to N do // строка
begin
Write(Massv[j,i],' ');
end;
WriteLn;
end;
WriteLn('-Строка-----------------------');
for i:=1 to N do // строка
begin
Write(Massv_o[i],' ');
end;

WriteLn('Нажмите Enter для завершения...');
ReadLn; // Ожидаем нажатие Enter для выдода
end.


P.s. надеюсь правильно понял задачу.

Soherox
06.04.2010, 00:19
JnK...нужно сначала поменять местами в двумерном, только потом записывать в одномерный, у тебя же наоборот происходит... плюс если используешь random, то не забываем писать randomize

JnK
06.04.2010, 00:31
Soherox, Выходит в одномерный надо записать последнюю строку двухмерного начального массива.

ИМХО, В данном случаи randomize, дело вкуса.

Если после изменения, тогда надо поменять этот кусочек:
for i:=1 to N do // строка
begin
// Massv_o[i]:=Massv[K,i]; // Сохранить до изменения
Massv[K,i]:=Massv[N,i];
Massv_o[i]:=Massv[K,i]; // Сохранить После изменения
Massv[N,i]:=Massv_t[K,i]; // последнюю строку заменяем на К строку
end;

-Gory King-
06.04.2010, 00:31
_http://forum.antichat.ru/thread122076.html