Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 18.10.2014
Сообщений: 16
1

Написать функцию, которая принимает указатель на небольшой 2х мерный массив int значениями

18.10.2014, 09:59. Показов 1629. Ответов 5
Метки нет (Все метки)

Подскажите пожалуйста, надо написать функцию, которая принимает указатель на небольшой 2х мерный массив int значениями (5 на 2) и сортирует его. Вот тут несколько запутался с указателями.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    void Bsort(int *S)
    {
        int temp, tempi;
        for (int i = 0; i <= 4; i++){
            for (int j = 4; j>i; j--){
                if (&S[j] < &S[j - 1])
                {
                    temp = *S[j][0];
                    *S[j][0] = *S[j - 1][0];
                    *S[j - 1][0]= temp;
 
                    tempi = *S[j - 1][1];
                    *S[j - 1][1] = *S[j][1];
                    *S[j][1] = tempi;
                }
            }
        }
    }
Visual ругается, что "выражение должно иметь тип указателя на объект" на [0] и [1] в индексах. Что это значит?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2014, 09:59
Ответы с готовыми решениями:

Написать функцию incPtr, которая принимает указатель на int, и увеличивает число на 1
здравствуйте есть такая задача Напиши ф-цию incPtr, которая принимает указатель на int, и...

Указатель на функцию, которая принимает в качестве параметра указатель на массив
я не понимаю. вроде делаю правильно, но выходит ошибка. есть функция. int foo(int *mas){};...

Написать функцию, которая принимает указатель на 2 последовательности и печатает номер вхождения s1 в s2
написать функцию, которая принимает указатель на 2 ленты и печатает номер вхождение с s2 в s1 для...

Написать функцию, которая принимает указатель на переменную и присваивает ей модуль самой себя.
Задача 1. Написать функцию, которая принимает указатель на переменную и присваивает ей модуль...

5
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16831 / 6709 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.10.2014, 10:13 2
Зачем вы одномерный массив пытаетесь использовать как двумерный?
0
0 / 0 / 0
Регистрация: 18.10.2014
Сообщений: 16
18.10.2014, 10:19  [ТС] 3
И ещё невнимательный новичок, извиняюсь)
В другой функции, где объявлен и инициализирован массив, указатель на который я передаю функции - двухмерный. Хотя помоему я просто неправильно работаю с указателями. Как изменить так, чтоб работал указатель на двухмерный массив?
0
Pure Free Digital Ghost
4373 / 1809 / 355
Регистрация: 06.01.2013
Сообщений: 4,422
18.10.2014, 10:26 4
C++
1
int **S
0
0 / 0 / 0
Регистрация: 18.10.2014
Сообщений: 16
18.10.2014, 10:27  [ТС] 5
Хотя в принципе могу избавиться от этого... Но всё же как правильно передавать 2хмерный массив по указателю?
0
С чаем беда...
Эксперт CЭксперт С++
9432 / 4928 / 1348
Регистрация: 18.10.2014
Сообщений: 11,471
18.10.2014, 10:52 6
В языке С, как ни верти, массивы всегда передаются в функции по указателю. Вопрос лишь в том, какого типа будет этот указатель. А именно, передать в функцию указатель на двумерный массив "5 на 2" можно как минимум двумя способами

Первый способ

C
1
2
3
4
5
6
7
8
9
10
void foo(int a[5][2]) // можно эквивалентно написать int a[][2] или int (*a)[2]
{
   a[4][1] = 42;
}
 
int main()
{
   int a[5][2];
   foo(a);
}
Второй способ

C
1
2
3
4
5
6
7
8
9
10
void foo(int (*a)[5][2])
{
   (*a)[4][1] = 42;
}
 
int main()
{
   int a[5][2];
   foo(&a);
}
Обратите внимание на особенности передачи массива в этом способе (требуется оператор '&') и особенности доступа через такой указатель внутри функции (требуется оператор '*').

При использовании языка С++ во втором способе можно воспользоваться ссылкой вместо указателя (хотя это уже формально не будет "передачей по указателю")

C++
1
2
3
4
5
6
7
8
9
10
void foo(int (&a)[5][2])
{
   a[4][1] = 42;
}
 
int main()
{
   int a[5][2];
   foo(a);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2014, 10:52

Написать функцию, которая принимает два параметра типа unsignet short int
Здравствуйте. Начал изучать С++ и столкнулся с таким заданием. Не могу разобраться и путаюсь в...

Написать функцию,которая принимает массив целых чисел
ющий: 104 561 223 451 234 222 234 565 673 456 Добавлено через 17 минут #include &lt;iostream&gt;...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая...

Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int
Операции над целыми числами осуществляются быстрее, чем над числами с плавающей точкой. Напишите...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru