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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 14:56   #1
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию задана символьная матрица nxm. Напечатайте символы, находящиеся в столбцах, элементы которых симметричны (ошибка в коде. Delphi)

И снова здравствуйте! У меня программа работала, до тех пор пока я не оформил всю программу в виде процедур. Помогите пожалуйста исправить ошибку. Выдаются нули а такого быть не должно.

Условие задачи.
Пусть задана символьная матрица nxm. Напечатайте все символы, находящиеся в столбцах, элементы которых симметричны.

Код:
program Project213142;

{$APPTYPE CONSOLE}

uses
  SysUtils,windows;
const
  n=5;
  m=7;
type
  telem=char;
  mas=array[1..n] of telem;
  matr=array[1..m] of mas;
procedure Vvod_Matr(a:matr);
const
  n=5;
  m=7;
var
  i,j:integer;
begin
  for i:=1 to m do
    begin
      for j:=1 to n do
      read(a[i,j]);
      readln
    end
end;
procedure Poisk_Stb(a:matr);
const
  n=5;
  m=7;
var
  i,j,mn:integer;
  flag:boolean;
begin
  mn:=n div 2;
  for j:=1 to n do
    begin
      flag:=true;
      i:=1;
      while flag and (i<=mn) do
        begin
          if a[i,j]<>a[n-i+1,j] then flag:=false;
          i:=i+1
        end;
      if flag then
        begin
          for i:=1 to m do
            write(a[i,j]);
          writeln
        end
    end
end;
var
  a:matr;
  i,j,mn:integer;
  flag:boolean;
begin
  setconsolecp(1251);
  setconsoleoutputcp(1251);
  Vvod_Matr(a);
  Poisk_Stb(a);
  readln
end.

Последний раз редактировалось Начинающий програм; 04.04.2012 в 14:59.
Начинающий програм вне форума Ответить с цитированием
Старый 04.04.2012, 15:16   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
И снова здравствуйте! У меня программа работала, до тех пор пока я не оформил всю программу в виде процедур. Помогите пожалуйста исправить ошибку. Выдаются нули а такого быть не должно.
И снова привет!
Открой прошлую тему свою, и всё снова также измени как я тебе сказал уже!
Удачи!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 04.04.2012, 15:20   #3
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Я твой предыдущий урок учел, попробовал но все же почему-то не работает. Может в самой программе я ошибся где-то?

Прога не работает так как нужно.

Я изменил
Код:
Procedure Vvod_Matr(a:matr);
на вот это
Код:
Procedure Vvod_Matr(var a:matr);
все бестолку

Вот я исправил, одну ошибку, какая еще может быть здесь?

Код:
program Project213142;

{$APPTYPE CONSOLE}

uses
  SysUtils,windows;
const
  n=5;
  m=7;
type
  telem=char;
  mas=array[1..n] of telem;
  matr=array[1..m] of mas;
procedure Vvod_Matr(var a:matr);
const
  n=5;
  m=7;
var
  i,j:integer;
begin
  for i:=1 to m do
    begin
      for j:=1 to n do
      read(a[i,j]);
      readln
    end
end;
procedure Poisk_Stb(a:matr);
const
  n=5;
  m=7;
var
  i,j,mn:integer;
  flag:boolean;
begin
  mn:=n div 2;
  for j:=1 to n do
    begin
      flag:=true;
      i:=1;
      while flag and (i<=mn) do
        begin
          if a[i,j]<>a[n-i+1,j] then flag:=false;
          i:=i+1
        end;
      if flag then
        begin
          for i:=1 to m do
            write(a[i,j]);
          writeln
        end
    end
end;
var
  a:matr;
  i,j,mn:integer;
  flag:boolean;
begin
  setconsolecp(1251);
  setconsoleoutputcp(1251);
  Vvod_Matr(a);
  Poisk_Stb(a);
  readln
end.

Последний раз редактировалось Stilet; 04.04.2012 в 21:34.
Начинающий програм вне форума Ответить с цитированием
Старый 04.04.2012, 20:58   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

да потому что поиск у тебя кривоват!
Ты не проверяешь все значения!
Можно использовать такой подход
Код:
for j := 1 to cols do
    for i := 1 to (rows div 2) do
        if massiv[i, j] = massiv[cols - i + 1, j] then
            Write (massiv[i, j]:5);
writeln;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 04.04.2012, 21:34   #5
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Спасибо! Ну если бы я был продвинутым программистом, как ты, а не начинающим я бы кривые программы не составлял.
Начинающий програм вне форума Ответить с цитированием
Старый 04.04.2012, 22:53   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

А я и не говорил что твоя программа ,пардон, кривая!
Я говорил, что поиск у тебя ,внимание, КРИВОВАТ!
Я не хотел сказать что-то обидное, если ты об этом!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица.элементы строки в столбцах Akcentbek Помощь студентам 2 08.02.2012 15:44
Задана символьная матрица размером NxM Sergey Zhlobo Общие вопросы Delphi 5 21.06.2011 00:12
В матрице nxm (n, m ≥ 10) целых чисел элементы нечетных строк упорядочить по возрастанию, а элементы четн serafimGroup Помощь студентам 1 01.12.2010 16:45
Дана матрица из 5 столбцов. Найти макс. элементы в нечетных столбцах chistik Microsoft Office Excel 7 11.05.2010 19:36
элементы относительно главной диагонали должны быть симметричны Ksusha Помощь студентам 1 04.05.2010 19:23