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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 16:34   #1
Otre4eHHbIu
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 31
По умолчанию Pacsal, Модули, Наработки есть

В заданной прямоугольной матрице поставить на первое место столбец с наименьшим количеством нулевых элементов, переставив все нули в конец этого столбца. (Изменённая матрица должна содержать все элементы исходной матрицы).

Код:
  	
unit modul1;
interface
const m=5; n=4;
type matr=array[1..n,1..m] of real;
procedure vvod(var a:matr);
procedure vivod(a:matr);
function kolnul(a:matr; k:integer):integer;
procedure minnul(var a:matr);
implementation

procedure vvod(var a:matr);
var i,j:integer;
begin
     writeln('Input matr: ');
     for i:=1 to n do
         for j:=1 to m do
             read(a[i,j]);
end;

procedure vivod(a:matr);
var i,j:integer;
begin
     for i:=1 to n do
         begin
              for j:=1 to m do
                  write(a[i,j]:5:2);
         end;
end;

function kolnul(a:matr; k:integer):integer;
var i:integer;
begin
     k:=0;
     for i:=1 to m do
         if a[i,N]=0 then
            k:=k+1
end;

procedure minnul(var a:matr);
var i,minN,kolN:integer;
begin
     minN:=1;
     kolN:=kolnul(a,minN);
                          for i:=2 to m do
                              if kolnul(a,i)<kolnul(a,minN) then
                                begin
                                      kolN:=;
                                      minN:=;
                                 end;
end;
Otre4eHHbIu вне форума Ответить с цитированием
Старый 11.10.2009, 16:54   #2
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

А чего вы собственно хотите?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 11.10.2009, 17:30   #3
Otre4eHHbIu
Пользователь
 
Регистрация: 12.05.2009
Сообщений: 31
По умолчанию

собственно условие есть, наработки есть, хотелось бы указать на мои ошибки, помочь дописать и составить модуль...)
Otre4eHHbIu вне форума Ответить с цитированием
Старый 11.10.2009, 18:27   #4
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Ну тогда давайте разберемся:
Код:
procedure vvod(var a:matr);
var i,j:integer;
begin
     writeln('Input matr: ');
     for i:=1 to n do
         for j:=1 to m do
             read(a[i,j]);
end;
Тут я бы сделал ввод не в столбик, а ввиде матрицы. Вот так:
Код:
procedure vvod(var a:matr);
var i,j:integer;
begin
     writeln('Input matr: ');
     for i:=1 to n do
         for j:=1 to m do
           begin
             GoToXY(i,j);
             read(a[i,j]);
           end;
end;
К сожалению, если числа будут очень большими, матрица всеравно получится неровной((((.
Вывод тоже не в столбик:
Код:
procedure vivod(a:matr);
var i,j:integer;
begin
     for i:=1 to n do
         begin
              for j:=1 to m do
                  write(a[i,j]:5:2,'  ');
           Writeln;
         end;
end;
Тут таже проблемма, некрасивый вывод.
Код:
function kolnul(a:matr; k:integer):integer;
var i:integer;
begin
     k:=0;
     for i:=1 to m do
         if a[i,N]=0 then
            k:=k+1
end;
Ваша функция не возвращает результата.
Код:
function kolnul(a:matr;N:integer):integer;
var i,k:integer;
begin
     k:=0;
     for i:=1 to m do
         if a[i,N]=0 then
            k:=k+1
   kolnul:=k;
end;
Код:
procedure minnul(var a:matr);
var i,j,minN,kolN:integer;
     buf:real;
begin
     minN:=1;
     kolN:=kolnul(a,minN);
      for i:=2 to m do
        if kolnul(a,i)<kolN then
          begin
            kolN:=kolnul(a,i);
            minN:=i;
          end;
{Далее по заданию}
      for i:=1 to n do
       begin
         buf:=a[i,minN];
         a[i,minN]:=a[i,1];
         a[i,1]:=buf;
       end;
     for i:=1 to n do
      begin
       if a[i,1] = 0 then 
        begin 
          j:=i;
          while (a[j,1]<>0) or (j=n)
            inc(j); 
         a[i,1]:=a[j,1]
        end;
       for i:=n downto n-kolN+1 do
        a[i,n]:=0;
      end;
end;
Вот как-то так. Скорее всего будут ошибки, так как ничего не компилил. Пишите если что.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal; Задача с циклом (есть наработки...) -SG- Помощь студентам 5 09.10.2009 18:27
Паскаль, массивы, наработки есть. Otre4eHHbIu Помощь студентам 14 17.05.2009 01:16
Паскаль, массивы, наработки есть. Otre4eHHbIu Помощь студентам 3 12.05.2009 12:26
ПОСМОТРИТЕ, ПОЖАЛУЙСТА, ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ!! СРОЧНО!! ЕСТЬ НАРАБОТКИ) НАСТЯ 18:) Помощь студентам 33 10.05.2009 15:23
TURBO PACSAL 7.0 veterok Помощь студентам 1 23.04.2009 01:02