Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KulguninArtur
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 4
#1

В Матрице A(N,M) расположить сверху-вниз строки - C++

23.05.2013, 12:40. Просмотров 525. Ответов 6
Метки нет (Все метки)

нужно в матрице A(N,M) расположить сверху-вниз строки в порядке убывания их максимальных элементов и разместить их в матрице X(N,M).

Пытаюсь писать сам, но постоянно ошибки синтаксиса, не понимаю принципа и алгоритма. На С толком не работал. Разве что Arduino SDK (на C и Java), но там свои библиотеки.

Вот что пишут на локальных форумах:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Funct(int** matr, int n, int m)
{
    int i, j, max;
    int A[n][n];
    int i=1,j,k,p=n/2;
    for(i = 0; i < n; ++i)
    {
        max ^= max;
        for(j = 1; j < m; ++j)
 
 for(k=1;k<=p;k++) {
 for (j=k-1;j<n-k+1;j++) A[k-1][j]=i++;
 for (j=k;j<n-k+1;j++) A[j][n-k]=i++;
 for (j=n-k-1;j>=k-1;--j) A[n-k][j]=i++;
 for (j=n-k-1;j>=k;j--) A[j][k-1]=i++;
 
  while(i1 < Pen && j2 < Pen)
        {
            sum1 += matrix[i1][j1];
            sum2 += matrix[i2][j2];
}
На местных форумах мне вообще подобный бред отписывали. Не понимаю причем тут замена от первого элемента до последнего в строчке?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 12:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В Матрице A(N,M) расположить сверху-вниз строки (C++):

У меня задача,в матрице,заменить первый отрицательный элемент максимальным элементом. Проходить по матрице слева направо,сверху вниз - C++
У меня задача,в матрице,заменить первый отрицательный элемент максимальным элементом. Проходить по матрице слева направо,сверху вниз. Я...

Сортировка двумерного массива. Строки сортируются слева направо, а столбцы сверху вниз - C++
Требуется отсортировать двумерный массив по строкам и по столбцам. Размер массива NxN. Если можно, с комментариями. Строки сортируются...

Сортировка линейного списка слиянием сверху вниз - C++
«Функция merge должна сливать список, на который указывает a, со списком, на который указывает b, с помощью вспомогательного указателя с....

Отобразить элементы матрицы зеркально сверху вниз - C++
Дана квадратная матрица (задаётся через rand()) Отобразить зеркально сверху вниз. Вывести на экран начальный и конечный варианты...

Двумерный массив заполняется слева направо и сверху вниз - C++
Напишите программу, в которой двумерный массив 5х5 заполняется слева направо и сверху вниз возрастающими нечетными числами от 1 до 49....

Поменять местами первую строку и строку, в которой находится первый нулевой элемент. Принять, что массив просматривается слева направо и сверху вниз. - C++
Поменять местами первую строку и строку, в которой находится первый нулевой элемент. Принять, что массив просматривается слева направо и...

6
KulguninArtur
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 4
03.06.2013, 09:55  [ТС] #2
Помогите с алгоритмом пожалуйста.
0
Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
03.06.2013, 12:53 #3
Написал, как можно проще:
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int i, j, n, m, A[n][m], X[n][m], max[n]; //ГђГ*çìåð Г¬Г*òðèöû
    cout << "Strok: "; cin >> n;
    cout << "Stolbtsov: "; cin >> m;
    for (i=0; i<n; i++) for (j=0; j<m; j++) cin >> A[i][j]; //Г‡Г*ïîëГ*ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ*(Г¬Г*òðèöû)
    for (i=0; i<n; i++) //Ïîèñê Г*Г*èáîëüøåãî ýëåìåГ*ГІГ* ïîñòðî÷Г*Г®
    {   
      j=0; max[i]=A[i][j];
      for (j=0; j<m; j++) if (A[i][j]>max[i]) max[i]=A[i][j]; 
    }
    int mem[i],k;
    for (i=0; i<n; i++) mem[i]=max[i]; //êîïèïðîâГ*Г*ГЁГҐ èñõîäГ*îãî Г°Г*ñïîëîæåГ*ГЁГї Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*ûõ ГЅГ«-òîâ
    for (i=0; i<n; i++) //ñîðòèðîâêГ* ГЇГ® óáûâГ*Г*ГЁГѕ
      for (j=i+1; j<n; j++)
        if (max[i]<max[j])
        {
            int buf=max[i];
            max[i]=max[j];
            max[j]=buf;                 
        }       
    for (i=0; i<n; i++) //ñîçäГ*Г*ГЁГҐ Г¬Г*òðèöû Г•
        for (j=0; j<n; j++)
            if (max[i]==mem[j]) for (k=0; k<m; k++) X[i][k]=A[j][k]; 
    cout<<"///////////////"<<endl; //Âûâîä Г*Г* ГЅГЄГ°Г*Г*
    for (i=0; i<n; i++) for (j=0; j<n; j++) 
    {
       cout << X[i][j] << " ";
       if (j==m-1) cout << endl;
    }              
    system("PAUSE");
    return EXIT_SUCCESS;
}
Компилировал в Dev C++
1
KulguninArtur
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 4
03.06.2013, 22:49  [ТС] #4
Цитата Сообщение от Naudiz Посмотреть сообщение
Написал, как можно проще:
Компилировал в Dev C++
Огромное спасибо
Но к сожалению не могу откомпилировать приложение при отладке. Постоянно ошибка. Тоже пытаюсь работать в Dev-C++
0
Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
04.06.2013, 08:11 #5
KulguninArtur, проверь версию Dev-C++ и компилятора, я пользуюсь 4.9.9.2. Возможно у тебя старее или новее (форк). Выложи скриншот с сообщением об ошибках, разберемся.
Вот откомпилированная программа:
1
Вложения
Тип файла: zip zadacha.zip (123.8 Кб, 5 просмотров)
KulguninArtur
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 4
04.06.2013, 14:59  [ТС] #6
Цитата Сообщение от Naudiz Посмотреть сообщение
Возможно у тебя старее или новее
Благодарю. Была ошибка "Declaration syntax error" из-за неправильного использования using namespace str.
Теперь попробую залить скетч на Arduino (C), чтобы выводить эту матрицу на дисплей "1602 LCD Display". Чтобы при нажатии кнопки (2 сек), на дисплее появлялась случайная матрица с элементами убывающими сверху вниз. Так как дисплей имеет 2 строки, поэтому матрица будет 2*n либо получится сделать попиксельно, чтобы увеличить количество символов на строчку, но собственно нужна будет и специфическая кодировка, но с этим справимся.
На чистом C++ не работал практически, да и с математикой и логикой большие проблемы (в школе не учился толком).
А по сути, еще раз большое спасибо, будем пробовать и реализовывать. Возможно кому-то пригодится данный топик.

Добавлено через 46 минут
Хотя не получается. Приложение дает неправильную структуру. Не выводятся построчно максимальные элементы. Как выглядит результат:
Приложение не выполняет поставленной задачи
[IMG]http://www.****************/thumbs/4846_3334.jpg[/IMG]
0
Naudiz
14 / 12 / 1
Регистрация: 04.11.2011
Сообщений: 137
04.06.2013, 18:22 #7
KulguninArtur, приложение с точностью выполняет указанную вами задачу, а именно:

Цитата Сообщение от KulguninArtur Посмотреть сообщение
нужно в матрице A(N,M) расположить сверху-вниз строки в порядке убывания их максимальных элементов и разместить их в матрице X(N,M).
Строки располагаются в порядке убывания их максимальных элементов. Вы задали матрицу 4х4 (4 столбца на 4 строки) Первые 4 элемента, которые Вы ввели построчно - это первая строка, следующие 4 значения - вторая строка и т.д. На вашем скриншоте результат, как раз новая матрица Х, в которой строки расположены сверху-вниз в порядке убывания их максимальных элементов.
Вообщем(см. свой скрин):
первая строка - 6 3 8 5 : максимальный элемент - 8
вторая - 7 4 2 1 : максимальный элемент - 7
3я - 6 2 4 6 : максимальный элемент - 6
4я - 8 9 4 3 : максимальный элемент - 9

Максимальные элементы в порядке убывания: 9 8 7 6. Первый элемент - 9 из 4й строки матрицы А, значит именно эта строка в матрице Х будет первой, следующий второй по порядку 8 находится в первой строке матрицы А, следовательно в матрице Х данная строка будет второй и т.д. Думаю логика ясна.


Цитата Сообщение от KulguninArtur Посмотреть сообщение
Не выводятся построчно максимальные элементы.
В задании ни слова об этом Читайте внимательнее.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 18:22
Привет! Вот еще темы с ответами:

Переместить вниз строки массива, в которых сумма элементов строки меньше ноля - C++
есть двумерный массив. нужно переставить строки вниз, у которых сумма элементов строк меньше ноля. прикрепляю два рисунка. Вот...

в матрице, строку где все числа четные, расположить в обратном порядке. - C++
дана матрица целых чисел. строки, где все элементы четные, расположить в обратном порядке. помогите студенту получить зачет. 1 лаба...

Элементы заданного одномерного массива построчно расположить в квадратной матрице соответствующего размера - C++
Элементы одномерного массива A(n2) построчно расположить в матрице B(n,n). Добавлено через 43 минуты помогите написать программу...

Строки (Расположить слова строки в порядке, обратном исходному) - C++
Здравствуйте,помогите пожалуйста. Задание: Расположить слова строки в порядке, обратном исходному.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
04.06.2013, 18:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru