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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal]получение вектора из матрицы, получение вектора из матрицы 
:(
    Опции темы
topic
Дата 16.2.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ нужна помощь в решении этот задачи .... точнее я ее вообще не могу сделать ... ничего    smile 

Тема: получение вектора из матрицы. 
Цель: Научиться записывать подпрограмму для получения вектора из матрицы. Из матрицы А по заданному правилу получить компонент вектору Х. 

В матрице А найти первую за порядком строку с наибольшей суммой его элементов и в качестве компонентa векторa Х принять расположенные по увеличению элементы этой строки. 

PS я Вас очень прошу помочь решить мне эту задачу ....  smile 
PM MAIL   Вверх
topic
Дата 17.2.2009, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



помогите пожалуйста .....
PM MAIL   Вверх
Dmi3ev
Дата 17.2.2009, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



Цитата

Язык написаня Pascal

вот на с++, подумай немного...
Код

//---------------------------------------------------------------------------
#include <iostream.h>
#include <math.h>
#include <vector>
#include <algorithm>

int main()
{
int **a;
int n,m;

cout<<"Enter number of rows: ";
cin>>n;
cout<<"Enter number of coloumns: ";
cin>>m;
cout<<endl;

a=new int*[m];
for (int i=0; i<m; i++)
 a[i]=new int[n];
randomize();
cout<<"YOUR MATRIX: "<<endl;
for (int i=0; i<n; i++)
 {
  for (int j=0; j<m; j++)
   {
    *(*(a+j)+i)=random(100)-50;
    cout<<*(*(a+j)+i)<<";";
   }
   cout<<endl;
 }

int maxind=0;
int maxsum=0;
for (int j=0; j<m; j++)
 maxsum+=*(*(a+j));
int tempsum=0;
for (int i=1; i<n; i++)
 {
  for (int j=0; j<m; j++)
   {
    tempsum+=*(*(a+j)+i);
   }
  if (tempsum>maxsum)
    {
     maxsum=tempsum;
     maxind=i;
    }
  tempsum=0;
 }
cout<<"Max sum in row "<<maxind+1<<". Max sum = "<<maxsum<<endl;
cout<<"Vector: "<<endl;
vector<int> myv;
for (int j=0; j<m; j++)
 myv.push_back(*(*(a+j)+maxind));
sort(myv.begin(), myv.end());

for(int i=0; i<myv.size(); i++)
 cout<<myv[i]<<";";
cout<<endl;

system("pause");
        return 0;
}
//---------------------------------------------------------------------------



--------------------

PM MAIL   Вверх
topic
Дата 17.2.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хм... я не знаю С ++  smile 

PS Я знаю что я  smile  smile  футка ) 
PM MAIL   Вверх
topic
Дата 23.2.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну помогите .... пожалуйста , а то у меня ничего не получается .... 
PM MAIL   Вверх
ИванМ
Дата 23.2.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

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



На Delphi будет так:
Код


program Vector;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  N = 5; {количество столбцов}
  M = 3; {количество строк}
type
    TMatrix = array[1..N, 1..M] of integer;
    TVector = array[1..N] of integer;

{поиск строки с наибольшей суммой элементов}
function GetMaxRow(matrix: TMatrix): integer;
var
  i, j, maxv, curv, maxr: integer;
begin
  for i:=1 to M do
  begin
    curv:=0;
    for j:=1 to N do
    begin
      curv:=curv+matrix[j, i];
    end;
    if curv>maxv then
    begin
      maxv:=curv;
      maxr:=i;
    end;
  end;
  Result:=maxr;
end;

{сортировка массива по возрастанию}
procedure SortUp(var ar: TVector);
var temp, minval, minind, i, j: Integer;
begin
     for i:=1 to N do
     begin
         minval:= ar[i];
         minind:= i;
         for j:=i to N do
         begin
              if ar[j]<minval then
              begin
                   minval:=ar[j];
                   minind:=j;
              end;
         end;
         temp:= ar[i];
         ar[i]:= minval;
         ar[minind]:=temp;
     end;
end;

{получение вектора из матрицы}
procedure SetVector(matrix: TMatrix; row: integer; var vector: TVector);
var i, j: integer;
begin
  for i:=1 to N do
  begin
    vector[i]:=matrix[i][row];
  end;
  SortUp(vector);
end;

begin
{здесь напишешь функции заполнения и вывода массива на экран}
end.


Чтобы работало на паскале измени
Код

{$APPTYPE CONSOLE}

uses
  SysUtils;


на 
Код

uses Crt;


Еще. Отсортировать лучше методом пузырька, но я не вспомнил, как он выглядет, а на форуме ошибка.

Это сообщение отредактировал(а) ИванМ - 23.2.2009, 21:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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