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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 19:44   #1
Wia
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 79
Восклицание Двумерные массивы на С++

Помогите решить задачу на С++.Тема:Двумерные массивы.


Дана действительная квадратная матрица. Упорядочить по возрастанию элементы р-ой строки.
Wia вне форума Ответить с цитированием
Старый 30.03.2009, 19:45   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

И в чем проблема? Ничем не отличается от обычной сортировки массива.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.03.2009, 20:13   #3
Wia
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 79
По умолчанию

не понимаю эту тему.нужно упорядочить одну строку или как?
Wia вне форума Ответить с цитированием
Старый 30.03.2009, 20:18   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Упорядочить по возрастанию элементы р-ой строки
p-я строка. Одна строка. Берете ее и сортируете.
Все то же самое, что и с одномерным массивом, только элемент будет не mas[i], а mas[p][i].
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.03.2009, 20:57   #5
Wia
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 79
По умолчанию

Можно решить эту задачу методом пузырька?подскажите пожалуйста...Может так(исправьте,плз)
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

    int a[10][10],n,i,p,y,b;
    cout<<"n";
    cin>>n;
    for(p=0;p<n;p++)
    {

                    cout<<"a["<<p<<"]["<<i<<"]";
                    cin>>a[p][i];
    }
    for(i=0;i<n;i++)
    for(p=0;p<n;p++)
    if(a[p][i]>a[p+1][i])
    {
                         b=a[p][i];
                         a[p][i]=a[p+1][i];
                         a[p+1][i]=b;
    }
    for(p=0;p<n;p++)
    cout<<a[p][i];
    return 0;                     
    system("PAUSE");
    return EXIT_SUCCESS;
}
Wia вне форума Ответить с цитированием
Старый 30.03.2009, 21:05   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Можно решить эту задачу методом пузырька?
Метод сортировки можно взять любой.
Цитата:
Может так
Нет, не так.
Код:
for(p=0;p<n;p++)
    {

                    cout<<"a["<<p<<"]["<<i<<"]";
                    cin>>a[p][i];
    }
И откуда здесь берется i?

Сначала заполняете матрицу. Про p забудьте.
Когда заполните, просите ввести p.
И уже потом сортируете p-ю строку.

То, что написали вы, решением задачи не является.
Исправить в данном случае, значит полностью переписать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.03.2009, 21:08   #7
Wia
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 79
По умолчанию

не могли бы вы написать примерно как это будет?
Wia вне форума Ответить с цитированием
Старый 30.03.2009, 21:17   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
не могли бы вы написать примерно как это будет?
А какой пункт вам непонятен?

1. Заполняете матрицу.
Здесь нужно просто заполнить матрицу. Вручную, или случайными числами. Как угодно.
2. Ввести p.
3. Отсортировать строку.
Здесь вы пишете код для сортировки одномерного массива. Имя массива должно быть таким же, как и у матрицы.
А затем просто перед индексом добавляете еще один - [p].
То есть было (для вектора) a[i], а стало - a[p][i].

Если до сих пор непонятно, то напишите первые два пункта и еще сортировку одномерного массива. И я покажу, что нужно исправить.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.03.2009, 22:12   #9
Wia
Пользователь
 
Регистрация: 06.12.2008
Сообщений: 79
По умолчанию

первые два пункта и еще что-то из третьего:
так?

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
const int n=3;
double a[n][n];
int i,j,p;
cout<<"Vvedite matricy";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<"Vvedite p";
cin>>p;
for(p=0;p<n;p++)
{
                cout<<"a["<<p<<"]["<<i<<"]";
                cin>>a[p][i];
}
for(i=1;i<n;i++)
for(p=0;p<n;p++)
if(a[i]>a[i+1])
 ...
    system("PAUSE");
    return EXIT_SUCCESS;
}
Wia вне форума Ответить с цитированием
Старый 31.03.2009, 13:57   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Все правильно до ввода p.
А теперь смотрите как все просто:
Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
const int n=3;
double a[n][n],tmp;
int i,j,p,k;
cout<<"Vvedite matricy";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<"Vvedite p";
cin>>p;  // ввели p

// выведем исходную матрицу
cout<<"Ishodnaya matrica:\n";
for(i=0;i<n;i++)
 {
  for(j=0;j<n;j++)
   {
    cout.width(4);
    cout<<a[i][j];
   }
  cout<<endl;
 }

// теперь сортируем
for(i=0;i<n-1;i++)
 {
  for(j=i+1,k=i;j<n;j++)
   if(a[p][j]<a[p][k]) k = j;
  tmp = a[p][k];
  a[p][k] = a[p][i];
  a[p][i] = tmp;
 }

// и снова выводим
cout<<"Novaya matrica:\n";
for(i=0;i<n;i++)
 {
  for(j=0;j<n;j++)
   {
    cout.width(4);
    cout<<a[i][j];
   }
  cout<<endl;
 }


    system("PAUSE");
    return EXIT_SUCCESS;
}
========================
Как я и говорил, это ничем не отличается от сортировки одномерного массива.
Код:
for(i=0;i<n-1;i++)
 {
  for(j=i+1,k=i;j<n;j++)
   if(a[p][j]<a[p][k]) k = j;
  tmp = a[p][k];
  a[p][k] = a[p][i];
  a[p][i] = tmp;
 }
Если вы уберете здесь [p], то как раз и получите такую сортировку.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 31.03.2009 в 15:24. Причина: опечатка
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы в Си. necky Помощь студентам 2 17.05.2009 19:35
Двумерные массивы angelangel Общие вопросы C/C++ 2 22.12.2008 15:47
C++ Двумерные массивы АНЮТКА555 Помощь студентам 1 10.12.2007 12:42
Двумерные массивы Nata!!!@ Помощь студентам 15 05.12.2007 16:15