c сдвиг



Автор Gabdulhanov задал вопрос в разделе Другие языки и технологии

C++ сдвиг массива и получил лучший ответ

Ответ от ...[гуру]
По заданию получается, что нужно сдвинуть строку с 4 индексом на 5, строки 0 и 1 перенести на 3, а "верх" забить "нулями".
#include "iostream"
#include "iomanip"
#include "cstring"
using namespace std;
void outIntArr(ostream& s, void* p, size_t m, size_t n) {
int *tmp = (int*)p;
for(int i=0;i<m;i++) {
for(int j=0;j<n; j++,tmp++)
s << setw(4) << *tmp;
s << endl;
}
}
int main() {
const size_t m=7, n = 5;
int a[m][n] = {
{0,0,0,0,0}, //0
{1,0,1,1,0}, //1
{1,1,1,1,1}, //2
{1,1,1,1,1}, //3
{0,1,0,0,0}, //4
{0,1,1,1,1}, //5
{0,1,1,0,1} //6
};
outIntArr(cout, a, m, n);
cout << "--" << endl;
//4 -> 5
memcpy((int*)&a + 5*n, (int*)&a + 4*n, n*sizeof(int));
//0,1 -> 3,4
memcpy((int*)&a + 3*n, &a, 2*n*sizeof(int));
//0-2 = 0
memset(&a, 0, 3*n*sizeof(int));
outIntArr(cout, a, m, n);
return 0;
}
--
c сдвиг

Ответ от Максим[гуру]
Ну сдвиньте в цикле, переставляя на 3 вниз. Или чё там делается? Чё-то не понял.

Ответ от Николай Веселуха[гуру]
#include <iostream>
#include <vector>
#include <list>
#include <Windows.h>
using namespace std;
typedef vector<short> line;
typedef list<line> tetris;
void show(tetris& game);
void print(const line& level);
void sealed(tetris& game);
void delay(DWORD ms);
class full_line : unary_function<line, bool> {
public:
bool operator() (line& level);
};
int main() {
tetris game = {
{ 0, 0, 0, 0, 0 },
{ 1, 0, 1, 1, 0 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 0, 1, 0, 0, 0 },
{ 1, 1, 1, 1, 1 },
{ 0, 1, 1, 0, 1 }
};
show(game);
delay(1000);
sealed(game);
show(game);
cin.get();
}
void show(tetris& game) {
for (const auto &level : game) print(level);
}
void print(const line& level) {
for (const auto &cell : level) cout << ' ' << cell;
cout << endl;
}
void sealed(tetris& game) {
line zero = { 0, 0, 0, 0, 0 };
auto size = game.size();
game.remove_if(full_line());
while (game.size() != size) game.push_front(zero);
}
void delay(DWORD ms) {
Sleep(ms);
system("cls");
}
bool full_line::operator() (line& level) {
for (const auto &cell : level) if (!cell) return false;
return true;
}

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: C++ сдвиг массива
спросили в Общество
Сдвиг кривой спроса произойдет в результате....(ПОМОГИТЕ ПРОДОЛЖИТЬ)
сдвиг кривой спроса может произойти в результате: 1) изменения вкусов потребителей; 2) изменения
подробнее...

График функции y=ax^2+bx+c за что отвечает а, b и с!???
парабола на число С поднята по оси У если С положительно. Остальное не
подробнее...
спросили в C++
Помогите сделать лабораторную работу по теме \"Одномерные массивы\" [C++]
Разве это C++?
Вот C++ =)
Блок-схема не нужна. т. к. при использовании С++ STL библиотек
подробнее...

std::vector::erase сдвигает ли элементы при удалении?
В C++ нет понятия "?" (неопределенность существует только для только что определенных переменных) ,
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:

За что отвечают коэффициенты a,b и с в квадратичной функции вида ax^2+bx+c?
a - направление веток параболы, их сжатие/растяжение
b - сдвиг вершины по оси ОХ
с - сдвиг
подробнее...
спросили в Stdio h String h
C++. Вопрос по функции memmove()
Пример

Данная программа сдвигает содержимое массива str на 10 позиций в сторону младших
подробнее...

Объясните,пожалуйста, принцип работы усилителя с 2Т мостом и RC генератора c 2Т мостом
Дык а чё, простой принцип... Двойной Т-мост обладает избирательными свойствами, и все дела. Поэтому
подробнее...

Что такое градиент скорости сдвига? и что такое Скорость сдвига? чем отличаются?
Два слоя жидкости могут располагатся друг относительно друга на малом и большом расстоянии.
подробнее...

автор культурно психологической концепции подростка? A) Л. С. Выготский B) Э. Шпрангер C) В. Штерн D) М. Мид E) Н. Ланге
Шпрангер

Э. Шпрангер разработал культурно-психологическую концепцию подросткового
подробнее...

Битовые маски в C++
просто разгребаешь входное по битам

например сдвигая его вправо на очередной бит
подробнее...

Удаление пробелов из строки - C++
Сдвигая конец строки влево самостоятельно, а не с помощью
подробнее...

c++, побитовые операции.
... Тьфу, написал сначала "между делом" чушь, извиняюсь.

Krab Barkподробнее...
спросили в Техника
ЧТО значит модуль сдвига?
Я тебе написал в пред. вопросе. Н/мм^2 это размерность давления. Т. е. это сила которая давит на
подробнее...
Битовый сдвиг на Википедии
Посмотрите статью на википедии про Битовый сдвиг
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*