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

нужна функция для обмена строк двумерного массива на плюсах - C++

Восстановить пароль Регистрация
 
taldarimm
1 / 1 / 0
Регистрация: 31.01.2012
Сообщений: 5
31.01.2012, 22:35     нужна функция для обмена строк двумерного массива на плюсах #1
доброго времени суток нужна ваша помощь в решении задачи
вот здесь она уже решена но это c# а мне нужно точно такаяже прога на плюсах
http://www.cyberforum.ru/csharp-net/...ead406369.html
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2012, 22:35     нужна функция для обмена строк двумерного массива на плюсах
Посмотрите здесь:

C++ Функция fill Для двумерного массива
C++ Для заданного двумерного массива из n строк и m столбцов:
C++ Написать функцию для обмена строк двумерного массива
C++ Напишите функцию для обмена строк двумерного массива и с ее помощью отсортируйте массив с элементами третьего столбика
Функция для двумерного массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stawerfar
 Аватар для stawerfar
140 / 54 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
31.01.2012, 23:50     нужна функция для обмена строк двумерного массива на плюсах #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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<iostream>
#include<iomanip>
int main(void)
{
 
    int mas[][5] ={ { 1, 2, 3, 4, 5 }, { 11, 22, 33, 44, 55 }, { 6, 7, 8, 9, 0 }, { 66, 77, 88, 99, 00 }, { 1, 3, 5, 7, 9 } };
    //показываю не отвортерованые массивы
    for(int i=0;i<5;i++)
    {
        for(int f=0;f<5;f++)
        {
            std::cout<<mas[i][f]<<' ';
            if(i%2==0)
            {std::cout<<' ';}
        }
        std::cout<<std::endl;
    }
    
    int** mas_pt= new int*[5];
    for(int i=0;i<5;i++)
    {
        mas_pt[i]=new int[5];
        for(int d = 0;d<5;d++)
        {
            mas_pt[i][d]= mas[i][d];    
        }
    }
    //сортировака указателей по третему стоблцу
    for(int i =0;i<4;i++)
    {   for(int k=i+1;k<5;k++)
        {
            if(mas_pt[i][2]>mas_pt[k][2])
            {
                int* temp=mas_pt[i];
                mas_pt[i] = mas_pt[k];
                mas_pt[k] = temp;
            }
        }
    }
    //вывод на экран отсортированного массива
    std::cout<<std::endl;
    for(int i=0;i<5;i++)
    {
        for(int f=0;f<5;f++)
        {
            std::cout<<std::setw(1)<<mas_pt[i][f]<<' ';
            if(i<3)
            {std::cout<<' ';}
        }
        std::cout<<std::endl;
    }
    system("pause");
return 0;
}
Согласен грязновато написано, но рабочий код есть теперь можно заняться оптимезацией....убрать лишнее.
P.S: писав в Visual Studio 10 так что если что то не будет работать можно что нибудь придумать.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.02.2012, 00:09     нужна функция для обмена строк двумерного массива на плюсах #3
Цитата Сообщение от taldarimm Посмотреть сообщение
нужна функция для обмена строк двумерного массива на плюсах
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
#include <iostream>
#include <iomanip>
 
template <class T>
void my_swap(T& a, T& b)
{
    T c = a;
    a = b;
    b = c;
}
 
template <class Iterator>
void swap_rows
(
    Iterator first1, const Iterator& last1,
    Iterator first2, const Iterator& last2
)
{
    while((first1 != last1) && (first2 != last2))
        my_swap(*first1++, *first2++);
}
 
int main()
{
    const std::size_t rows = 4;
    const std::size_t cols = 5;
    int arr[rows][cols] = { { 1,  2,  3,  4,  5  },
                            { 6,  7,  8,  9,  0  },
                            { -1, -2, -3, -4, -5 },
                            { -6, -7, -8, -9, 0  } };
    for(const auto& i: arr)
    {
        for(const auto& j: i)
            std::cout << std::setw(4) << j;
        std::cout << std::endl;
    }
    std::cout << std::endl;
    swap_rows
    (
        *arr,       *arr + cols,
        *(arr + 2), *(arr + 2) + cols
    );
    swap_rows
    (
        *(arr + 1), *(arr + 1) + cols,
        *(arr + 3), *(arr + 3) + cols
    );
    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/4b382a...19042e9d21b660
taldarimm
1 / 1 / 0
Регистрация: 31.01.2012
Сообщений: 5
01.02.2012, 01:49  [ТС]     нужна функция для обмена строк двумерного массива на плюсах #4
спасибо сам я работаю (вернее учусь ) в devcpp но думаю подогнать прогу ума хватит.. а если не хватит еще поговорим ))

Добавлено через 2 минуты
работает !!!

Добавлено через 3 минуты
вот только если не трудно прокоментите как оно работает ) мне надо вывод к лабе написать
Цель: Организовать обработку массивов с использованием функций, научиться передавать массивы как параметры функций.

вывод типа : я молодец в ходе выполнения лабы я научился ..... не катируется буду сочинять )

Добавлено через 21 минуту
сразу первый вопрс (думаю грамотный )
в чем писалась програмулина dev? visual? LWS ?
ибо
вторая прога чет на int main матюгается хотя его там даже нет


[Build Error] [massive_main.o] Error 1


`int main()' redeclared as different kind of symbol
int main обьявлена в разных видах символа (чесно ниче не понял )


ISO C++ forbids declaration of `i' with no type
запрещает представлять 'i' без типа

это еще не все на что он матюкается
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
01.02.2012, 02:08     нужна функция для обмена строк двумерного массива на плюсах #5
taldarimm, значит ваш компилятор не поддерживает новый стандарт. Забейте, вам нужна только функция, верно? Ну дак она в строках ##4 - 21
Yandex
Объявления
01.02.2012, 02:08     нужна функция для обмена строк двумерного массива на плюсах
Ответ Создать тему
Опции темы

Текущее время: 03:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru