Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С матрицами интересная задача 
:(
    Опции темы
Япончик
Дата 12.11.2005, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Такая задача:
Произвести транспонирование целочисленной матрицы (ввод, вывод, транспонирование производить в отдельных функциях) и вывести номера строк, в которых значения элементов убывают, и номера столбцов, в которых они возрастают.
PM MAIL   Вверх
Pakshin A. S.
Дата 13.11.2005, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 5
Всего: 61



Модератор: укажите язык программирования, на котором желаете получить ответ. smile
PM   Вверх
darkart
Дата 13.11.2005, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Для Pascal:
Код

program Matrix2;
const
  n=3;{размерность матрицы}
type
  TMatrix=array[1..n,1..n] of integer;
var
  Matrix:TMatrix;
procedure InputMatrix(var Matrix:TMatrix);
{процедура ввода}
var
  i,j:integer;
begin
  for i:=1 to n do
  begin
    for j:=1 to n-1 do
      read(Matrix[i,j]);
    readln(Matrix[i,n]);
  end;
end;
procedure PrintMatrix(var Matrix:TMatrix);
{процедура вывода матрицы}
var
  i,j:integer;
begin
  for i:=1 to n do
  begin
    for j:=1 to n-1 do
      write(Matrix[i,j],' ');
    writeln(Matrix[i,n]);
  end;
end;
function Transposing(var Matrix:TMatrix):TMatrix;
{функция возращает транспонированную матрицу}
var
  i,j:integer;
begin
  for i:=1 to n do
    for j:=1 to n do
      Transposing[i,j]:=Matrix[j,i];
end;
procedure PrintDecreaseStrings(var Matrix:TMatrix);
{печать номеров убывающих строк}
var
  i,j:integer;
begin
  writeln('Numbers of a decrease strings:');
  for i:=1 to n do
  begin
    j:=1;
    while(j<n) and (Matrix[i,j]>Matrix[i,j+1]) do
      inc(j);
    if j=n then writeln(i);
  end;
end;
procedure PrintGrowColumns(var Matrix:TMatrix);
{печать номеров возрастающих столбцов}
var
  i,j:integer;
begin
  writeln('Numbers of a grow columns:');
  for j:=1 to n do
  begin
    i:=1;
    while(i<n) and (Matrix[i,j]<Matrix[i+1,j])do
      inc(i);
    if i=n then writeln(j);
  end;
end;
begin
  writeln('Please enter a matrix(',n,'x',n,'):');
  InputMatrix(Matrix);
  writeln('Source matrix:');
  PrintMatrix(Matrix);
  Matrix:=Transposing(Matrix);
  writeln('Transposed matrix:');
  PrintMatrix(Matrix);
  {вычисление идет для транспонированной матрицы}
  PrintGrowColumns(Matrix);
  PrintDecreaseStrings(Matrix);
  writeln('ok');
  readln;
end.


PM MAIL WWW ICQ Skype GTalk   Вверх
Япончик
Дата 13.11.2005, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



извините, СИ++
smile
PM MAIL   Вверх
darkart
Дата 13.11.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Вроде бы так:
Код

#include<iostream.h>
const int n=3;//размерность матрицы
void InputMatrix(int Matrix[n][n])
//ввод матрицы
{
    cout<<"Please enter a matrix("<<n<<"x"<<n<<")\n";
    for (int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>>Matrix[i][j];
}
void PrintMatrix(int Matrix[n][n])
//печать матрицы
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n-1;j++)
            cout<<Matrix[i][j]<<" ";
        cout<<Matrix[i][n-1]<<"\n";
    }
}
void Transposing(int Matrix[n][n])
//транспонирование матрицы
{

    int i,j,TempMatrix[n][n];
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            TempMatrix[i][j]=Matrix[j][i];
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            Matrix[i][j]=TempMatrix[i][j];
}
void PrintGrowColumns(int Matrix[n][n])
//печать номеров возрастающих столбцов
{
    cout<<"Numbers of a grow columns:\n";
    for(int j=0;j<n;j++)
    {
        int i=0;
        while(i<n-1&&Matrix[i][j]<Matrix[i+1][j])i++;
        if(i==n-1)cout<<j+1<<"\n";
    }
}
void PrintDecreaseStrings(int Matrix[n][n])
//печать номеров убывающих строк
{
    cout<<"Numbers of a decrease strings:\n";
    for(int i=0;i<n;i++)
    {
        int j=0;
        while(j<n-1&&Matrix[i][j]>Matrix[i][j+1])j++;
        if(j==n-1)cout<<i+1<<"\n";
    }
}
int main()
{
    int Matrix[n][n];
    InputMatrix(Matrix);
    cout<<"Source matrix:\n";
    PrintMatrix(Matrix);
    Transposing(Matrix);
    cout<<"Transposed matrix:\n";
    PrintMatrix(Matrix);
                //вычисление для транспонированной матрицы
    PrintDecreaseStrings(Matrix);
    PrintGrowColumns(Matrix);
    return 0;
}

PM MAIL WWW ICQ Skype GTalk   Вверх
S.A.P.
Дата 13.11.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 1
Всего: 71



Вот транспонирование без временной матрицы ( когда то задачу такую делал )
Код

    const int m = 5;
    int arr[m][m] = {{1, 2, 3, 4, 5},
                     {6, 7, 8, 9, 10},
                     {11,12,13,14,15},
                     {16,17,18,19,20},
                     {21,22,23,24,25}};
    
    int temp;
    
    for ( int i = 0; i < m; i++ )
        for (int  j = 0; i >= j; j++ ){
            temp = arr[i][j];
            arr[i][j] = arr[j][i];
            arr[j][i] = temp;
        }


Это сообщение отредактировал(а) Perchilla - 13.11.2005, 11:11
PM MAIL   Вверх
St. Andrew
Дата 13.11.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 28.3.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 8



Цитата
С матрицами интересная задача

Задача просто завораживает своей неповторимой уникальностью. smile

Это сообщение отредактировал(а) St. Andrew - 13.11.2005, 13:37
--------------------
Оглянитесь вокруг! В мире так много прекрасного!
PM MAIL WWW ICQ   Вверх
Япончик
Дата 13.11.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Цитата(St @ 13.11.2005, 13:36)
Цитата
С матрицами интересная задача

Задача просто завораживает своей неповторимой уникальностью. smile

smile ну кому как...
PM MAIL   Вверх
darkart
Дата 13.11.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Цитата
Вот транспонирование без временной матрицы

smile Каюсь... smile Исправляюсь... smile Получите...
Код

void Transposing(int Matrix[n][n])
//транспонирование матрицы
{

    int i,j;
    for(i=0;i<n;i++)
        for(j=0;j<i;j++)
        {
            Matrix[i][j]=Matrix[i][j]+Matrix[j][i];
            Matrix[j][i]=Matrix[i][j]-Matrix[j][i];
            Matrix[i][j]=Matrix[i][j]-Matrix[j][i];
        }
}


Это сообщение отредактировал(а) darkart - 13.11.2005, 14:57
PM MAIL WWW ICQ Skype GTalk   Вверх
Шпионка
Дата 12.12.2005, 14:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











smile Ребят , помогите пожалуйста решить задачку..очень срочно нужно на завтра ... чтобы получить упв!!! сразу заранее огромное спасибо
задача: составить программу написания транспонирования матрицы . основная программа должна содержать вывод только процедур.

ПОЖАЛУСТА!!!!!!не игнорируйте мой пост!... smile smile
  Вверх
S.A.P.
Дата 12.12.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 1
Всего: 71



Объясни что такое
Цитата
вывод только процедур.


Добавлено @ 14:46
И какой язык (похоже паскаль smile ).
PM MAIL   Вверх
darkart
Дата 12.12.2005, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Вариант на паскаль(Pascal):
Код

program TrMatr;
const
  n=4;{размерность}
type
  TMatrix=array[1..n,1..n] of integer;
procedure InputMatrix(var Matrix:TMatrix);
{ввод матрицы}
var
  i,j:integer;
begin
  writeln('Please enter a matrix(',n,'x',n,'):');
  for i:=1 to n do
  begin
    for j:=1 to n-1 do
      read(Matrix[i,j]);
    readln(Matrix[i,n]);
  end;
end;
procedure PrintMatrix(var Matrix:TMatrix);
{печать матрицы}
var
  i,j:integer;
begin
  for i:=1 to n do
  begin
    for j:=1 to n-1 do
      write(Matrix[i,j],' ');
    writeln(Matrix[i,n]);
  end;
end;
procedure Transpossing(var Matrix:TMatrix);
{транспонирование матрицы}
var
  i,j:integer;
  tmp:integer;
begin
  for i:=1 to n do
    for j:=i+1 to n do
    begin
      tmp:=Matrix[i,j];
      Matrix[i,j]:=Matrix[j,i];
      Matrix[j,i]:=tmp;
    end;
end;
var
  Matrix:TMatrix;
begin
  InputMatrix(Matrix);
  writeln('Source matrix:');
  PrintMatrix(Matrix);
  Transpossing(Matrix);
  writeln('Matrix after transpossing:');
  PrintMatrix(Matrix);
  readln;
end.

PM MAIL WWW ICQ Skype GTalk   Вверх
sergejzr
Дата 12.12.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
шпионка
Дата 12.12.2005, 18:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











smile БОЖЕ МОЙ!!! спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо спасибо
вы меня очень приочень выручили!!!!!!
ВЫ СУПЕР!!!!!!!!!!!!!!!!!!!

  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.