С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Поменять местами элементы указанных столбцов - C++

04.02.2012, 19:31. Просмотров 806. Ответов 16
Метки нет (Все метки)

Дано задание: "Дан двухмерный массив целых чисел. Написать программу которая вводит два целых неотрицат числа соотв номерам столбцов и меняет местами элементы указанных столбцов"
Вот что пока получается

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
//Заполняем двумерный массив с клавиатуры
 
#include <iostream>
#include <iomanip>
#include <conio>
 
using namespace std;
 
 
//функция выводит массив на экран
void printArray(int array[][2], const int row, const int column)
{
    cout << "\n\nPoluchennyj massiv\n";
 
    for(int i = 0; i < row; i++)
    {
        for(int j = 0; j < column; j++)
            cout << setw(4) << array[i][j];
 
        cout << endl;
    }
}
 
int main()
{
 
//просим ввести номера строк
    int stroka1, stroka2;
 
    cout << "Vvedite nomer 1 stolbca";
    cin >>  stroka1;
    cout << "Vvedite nomer 2 stolbca";
    cin >>  stroka2;
    cout << endl;
 
 
 
    const int row = 2, column = 2; //размеры массива
    int array[row][column];        //двумерный массив
 
    for(int i = 0; i < row; i++)   //строки массива
    {
        cout << "Vvodim " << i + 1 << " stroku\n"; //подсказка
 
        for(int j = 0; j < column; j++)   //столбцы массива
        {
            cout << "Vvedite celoe chislo: ";  //выводим подсказку
            cin >> array[i][j];                //запоминаем введенное значение
        }
    }
 
    //инверсия массива
/*void invertArray(int arr[], const int len)
{
    int temp;
 
    for(int i = 0; i < len / 2; i++)
    {
        temp = arr[i];
        arr[i] = arr[len - i - 1];
        arr[len - i - 1] = temp;
    }
}
*/
    printArray(array, row, column);   //печатаем полученный массив
    
    getch();
    return 0;
}
Надергал с интернета, сам в С++ не разбираюсь, кто чем может ..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2012, 19:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять местами элементы указанных столбцов (C++):

Поменять местами элементы первого и последнего столбцов матрицы - C++
2)Задана матрица целых чисел.Поменять местами элементы первого и последнего столбцов.

Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные элементы - C++
Matrix53. Дана матрица размера M × N. Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные...

Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные элементы - C++
помогите дорешать Matrix53. Дана матрица размера M × N. Поменять местами столбец с номером 1 и последний из столбцов, содержащих только...

Поменять местами столбец матрицы с номером 1 и последний из столбцов, содержащий только положительные элементы - C++
Дана матрица размера MxN.Поменять местами столбец с номером 1 и последний из столбцов,содержащий только положительніе елементы.Если...

Поменять местами столбец матрицы с номером 1 и последний из столбцов, содержащий только положительніе элементы - C++
1)Дан целочисленный масив (N&gt;2).Удалить из масива все элементы с нечетными номерами.Условный оператор не использовать (по 1 мерному масиву...

Поменять местами 2 указанных элемента массива - C++
Никак не могу разобраться, как решить эту задачу, простейшее я смог сделать, а дальше не получается. вот сама задача: Ввести массив из...

16
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.02.2012, 19:49 #2
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
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
 
int main()
{
    std::srand(std::time(nullptr));
    const std::size_t rows = 5;
    const std::size_t cols = 5;
    int arr[rows][cols];
    for(auto& i: arr)
    {
        for(auto& j: i)
        {
            j = std::rand() % 21;
            std::cout << std::setw(4) << j;
        }
        std::cout << std::endl;
    }
    std::size_t fst, snd;
    std::cin >> fst >> snd;
    if(std::max(fst, snd) > cols)
    {
        std::cout << "input error" << std::endl;
        return 0;
    }
    for(std::size_t i = 0; i < rows; ++i)
        std::swap(arr[i][fst], arr[i][snd]);
    std::cout << "-------------------" << std::endl;
    for(const auto& i: arr)
    {
        for(const auto& j: i)
            std::cout << std::setw(4) << j;
        std::cout << std::endl;
    }
    return 0;
}
http://liveworkspace.org/code/a5eafe0e332bc7204b2806c584d00ed4
1
fleks84
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 11
04.02.2012, 20:07  [ТС] #3
Супер! Правда у меня на Builder 6 12 ошибок это не умаляет проделанной работы.
Мне бы попроще чего нибудь, профессионалы, примерно так же как оформлено мое первое сообщение.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.02.2012, 20:24 #4
Так пробуйте. Без C++11
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
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
 
int main()
{
    std::srand(std::time(0));
    const std::size_t rows = 5;
    const std::size_t cols = 5;
    int arr[rows][cols];
    for(std::size_t i = 0; i < rows; ++i)
    {
        for(std::size_t j = 0; j < cols; ++j)
        {
            arr[i][j] = std::rand() % 21;
            std::cout << std::setw(4) << arr[i][j];
        }
        std::cout << std::endl;
    }
    std::size_t fst, snd;
    std::cin >> fst >> snd;
    if(std::max(fst, snd) > cols)
    {
        std::cout << "input error" << std::endl;
        return 1;
    }
    for(std::size_t i = 0; i < rows; ++i)
        std::swap(arr[i][fst], arr[i][snd]);
    std::cout << "-------------------" << std::endl;
    for(std::size_t i = 0; i < rows; ++i)
    {
        for(std::size_t j = 0; j < cols; ++j)
            std::cout << std::setw(4) << arr[i][j];
        std::cout << std::endl;
    }
    return 0;
}
Будут ошибки - кидайте.
2
fleks84
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 11
04.02.2012, 20:31  [ТС] #5
Ошибок нет, отлично! Я правильно понимаю что когда указываю номер столбца 1 и 2 то реально он 0 и 1?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.02.2012, 20:44 #6
Цитата Сообщение от fleks84 Посмотреть сообщение
когда указываю номер столбца 1 и 2 то реально он 0 и 1?
Когда вводите 0 и 1, то поменяются 1 и 2, да.
0
fleks84
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 11
04.02.2012, 21:06  [ТС] #7
ПасиБ! Поубирал std:: и вставил using namespace std; - очень даже все красиво стало )

Добавлено через 4 минуты
Финальный вариант
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
#include <iomanip.h>
#include <iostream.h>
#include <conio.h>
 
using namespace std;
 
int main()
{
    srand(time(0));
    const size_t rows = 5;
    const size_t cols = 5;
    int arr[rows][cols];
    for(size_t i = 0; i < rows; ++i)
    {
        for(size_t j = 0; j < cols; ++j)
        {
            arr[i][j] = rand() % 21;
            cout << setw(4) << arr[i][j];
        }
        cout << endl;
    }
    size_t fst, snd;
    cin >> fst >> snd;
    if(max(fst, snd) > cols)
    {
        cout << "input error" << endl;
        return 1;
    }
    for(size_t i = 0; i < rows; ++i)
        swap(arr[i][fst], arr[i][snd]);
    cout << "-------------------" << endl;
    for(size_t i = 0; i < rows; ++i)
    {
        for(size_t j = 0; j < cols; ++j)
            cout << setw(4) << arr[i][j];
        cout << endl;
    }
    getch();
    return 0;
}
0
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
05.02.2012, 00:19 #8
Цитата Сообщение от fleks84 Посмотреть сообщение
ПасиБ! Поубирал std:: и вставил using namespace std; - очень даже все красиво стало )
"очень даже красиво" - это как раз с использованием std:: (более правильно), потому что, как минимум более безопасно в больших проектах...
0
fleks84
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 11
05.02.2012, 10:22  [ТС] #9
Ок, взял на заметку.

Добавлено через 31 минуту
А по этой же программе поможете еще раз?
Надо добавить одну или несколько функций которые будут реализовать работу массива, можно функцию ввода-вывода.
У меня пока выходит такое, но 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
39
40
41
42
43
44
45
46
47
48
#include <iomanip>
#include <iostream>
#include <conio>
using namespace std;
 
int main()
{
    srand(time(0));
    const size_t rows = 5;
    const size_t cols = 5;
    int arr[rows][cols];
 
 
 
    size_t fst, snd;
    cin >> fst >> snd;
    if(max(fst, snd) > cols)
    {
        cout << "input error" << endl;
        return 1;
    }
    for(size_t i = 0; i < rows; ++i)
        swap(arr[i][fst], arr[i][snd]);
    cout << "-------------------" << endl;
    for(size_t i = 0; i < rows; ++i)
    {
        for(size_t j = 0; j < cols; ++j)
            cout << setw(4) << arr[i][j];
        cout << endl;
    }
    printArray(arr, rows, cols);
    getch();
    return 0;
}
 
//печать массива
void printArray(int arr[][], const int rows, const int cols)
{
    for(size_t i = 0; i < rows; ++i)
    {
        for(size_t j = 0; j < cols; ++j)
        {
            arr[i][j] = rand() % 21;
            cout << setw(4) << arr[i][j];
        }
        cout << endl;
    }
}
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.02.2012, 10:35 #10
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
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>
 
template <class Matrix>
void print(const Matrix& arr, const std::size_t& rows, const std::size_t& cols)
{
    for(std::size_t i = 0; i < rows; ++i)
    {
        for(std::size_t j = 0; j < cols; ++j)
            std::cout << std::setw(4) << arr[i][j];
        std::cout << std::endl;
    }
}
 
int main()
{
    std::srand(std::time(0));
    const std::size_t rows = 5;
    const std::size_t cols = 5;
    int arr[rows][cols];
    for(std::size_t i = 0; i < rows; ++i)
    {
        for(std::size_t j = 0; j < cols; ++j)
        {
            arr[i][j] = std::rand() % 21;
            std::cout << std::setw(4) << arr[i][j];
        }
        std::cout << std::endl;
    }
    std::size_t fst, snd;
    std::cin >> fst >> snd;
    if(std::max(fst, snd) > cols)
    {
        std::cout << "input error" << std::endl;
        return 1;
    }
    for(std::size_t i = 0; i < rows; ++i)
        std::swap(arr[i][fst], arr[i][snd]);
    std::cout << "-------------------" << std::endl;
    /*for(std::size_t i = 0; i < rows; ++i)
    {
        for(std::size_t j = 0; j < cols; ++j)
            std::cout << std::setw(4) << arr[i][j];
        std::cout << std::endl;
    }*/
    print(arr, rows, cols);
    return 0;
}
0
fleks84
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 11
05.02.2012, 10:55  [ТС] #11
Я еще не надоел? А можно реализовать swap как функцию?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.02.2012, 11:23 #12
Цитата Сообщение от fleks84 Посмотреть сообщение
А можно реализовать swap как функцию?
C++
1
2
3
4
5
6
7
template <class T>
void my_swap(T& a, T& b)
{
    T c = a;
    a = b;
    b = c;
}
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.02.2012, 11:29 #13
Цитата Сообщение от soon Посмотреть сообщение
tempate <class T>
C++
1
template <class T>
1
soon
05.02.2012, 11:33
  #14

Не по теме:

go, Точно, набрал и не посмотрел. Поправил.

0
fleks84
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 11
05.02.2012, 11:34  [ТС] #15
не) в этой задаче надо swap сделать
0
05.02.2012, 11:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2012, 11:34
Привет! Вот еще темы с ответами:

Дана матрица размера MxN. Поменять местами столбец с номером N и первый из столбцов, содержащих только отрицательные элементы. - C++
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее спасибо: Дана матрица размера MxN. Поменять местами...

В массиве А поменять местами значения 1-го и К-го столбцов - C++
Даны целые массивы A, B и значения К и L (0&lt;=K&lt;=9, 0&lt;=L&lt;=9). Массивы преобразовать следующим образом: в массиве А поменять местами значения...

В матрицах поменять местами значения заданных столбцов - C++
Даны целые массивы A, B и значения К и L (0&lt;=K&lt;=9, 0&lt;=L&lt;=9). Массивы пpеобpазовать следующим обpазом: в массиве А поменять местами значения...

Поменять местами первый и последний элементы. Все единичные элементы массива заменить нулями - C++
Люди добрые, помогите плиз с задачками. В массиве Р, размерности 150 150. поменять местами первый и последний элементы; все единичные...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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