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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2009, 21:19   #1
М@лышка
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 13
По умолчанию Получить массив B, присвоив его k-му элементу значение 0, если все элементы [Pascal]

Всем приветик Помогите решить задачку: Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 0, если все элементы k-го столбца матрицы нулевые, и значение 1 в противном случае. А то не знаю как ее решить Мне хотя бы обработку, а ввод и вывод я сама напишу.. Помогите пожалуйста, заранее благодарна!
М@лышка вне форума Ответить с цитированием
Старый 12.10.2009, 21:24   #2
vitaly38
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 37
По умолчанию

стерто........

Последний раз редактировалось vitaly38; 12.10.2009 в 21:28.
vitaly38 вне форума Ответить с цитированием
Старый 12.10.2009, 21:29   #3
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Ну напиши ввод и вывод, а с обработкой какнибудь уж решим...
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 12.10.2009, 21:30   #4
М@лышка
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 13
По умолчанию

Что-то стерли сообщение..(
Цитата:
Ну напиши ввод и вывод, а с обработкой какнибудь уж решим...
Щас, попробую написать..
М@лышка вне форума Ответить с цитированием
Старый 12.10.2009, 21:41   #5
М@лышка
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 13
По умолчанию

Ну ввод примерно такой будет:
Код:
writeln('Введите кол-во строк матрицы');
readln(m);
writeln('Введите кол-во столбцов матрицы');
readln(n);
for i:=1 to m do
  begin
     for j:=1 to n do
        write('Введите ',m*n,' элементов матрицы:');
        readln(a[i,j]);
  end;
for i:=1 to m do
  begin
     for j:=1 to n do
       write(a[i,j]:4);
       writeln;
  end;
Пишу онлайн, так что извините если где-то ошибаюсь, сейчас еще вывод напишу..
А вот и вывод, впринципе там массив будет, так что вроде как-то так:
Код:
for i:=1 to m do
  write(b[i],' ');

Последний раз редактировалось М@лышка; 12.10.2009 в 21:43.
М@лышка вне форума Ответить с цитированием
Старый 12.10.2009, 21:55   #6
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Вот похожая задача была:

http://programmersforum.ru/showthrea...292#post361292

адд: напишу через 20 мин.....

Последний раз редактировалось Вавел из ГМТУ; 12.10.2009 в 22:01.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 12.10.2009, 22:00   #7
М@лышка
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 13
По умолчанию

Цитата:
Вот похожая задача была:
Спасибо, я эту тему просмотрела перед тем как создать тему.. Но что-то я не поняла, тот алгоритм, котрый Вы там описали.. Не могли бы Вы написать мне обработку, пожалуйста?
М@лышка вне форума Ответить с цитированием
Старый 12.10.2009, 23:11   #8
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Вот такая получилась обработка:

Код:
Flag := False;
For y := 1 To M Do
  Begin
    For x := 1 To N Do
        If A[x,y] = 1 Then
          Begin
            Flag := True;
            Break;
          End;
    If Flag Then B[y] := 1 Else B[y] := 0;
    Flag := False;
  End;
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 12.10.2009, 23:16   #9
М@лышка
Пользователь
 
Регистрация: 05.06.2009
Сообщений: 13
По умолчанию

Спасибо Вам огромное!!! А не могли бы Вы объяснить, почему в Вашем коде используются переменные x,y? Нельзя использовать обычные счетчики i,j чтобы не создавать лишних переменных? И еще зачем в конце переменной Flag присваивается значение false?
М@лышка вне форума Ответить с цитированием
Старый 12.10.2009, 23:24   #10
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Цитата:
Спасибо Вам огромное!!! А не могли бы Вы объяснить, почему в Вашем коде используются переменные x,y? Нельзя использовать обычные счетчики i,j чтобы не создавать лишних переменных? И еще зачем в конце переменной Flag присваивается значение false?
Вы можете хоть цветочки использовать вместо имён переменых, от этого ничего не измениться. У меня x и y потомучто мне проще асоциировать массив с декартовой системой (так проще обращаться к нужному элементу). Хотя мне без разницы.

Надо сбрасывать флаг после того, как мы "изучили" столбец. Иначе если в первом столбе флаг переключился, то для последующих столбцов он также будет равен True не зависимо от обработки.

Зачем тебе новые переменые, используй мои....
Код:
Const
  N : Byte = 2; // Количество строк.
  M : Byte = 20;  // Количество столбцов.

Var
  A : Array [1..100, 1..100] of Byte; // Массив основной.
  B : Array [1..100] of Byte;  // Массив дополнительный.
  x, y : Byte; // Индексы массива.
  Flag : Boolean; // Флаг.

Begin
// Заполняем основной массив.
Randomize;
For x := 1 To N Do
  For y := 1 To M Do A[x,y] := Random(2);

// Выводим основной массив на экран.
For x := 1 To N Do
  Begin
    For y := 1 To M Do Write(A[x,y], ' ');
    Writeln;
  End;

// Обрабатываем основной массив и на основании его заполняем дополнительный.
Flag := False;
For y := 1 To M Do
  Begin
    For x := 1 To N Do
        If A[x,y] = 1 Then
          Begin
            Flag := True;
            Break;
          End;
    If Flag Then B[y] := 1 Else B[y] := 0;
    Flag := False;
  End;

// Выводим дополнительный массив.
Writeln;
For x := 1 To M Do Write(B[x], ' ');

// Не закрываемся...
Readln;
End.
адд: обычно заполнение массива и его вывод на экран совмещаются(чтоб циклы не прогонять дважды).... Но для наглядности происходящего (или для последуещей модернизации до "ручного заполнения") эти блоки разнесены.

Последний раз редактировалось Вавел из ГМТУ; 12.10.2009 в 23:27.
Вавел из ГМТУ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить массив, в который поместить все элементы второго массива, оканчивающиеся на цифру 5 Паскалька^^ Паскаль, Turbo Pascal, PascalABC.NET 11 07.01.2009 02:54
Получить новый одномерный массив В,каждый элемент которого равен мин элементу строк исходной матрицы Artimbulidor Помощь студентам 6 29.12.2008 18:51
массив с количеством элементов N. Напечатать те его элементы, индексы которых являются степенями двойки Маськ@ Паскаль, Turbo Pascal, PascalABC.NET 4 12.12.2008 16:34
Если все элементы матрицы четные, вычислить их произведение. Misho0k Паскаль, Turbo Pascal, PascalABC.NET 7 20.05.2008 22:51
Как получить изображение, если я знаю его хендл? AidarBik Win Api 4 05.11.2007 15:54