LINUX.ORG.RU

Сортировка элемнтов массива с каждым чертным адресом (С++)


0

0

вот что мы имеем:

void puzirki(int n)
{
for (int i=0; i<size-1;i++)
{
	m=&mas[i];
	if(m%2==0)
	{
    for (int i=0; i<size-1;i++)
    {
        if (mas[i]>mas[i+1])
       {
           swap(&mas[i],&mas[i+1]);
       }
    }
	}
}
}
при компиляции выводится ошибка

shmel@shmel-desktop:~/programing$ c++ lab3_1.cpp lab3_1.cpp: In function ‘void puzirki(int)’: lab3_1.cpp:23: error: invalid operands of types ‘int*’ and ‘int’ to binary ‘operator%’

Прошу помощи, я новичек так что прошу сильно не ржать.

Ответ на: комментарий от Siado

Ну как бы " m=&mas" дело в амперсанде. У тебя «m» как указатель объявлен?

да

int *m; #обьявлен как глобальный

shmel210
() автор топика
Ответ на: комментарий от Siado

вот что получилось:

void puzirki(int n)
{
for (int i=0; i<size-1;i++)
{
	m=&mas[i];
	cout<<m<<" ";
	if(*m%2==0)
	{
    for (int i=0; i<size-1;i++)
    {
        if (mas[i]>mas[i+1])
       {
           swap(&mas[i],&mas[i+1]);
       }
    }
	}
}
}
И вывод проги
Исходный массив
10 49 9 34 32 37 37 48 45 19 5 31 20 19 29 22 45 30 40 31 
0x804a100 0x804a104 0x804a108 0x804a10c 0x804a110 0x804a114 0x804a118 0x804a11c 0x804a120 0x804a124 0x804a128 0x804a12c 0x804a130 0x804a134 0x804a138 0x804a13c 0x804a140 0x804a144 0x804a148 
Массив на выходе
9 10 5 19 20 19 29 22 31 30 32 31 34 37 37 40 45 45 48 49 
Все верно?

shmel210
() автор топика

> Сортировка элемнтов массива с каждым чертным адресом

бредом являются и цель, и способ ее достижения.

dilmah ★★★★★
()
Ответ на: комментарий от ftor

Я так понял, ему нужен четный адрес, а не четное значение по адресу

Задание звучит так: В массиве размером 20 отсортировать методом пузырьков элемент с каждым четным адресом.

shmel210
() автор топика
Ответ на: комментарий от shmel210

for (int i = 0; i < size - 2; i += 2) { for (int j = i + 2; j < size; j += 2) {

dilmah ★★★★★
()
Ответ на: комментарий от shmel210

>Все верно?

0x804a100 0x804a104 0x804a108 0x804a10c 0x804a110 0x804a114 0x804a118 0x804a11c 0x804a120 0x804a124 0x804a128 0x804a12c 0x804a130 0x804a134 0x804a138 0x804a13c 0x804a140 0x804a144 0x804a148


У тебя функция, которая выводит на экран массив походу выводит из указателя и считывает из «&переменная» - отгда получается адреса аля 0x804a148. Надо в этой переменной поменять & на *

Siado ★★★★★
()
Ответ на: комментарий от shmel210

>Задание звучит так: В массиве размером 20 отсортировать методом пузырьков элемент с каждым четным адресом.

Так чего ты всем тут голову морочишь? Делай циклы до size/2 - 1, а к элементам обращайся по i*2

thesame ★★★★
()

между «сгенерировать все и выкинуть неправильные» и «сгенерировать правильные» по умолчанию лучше выбирать второй вариант

jtootf ★★★★★
()

если mas указывает на 0-й элемент всего массива, то

if (((m - mas) % 2) == 0) ...

arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.