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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2010, 21:13   #1
Shelena
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
Печаль обмен столбца и строки двумерного массива

Постановка задачи: используя функции, решить указанную задачу. Массив должен передаваться в функцию как параметр.
А надо, собственно, написать процедуру обмена столбца и строки двумерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых собпадают.
Заранее огромное спасибо. Помогите, хотя бы частично...
Shelena вне форума Ответить с цитированием
Старый 03.11.2010, 10:41   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

вариантов немного:
для квадратной матрицы
1) (думаю самый простой вариант) это создание еще одного массива (одномерного) в качестве буфера.
2) (параноидальный) можно использовать всего 1 переменную как буфер, но главное перед этим делом выпить, потому как вероятность ошибиться оч. велика
fbus вне форума Ответить с цитированием
Старый 03.11.2010, 12:20   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Код:
program test;

const 
    N = 4;

type TMass = array[0..N] of Integer;
type TMatr = array[0..N] of TMass;

var
    matr: tmatr;
    i, j: integer;
    key: char;

procedure Change(var a: tmatr);
var
    i, j: integer;
    col: integer;
begin
    for i := 0 to N do begin
        if (matr[i, 0] = matr[0, i]) then begin
            for j := 0 to N do begin
                col := matr[i, j];
                matr[i, j] := matr[j, i];
                matr[j, i] := col;
            end;
        end;
    end;
end;

begin
    writeln('Enter matrix elements by string with spaces');
    for i := 0 to N do
        for j := 0 to N do
            read(matr[i, j]);
    writeln('---matrix after procedure Change---');
    change(matr);
    for i := 0 to N do begin
         for j := 0 to N do begin
            write(matr[i, j], #32);
        end;
        writeln;
    end;
    write('Press any key for exit...')
    readln(key);
end.
только сделал изменение строк и столбцов тех, у к-рых первые элементы совпадают по индексам, т.е. первый элемент совпадает только например у 2-ой строки и у 2-ого столбца, если нужно по другому, то тут изменять придется код

держите нямку ))

з.ы. писал в блокноте, не проверял как работает))) если что здесь отпишите или мне в контакты, помогу
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 03.11.2010, 12:37   #4
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

RUSt88, это конечно проблема студента но я бы не стал массивы объявлять в Type поскольку задание явно из первого курса (напомню что сейчас ноябрь, тоесть с 1 сентября прошло 2 месяца) на первом курсе массивы объявляют в Var а не type и не делают их динамическими...
хотя у просящего должна быть и своя голова на плечах
fbus вне форума Ответить с цитированием
Старый 03.11.2010, 12:41   #5
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
хотя у просящего должна быть и своя голова на плечах
весьма и весьма поддерживаю, но я сижу на рабе, делать нечего :DDD решил замутить

Цитата:
и не делают их динамическими...
ну у мня в приведенном коде они константные, а то что не делают динамических - эт прав, да я бы и не стал заморачиваться с указателями, на паскале только так можно динамические массивы сделать

Цитата:
Массив должен передаваться в функцию как параметр.
стопудов так надо было делать, как я написал
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]

Последний раз редактировалось Stilet; 03.11.2010 в 13:18.
RUSt88 вне форума Ответить с цитированием
Старый 03.11.2010, 19:13   #6
Shelena
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от fbus Посмотреть сообщение
на первом курсе массивы объявляют в Var а не type и не делают их динамическими...
хотя у просящего должна быть и своя голова на плечах
да это ничего, скажу что подсказали, это не страшно...
RUSt88, спасибо огромное! вот правда не надо было по индексам, а чтоб любые... по крайней мере по условию так
и не работает... он не понимает, когда я закончила матрицу набирать, через паузу выходить приходится.
Shelena вне форума Ответить с цитированием
Старый 04.11.2010, 18:24   #7
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
он не понимает, когда я закончила матрицу набирать
что это значит не понимает?? вы хоть правильно матрицу заполнятете?
матрица размером идет 5х5, а не 4х4, как вы подумали наверно, потому что идет отсчет от 0 до 4, а не от 1

матрица во-вторых квадратная, т.е. вводить так надо было

5 4 9 2 4
4 8 7 0 2
9 5 6 4 7
3 1 8 2 3
7 8 9 2 7
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 05.11.2010, 08:14   #8
Shelena
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от RUSt88 Посмотреть сообщение
матрица размером идет 5х5, а не 4х4, как вы подумали наверно, потому что идет отсчет от 0 до 4, а не от 1
ой, извиняюсь

О_о Что это?
Shelena вне форума Ответить с цитированием
Старый 05.11.2010, 18:32   #9
Shelena
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 10
По умолчанию

преподаватель не принял =(
он дооолго пытался разобраться, где ошибка, но так и не понял.
и сказал что надо по-другому... рассматривать только 1 вариант: когда совпадают первые элементы ОДНОЙ строки и ОДНОГО столбца, без разницы какие у них индексы, и их менять.
В процедуре Change нужно менять 2 параметра: номер строки и номер столбца, он так сказал (а было не так чтоли? Оо), типа должно быть
"Procedure Change (i,j: integer);" и т.д., для чего там "var a:tmatr" он не понял %)
Shelena вне форума Ответить с цитированием
Старый 06.11.2010, 17:13   #10
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
он дооолго пытался разобраться, где ошибка, но так и не понял.
преподаватель дуб

первые элементы совпадут ВСЕГДА у первой строки и у первого столбца!!!
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен колонок и рядков массива в С++ Angelic_fiend Помощь студентам 0 31.05.2010 14:19
Удаление строки из двумерного динамического массива hidraulik Общие вопросы C/C++ 0 08.12.2009 10:48
Сортировка двумерного массива(С) Александр Елис Помощь студентам 1 31.10.2009 13:25