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

Динамический массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объясните как работает _getch() со стрелками http://www.cyberforum.ru/cpp-beginners/thread653437.html
Я недавно начал учить С++ и я совершенно не понимаю как эта функция работает со стрелками. Например код вида char ch; ch=_getch(); cout<<ch; _getch(); Сразу же закроется при первом...
C++ Спецификаторы доступа и виртуальные функции Сейчас почитал про виртуальные функции. Интересно конечно, но ответа на мою ситуацию я так и не нашел #include <iostream> #include <string> using namespace std; class A { http://www.cyberforum.ru/cpp-beginners/thread653431.html
не ожидал такого от strlen C++
#include <iostream> #include <string> #include <fstream> #include <string.h> using namespace std; const int MAX = 256; int main()
C++ Копирование область памяти
Здравствуйте, у меня не получается прочитать/скопировать память в переменную. Я делаю .dll, так вот записать значения в адрес я смог, а вот прочитать значения из памяти не могу. Это запись в адрес...
C++ Добавить в однонаправленный список элемент после элемента с заданным информационным полем http://www.cyberforum.ru/cpp-beginners/thread653415.html
Здравствуйте, помогите пожалуйста, с задачей. 1.Тип информационного поля char*. Добавить в однонаправленный список элемент после элемента с заданным информационным полем. 2.Тип информационного...
C++ Как отключить переполнение для переменных у мены вот такая задача: метод получения равномерно-распределенных случайных чисел, основанный на умножении, и использующий 32-х разрядную переменную код по идеи вот такой, но у... подробнее

Показать сообщение отдельно
RinatV
115 / 108 / 5
Регистрация: 15.05.2012
Сообщений: 318
Записей в блоге: 10
18.09.2012, 00:28
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int k=0;
int c=1;//количество элементов в диоганали
for(int i=M;i>0;i--){
        for(int n=0;n<c;n++){
                a[k]=mas[i+n][n];
                k++;
        }
        if(с<N)c++;     // увеличивается если не достигли дна
}
 
c=(N>M)?M:N; // выбирается минимальная длина стороны
for(int i=0;i<N;i++){
        if((i+c)>N)c--;// уменьшается если начнем упираться в дно
        for(int n=0;n<c;n++){
                a[k]=mas[n][i+n];
                k++;
        }
}
не проверено могут быть ошибки

логика: сперва выбираем данные спускаясь по диагоналям, увеличивая количество элементов в диоганали пока не начнем упиратся в дно в случае продолговаго массива

для нижней части уменьшаем количество элементов когда начинаем упиратся в дно

Добавлено через 1 час 54 минуты
спираль

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
/*
для того чтобы выбрать элементы из массива по спирали можно придумать робот 
работающей по следующей логике
вначале робот находится в некой позиции 
и известны 4 ограничения координат сверху справа снизу всерху 
они равны начальным координатам
в каждом цикле робот забирает элемент под собой 
и двигается в заданном направлении
если он вдруг оказывается выше ограничения направления 
то должен сменить направление и записать новое ограничение направления
таким образом создается спираль
 
робот забирает элементы если они находятся в поле, 
заканчивает работу если собраны все элементы
*/
 
int rn=0,ri=M/2,rj=N/2,ru=ri,rd=ri,rr=rj,rl=rj;
int k=0;
 
while(k<(M*N)){
    if((ri>=0)&&(ri<M)&&(rj>=0)&&(rj<N)){
        a[k]=mas[ri][rj];
        k++;
    }
    switch(rn){
        case 0:
            ri--;
            if(ri<ru){
                ru=ri;
                rn=1;
            }
            break;
        case 1:
            rj++;
            if(rj>rr){
                rr=rj;
                rn=2;
            }
            break;
        case 2:
            ri++;
            if(ri>rd){
                rd=ri;
                rn=3;
            }
            break;
        case 3:
            rj--;
            if(rj<rl){
                rl=rj;
                rn=0;
            }
            break;
    }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru