Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 22:21   #1
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
Восклицание Двумерный массив,Паскаль

(Оч срочно)
Есть задача ввести матрицу , в каждом столбце найти сумму элементов и по возрастанию сумм элементов столбцов , переставить столбцы местами

вот что я сделал
Код:
program LW5;
uses crt;
const i=50; j=50;
type mas=array[1..i,1..j] of integer;
mas1=array[1..j] of integer;
var a,c,a1,a2,max:mas; k,n,m,sum,g,s,tmp:integer;b:mas1;
procedure vvod(var a:mas);
begin
readln(n,m);
for n:=1 to n do
 for m:=1 to m do
 begin
 write('a[',n,',',m,']: ');
 read(a[n,m]);
 end;
end;

procedure stolbec(var a:mas;var b:mas1);
begin
for m:=1 to m do
 begin
 k:=0;
  for n:=1 to n do
  begin
  k:=k+a[n,m];
  end;
 a[n+1,m]:=k;
 end;
end;

begin
clrscr;
vvod(a);
stolbec(a,b);
for n:=1 to n+1 do
for m:=1 to m do
write(a[n,m],' ');
readln;
readln;
for m:=1 to m-1 do
 if a[n+1,m] > a[n+1,m+1] then
  for n:=1 to n do
   begin
   tmp:=a[n,m];
   a[n,m]:=a[n,m+1];
   a[n,m+1]:=tmp;
   end;

for n:=1 to n do
for m:=1 to m do
write(a[n,m],' ');
readln;
readln;
end.
всё работает кроме сортировки столбцов
я записал сумму элементов столбцов в дополнительную строчку и сравниваю столбцы по элементам этой строчки
но как вы можете убедится они не меняются местами (столбцы)

Очень прошу срочно помочь исправить ошибку
цена вопроса : автомат ... и кирзовые сапоги

Последний раз редактировалось Stilet; 02.06.2010 в 10:37.
MIKE11IPME вне форума Ответить с цитированием
Старый 01.06.2010, 22:42   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Program massiv;
Uses
   CRT;
var
    mas:array[1..100,1..100] of integer;
    i,j,sum,max,m,n,p,k,tex,l:integer;
begin
clrscr;
randomize;
write('Введите количество строк: ');
readln(n);
write('Введите количество столбцов: ');
readln(m);
writeln('Исходный массив: ');
for i:=1 to n  do
begin
for j:=1 to m do
begin
mas[i,j]:=random(10)-2;
write(mas[i,j]:2,' ');
end;
writeln;
end;

 for j:=1 to m do
  begin
    sum:=0;
    for i:=1 to n do
    sum:=sum+mas[i,j];
    mas[n+1,j]:=sum;
  end;

writeln;
for j:=1 to m do
write(mas[n+1,j]:2,' ');
write(' => Сумма элементов в столбцах':20);
writeln;
writeln;

for j:=1 to m-1 do
for p:=j+1 to m do
if mas[n+1,j]>mas[n+1,p] then
   begin
     for i:=1 to n+1 do
       begin
        tex:=mas[i,j];
        mas[i,j]:=mas[i,p];
        mas[i,p]:=tex;
       end;
   end;

   writeln;
writeln('Результирующий массив: ');
for i:=1 to n do
  begin
    for j:=1 to m do
    write(mas[i,j]:2,' ');
    writeln;
  end;
writeln;
for j:=1 to m do
write(mas[n+1,j]:2,' ');
write('=> Сума элементов в столбцах':20);
readln
end.
Ну а по процедурам уж сам разбей.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 01.06.2010, 22:51   #3
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
Смех

Огромное спасибо ))))
терь точно автомат получу )))

(Эх еслиб с процедурами вообще мечта , ну эт я уже сам)
MIKE11IPME вне форума Ответить с цитированием
Старый 01.06.2010, 22:56   #4
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
Смех

Цитата:
(Эх еслиб с процедурами вообще мечта , ну эт я уже сам)
Как говорится мечтать не вредно.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 01.06.2010, 23:17   #5
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

вот с процедурами
кому мож пригодитсо))

Код:
Program massiv;
Uses
   CRT;
type
mas=array[1..100,1..100] of integer;
var
    psp:mas;
    i,j,sum,max,m,n,p,k,tex,l:integer;
procedure vvod;
begin
randomize;
write('vvedite koli4estvo strok: ');
readln(n);
write('vvedite koli4estvo stolbcov: ');
readln(m);
writeln('ishodnbIu` massiv: ');
for i:=1 to n  do
begin
for j:=1 to m do
begin
psp[i,j]:=random(10)-2;
write(psp[i,j]:2,' ');
end;
writeln;
end;
end;

procedure dodg(var psp:mas);
begin
for j:=1 to m do
  begin
    sum:=0;
    for i:=1 to n do
    sum:=sum+psp[i,j];
    psp[n+1,j]:=sum;
  end;
end;

procedure sumstol(var psp:mas);
begin
writeln;
for j:=1 to m do
write(psp[n+1,j]:2,' ');
write(' =>symma elementov stolbcov':20);
writeln;
writeln;
end;

procedure sort(var psp:mas);
begin
for j:=1 to m-1 do
for p:=j+1 to m do
if psp[n+1,j]>psp[n+1,p] then
   begin
     for i:=1 to n+1 do
       begin
        tex:=psp[i,j];
        psp[i,j]:=psp[i,p];
        psp[i,p]:=tex;
       end;
   end;

end;

procedure vuvod;
begin
writeln;
writeln('Pe3yLbtiryI0III,uu` massiv: ');
for i:=1 to n do
  begin
    for j:=1 to m do
    write(psp[i,j]:2,' ');
    writeln;
  end;
writeln;
for j:=1 to m do
write(psp[n+1,j]:2,' ');
write('=> symma elementov stolbcov':20);
end;

begin
clrscr;
vvod;
dodg(psp);
sumstol(psp);
sort(psp);
vuvod;
readln
end.
мечта не исполнима , зато вполне реализуйма )))

Последний раз редактировалось MIKE11IPME; 01.06.2010 в 23:30.
MIKE11IPME вне форума Ответить с цитированием
Старый 01.06.2010, 23:24   #6
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

код кнопочкой # оформи.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 01.06.2010, 23:30   #7
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

вот так ? а то с хтмл тегами не оч дружу
MIKE11IPME вне форума Ответить с цитированием
Старый 01.06.2010, 23:31   #8
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Цитата:
вот так ?
Да.именно так.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 08.06.2010, 22:55   #9
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Код:
Program massiv;
Uses
   CRT;
type mas=array[1..100,1..100] of integer;
var
    psp:mas;
    i,j,t,max,m,n,p,k,l:integer;
procedure vvod2;
begin
 write('vvedite koli4estvo strok: ');
 readln(n);
 write('vvedite koli4estvo stolbcov: ');
 readln(m);
 for i:=1 to n do
 for j:=1 to m do
 begin
 gotoxy(i*9-8,j*2+6);
 write('[',i,',',j,']:');
 read(psp[i,j]);
 end;
 writeln;
end;
procedure vvod1;
begin
 randomize;
 write('vvedite koli4estvo strok: ');
 readln(n);
 write('vvedite koli4estvo stolbcov: ');
 readln(m);
 writeln('USXODNbIU` massiv: ');
 for i:=1 to n  do
  begin
  for j:=1 to m do
   begin
   psp[i,j]:=random(10)-2;
   write(psp[i,j]:2,' ');
   end;
  writeln;
  end;
end;

procedure dodg(var psp:mas);
var sum:integer;
begin
for j:=1 to m do
  begin
    sum:=0;
    for i:=1 to n do
    sum:=sum+psp[i,j];
    psp[n+1,j]:=sum;
  end;
end;

procedure sumstol(var psp:mas);
begin
 writeln;
 for j:=1 to m do
  write(psp[n+1,j]:2,' ');
  write(' =>symma elementov stolbcov':20);
  writeln;
  writeln;
end;

procedure sort(var psp:mas);
var tex:integer;
begin
 for j:=1 to m-1 do
  for p:=j+1 to m do
   if psp[n+1,j]>psp[n+1,p] then
    begin
     for i:=1 to n+1 do
       begin
        tex:=psp[i,j];
        psp[i,j]:=psp[i,p];
        psp[i,p]:=tex;
       end;
   end;

end;

procedure vuvod;
begin
writeln;
writeln('Pe3yLbtiryI0III,uu` massiv: ');
for i:=1 to n do
  begin
    for j:=1 to m do
    write(psp[i,j]:2,' ');
    writeln;
  end;
writeln;
 for j:=1 to m do
 write(psp[n+1,j]:2,' ');
 write('=> symma elementov stolbcov':20);
end;
begin
clrscr;
writeln('1-klaviztyra');
writeln('2-random');
readln(t);
case t of
1:begin
 vvod2;
 end;
2:begin
 vvod1;
 end;
end;
dodg(psp);
sumstol(psp);
sort(psp);
vuvod;
readln;
readln;
end.
в предыдущих не было формальных переменных в процедурах
тут есть (в dodg и sort процедурах)
MIKE11IPME вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерный массив Паскаль LastBreath Помощь студентам 3 05.05.2010 00:49
Двумерный массив (паскаль) Гамбит Помощь студентам 1 22.11.2009 18:48
Двумерный массив (паскаль) mislagusla Помощь студентам 6 19.10.2009 22:16
Двумерный массив. ПАскаль stasig Помощь студентам 18 15.12.2008 17:18
Паскаль (двумерный массив) RAVAL)) Помощь студентам 5 16.06.2008 00:27