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

Сдвиг стоки вниз и Удаление столбцов Матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать функцию заполнения структуры случайными данными http://www.cyberforum.ru/cpp-beginners/thread1089542.html
Написать функцию заполнения структуры случайными данными. помогите...
C++ Нужен взгляд со стороны #include <iostream> #include <iomanip> using namespace std; class myClass { private: int H, W; int** M; public: http://www.cyberforum.ru/cpp-beginners/thread1089533.html
C++ Написать функцию вывода структуры на экран.
5. Написать функцию вывода структуры на экран. Переделать программу Объявить массив из структур. Записать значения в массив с помощью цикла, вывести на экран. с использованием этой функции.
Шаблоны no match for call to C++
Привет всем! вот так написал шаблон template<typename Vertex> void operator ()(Vertex vertex, vector<pair<int, Vertex>>& map) { stack<pair<int, int>> s; vector<pair<int, int>> vec = randVertex(map.second, map); s.push(map); while(true) { if(!vec.empty())
C++ ln^2 и модуль http://www.cyberforum.ru/cpp-beginners/thread1089511.html
Как записать ln2|b-c2|
C++ Минимальное основание системы счисления Доброго времени суток! Пожалуйста помогите сделать задачку: Для введенного числа определить минимальное основание системы счисления, в которой оно может существовать именно в такой записи. Возможно использование символов латинского алфавита в верхнем регистре (‘A‘..’Z‘). подробнее

Показать сообщение отдельно
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
04.02.2014, 23:34     Сдвиг стоки вниз и Удаление столбцов Матрицы
Добрый день! Возник вопрос!
Как правильно сдвигать строчку в матрице? (своего рода сортировка)
Мне нужно указанную строку переместить вниз (например, вторую: это значит, что третья строка станет второй, четвёртая – третьей, и т.д., а вторая строка будет последней).

Я пытался сдвигать типо через свап напоминающую сортировку пузырьком.
C++
1
2
3
4
5
6
7
void Swap( int& a, int& b)
//функция обмена двух переменных
{
    int temp = a;//запоминаем значение первой переменной
    a = b;//первой переменной присваиваем значение второй
    b = temp;//значению второй переменной присваиваем ранее запомненное значение первой
}
т.е.:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void sdvig(matrix &A,int &str)
{   
int n = A.size();
int temp;
for (int k=0;k<n;k++)
for (int i=0;i<n;i++)
 for(int j=0;j<n;j++)
     {
      temp=A[str][i]; // c указанной строки 
          A[str][i]= A[j][i];
          A[j][i]=temp;  
     }
}
Но получается совсем не то, что хочется. Прошу советов.
Думаю, можно еще сделать по виду проще.
Указанную строку push_back() т.е. в конец, и потом erase с начала вектора и первую попавшуюся нужную строчку делет.
Но такой способ я пробовал. Никак не смог добавить копию строки. Очень был бы признателен за объяснение. Как правильнее обращаться с вектором векторов...



2. Вопрос. Удаление стобца от к1 до кn включительно. Не совсем еще понял как, пытаюсь сделать. Пока у меня удалился 1 элемент из 1 строчки и вылезла ошибка.
т.е. я пытался реализовать у себя такое понятие:
т.к. такого понятия столбца, да и тем более удаление стобца там нет, есть строка. Нужно по индексу искать и удалять в строке цифры (типо A[j][K] пройтись по каждой строке и удалить указанный [K] в каждой строке.
полный код:

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include<iostream>
#include<ctime>
#include <iterator>
#include <cmath>
#include <vector>
#include <fstream>
using namespace std;
 
int generation () //генерация рандомных чисел в диапазоне 7-10
{   
    int i,a=7,b=10;
    return i =rand()%(b-a+1)+a;
}
 
 
typedef vector<int> row;
typedef vector<row> matrix; 
void Display( const matrix A, int n) //вывод
{   
    for (int i=0; i<n; i++)
    {   
        for (int j=0; j<n; j++)
        cout << A[i][j]<<'\t';
        cout<<endl;
    }
}
 
void sdvig(matrix &A,int &str)
{   int n = A.size();
   int temp;
 // for (int k=0;k<n;k++)
 
 for (int i=0;i<n;i++)
 
         for(int j=0;j<n;j++)
         {
     
           temp=A[str][i];
           A[str][i]= A[j][i];
           A[j][i]=temp;
         
        }
}
 
int main()
{
    srand(time(NULL));
    setlocale(LC_ALL, "Russian");
    matrix A;
    int row2, col1, col2;
    int n;
    n=generation();
        cout<<" Выполнение задания: "<< endl;
    cout<<" "<< endl;
    cout<<" Размер Матрицы A:"<<"["<<n<<"]"<<"x"<<"["<<n<<"]"<<endl;
    cout<<" "<< endl;
    row Row(n,0);// строка из n нулей
    for (int i=0; i<n; i++)
    { // заполняем очередную строку
        for (int j=0; j<=i; j++)    
        Row[j]=(i-j+1)*(i-j+1);// и добавляем её к матрице
        A.push_back(Row);
    }
    Display(A,n); //матрица на экран
    cout<<" Укажите строку, которую нужно переместить вниз: ";cin>>row2;cout<<endl;
        sdvig(A,row2); //перемещение строки вниз
        Display(A,n); //матрица на экран
        //Delet(); пока не уверен как точно сделать удаление стобца от к1 до кn включительно. Скорее всего т.к. такого понятия столбца там нет, есть строка. Думаю, нужно будет по индексу искать и удалять в строке         цифры (типо A[j][K] пройтись по каждой строке и удалить указанный [K] в каждой строке.
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru