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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2007, 21:47   #1
11111
Пользователь
 
Регистрация: 14.10.2007
Сообщений: 25
Восклицание Процедуры и функции

Помогите пожайлуста с этой задачей.

Помогите пожайлуста дополнить её удалением и так же проверить правильноли она написанна
Использовать подпрограммы (ввода, вывода, обрабатывающей части). Дан массив целых чисел А[M,N], где M,N<=10. Удалить все столбцы, в которых нет нулевого элемента.
Код:
program lab4;
const
k=10;
var
A:array [1..10, 1..10] of integer;
M,N:integer;
procedure inputArray;
var
i,j:integer;
            begin
            write ('M=');
            readln (M);
            if M>10 then
               begin
               writeln ('M must be <=10');
               N:=0; M:=0;
               exit;
               end;

               write ('?N=');
               readln (N);
               if N>10 then
                  begin
                  writeln ('N must be <=10');
                  N:=0; M:=10;
                  exit;
                  end;

                  for i:=1 to M do
                      begin
                      write ('?A[',i,',',',j]=');
                      readln (A[i,j]);
                      end;

            end;

procedure printArray;
var
i,j:integer;
begin
writeln ('A=');
if (N>0) and (M>0) then
   begin
   for i:=1 to M do
       begin
       write (A[i,j]);
       end;
       writeln;
   end;
end;
procedure ydalenia;

end;
    begin
    inputArray;
    printArray;
    vstav;
    printArray;
    end.

Последний раз редактировалось 11111; 14.11.2007 в 23:10.
11111 вне форума Ответить с цитированием
Старый 15.11.2007, 10:20   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот для начала процедура ввода массива. Как она работает в программе смотри во вложении.
Код:
procedure InputArray; принято процедуры и функции начинать с большой    
                      буквы
var
i,j:integer;  можно перенести в глобальные переменные, т.е. где M,N
begin
  clrscr;                
  write ('M=');
  readln (M);
  if M>10 then
      begin
          writeln ('M must be <=10');
          N:=0; M:=0;   зачем?
          exit;
      end;
  write ('?N=');
  readln (N);
  if N>10 then
      begin
          writeln ('N must be <=10');
          N:=0; M:=10;    зачем?
          exit;
      end;
  ((for i:=1 to M do                НЕПРАВИЛЬНО, если массив двухмерный,
      Begin                          то и измерений должно быть два
         write ('?A[',i,',',',j]=');
         readln (A[i,j]);
      end;))
  for i:=1 to M do 
     for j:=1 to N do
        begin
           write ('A[',i,',',j,’]='); аккуратнее с запятыми и 
           readln (A[i,j]);              апострофами
        end;
   clrscr;   очистим экран и выведем на него наш массив в виде матрицы
   for i:=1 to M do
      begin 
        for j:=1 to N do
          write (A[i,j]:3);  (:3 – дает пробел между цифрами в три 
          writeln;                    знака)
      end;
   readln;
end;
Вложения
Тип файла: rar Z11111.rar (374 байт, 11 просмотров)
puporev вне форума Ответить с цитированием
Старый 15.11.2007, 11:02   #3
11111
Пользователь
 
Регистрация: 14.10.2007
Сообщений: 25
По умолчанию

а как сделать в этой программе чтоб она удаляла все столбцы, в которых нет нулевого элемента.
11111 вне форума Ответить с цитированием
Старый 15.11.2007, 11:12   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что если просто не выводить на экран такие столбцы?
Или нужно обязательно показать код удаления?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2007, 11:15   #5
11111
Пользователь
 
Регистрация: 14.10.2007
Сообщений: 25
По умолчанию

думаю можно не выводить (но желательно с кодом удаления)
11111 вне форума Ответить с цитированием
Старый 15.11.2007, 11:17   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда сделай еще одну переменку такого массива и в нее собирай все столбцы которые имеют нулевой элемент,
а потом переприсвой первоначальному массиву этот.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2007, 11:22   #7
11111
Пользователь
 
Регистрация: 14.10.2007
Сообщений: 25
По умолчанию

а как это будет на паскале

пожайлуста помогите с удалением

Последний раз редактировалось AlDelta; 26.11.2007 в 15:08.
11111 вне форума Ответить с цитированием
Старый 18.11.2007, 15:21   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Хотел помочь автору темы с решением задачи, но сам запутался. Нахожу столбцы с нулевыми элементами, считаю их количество ... и все. Как вывести эти столбцы в новой матрице не могу придумать. Для квадратной матрицы нашел хитрое, но наверное неправильное решение (вывожу в строку и транспонирую), а для прямоугольной не могу. Если у кого есть время подскажите мне для душевного равновесия да и человеку заодно поможем. Начало кода прилагаю.
Код:
program udalstlb;
uses crt;
var n,i,k,j,d:integer; a,c:array[1..10,1..10] of integer;
b:array[1..100]of integer;
begin
  clrscr;
  write('n=');readln(n);
  randomize;
  for i:=1 to n do      
    for j:=1 to n do
      begin
       a[i,j]:= random(5)-1;
      end;

  for i:=1 to n do      
      begin
       for j:=1 to n do
         write(a[i,j]:2);writeln;
      end;
  readln;

  for j:=1 to n do     
    begin
      k:=0;d:=0;
      for i:=1 to n do
        begin
          if a[i,j]=0 then k:=k+1;
        end;
      if k>0 then d:=d+1;
Дальше просто для того, что бы проверить правильно ли выделил столбцы.

      for i:=1 to n*d do b[i]:=a[i,j];
      for i:=1 to n*d do write (b[i],' ');
      end;
      readln; end.
puporev вне форума Ответить с цитированием
Старый 19.11.2007, 12:35   #9
11111
Пользователь
 
Регистрация: 14.10.2007
Сообщений: 25
По умолчанию

люди помогите пожайлуста очень надо
11111 вне форума Ответить с цитированием
Старый 19.11.2007, 13:18   #10
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

В чем проблема?
Перебираем значения столбцов в обратном порядке(справа на лево).
Если Нулевого элемента в столбце нет, то сдвигаем уже пройденые столбцы на 1 влево.

И потом, чем вариант Стилета не подходит? Пост #6.
Alex21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль...Процедуры и функции Miledi Помощь студентам 3 14.05.2012 18:22
Процедуры и функции. В чем отличие? Умелец Паскаль, Turbo Pascal, PascalABC.NET 12 20.10.2010 19:59
Процедуры и функции V25 Паскаль, Turbo Pascal, PascalABC.NET 1 17.11.2008 20:02
DLL + Процедуры(не функции) LEKA Общие вопросы Delphi 1 02.05.2007 20:37