Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2011, 13:02   #1
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию есть код,а вот что он делает?

задание есть вот оно:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
 номер минимального по модулю элемента массива;
 сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.
в общем я понимаю что он делает а вот каждую строчку или хотябы цикл описать трудно и вот прошу помощи)
Код:
#include <iostream>//подключение библиотек
 
using namespace std;
typedef int* stroka;              
 
class Matrix
{
public:
        stroka* matrix;
        int a, b;//обьявление переменных
        Matrix(int a1, int b1)
        {
                this->a = a1, this->b = b1;
                matrix = new stroka[a];
                for (int i = 0; i < a; ++i)
                        matrix[i] = new int[b];
        }
        ~Matrix(void)
        {
                for (int i = 1; i < a; ++i)
                        delete[]matrix[i];
                delete[]matrix;
        }
        void sdvig (int flag, int sdvig, int index)
        {
                if (!(sdvig % a) && flag == 2 || flag == 1 && !(sdvig % b))
                        return;
                else
                        if (flag == 2 && index >= 0 && index < b) // столбец
                        {
                                sdvig = sdvig > 0 ? sdvig % a : sdvig % a + a;
                                int* tmp = new int[sdvig];
                                for (int i = 0; i < sdvig; ++i)
                                {
                                        tmp[i] = matrix[a - sdvig + i][index];                                           // сохраняем последние элементы [сдвиг]
                                        matrix[a - sdvig + i][index] = matrix[(a - 2*sdvig + i >= 0 ? a - 2*sdvig + i : (2 * (a - sdvig) + i) % a)][index];     // на их место предыдущие [сдвиг]
                                }
                                for ( i = a - sdvig; i >= sdvig; --i)
                                        matrix[i][index] = matrix[i - sdvig][index];
                                for ( i = 0; i < sdvig; ++i)
                                        matrix[i][index] = tmp[i];
                                delete[]tmp;
                        }
                        else 
                                if (flag == 1 && index >= 0 && index <= a) // строка
                                {
                                        sdvig = sdvig > 0 ? sdvig % b : sdvig % b + b;
                                        int* tmp = new int[sdvig];
                                        for (int i = 0; i < sdvig; ++i)
                                        {
                                                tmp[i] = matrix[index][b - sdvig + i];                                           // сохраняем последние элементы [сдвиг]
                                                int t = b - 2*sdvig + i >= 0 ? b - 2*sdvig + i : (2 * (b - sdvig) + i) % b;
                                                matrix[index][b - sdvig + i] = matrix[index][t];        // на их место предыдущие [сдвиг]
                                        }
                                        for ( i = b - sdvig; i >= sdvig; --i)
                                                matrix[index][i] = matrix[index][i - sdvig];
                                        for ( i = 0; i < sdvig; ++i)
                                                matrix[index][i] = tmp[i];
                                        delete[]tmp;
                                }
        }
        friend ostream& operator<< (ostream& os, const Matrix& Buffer)
        {
                for (int i = 0; i < Buffer.a; ++i)
                {
                        for (int j = 0; j < Buffer.b; ++j)
                                os << Buffer.matrix[i][j] << "  ";
                        os << endl;
                }
                return os;
        }
};
 
int main(void)
{
        Matrix Buffer(7, 5);
 
        for (int i = 0; i < Buffer.a; ++i)
                for (int j = 0; j < Buffer.b; ++j)
                        Buffer.matrix[i][j] = i + j + 1;        
        
        
        cout << Buffer << endl;
        Buffer.sdvig(1 /* столбец */, 3 /* сдвиг*/ , 3);
        cout << Buffer;
 
        system("Pause");
        return 0;
}

Последний раз редактировалось ACE Valery; 30.12.2011 в 18:49.
anton6262906 вне форума Ответить с цитированием
Старый 27.12.2011, 13:07   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,965
По умолчанию

Похоже на циклический сдвиг элементов двумерной матрицы.
Код не прогонял, это просто догадка.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.12.2011, 13:11   #3
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию

да я же ыведь задание написал)
anton6262906 вне форума Ответить с цитированием
Старый 27.12.2011, 13:56   #4
Maksimall89
Пользователь
 
Аватар для Maksimall89
 
Регистрация: 10.11.2010
Сообщений: 59
По умолчанию

Я же уже отвечал, тебе вот тут.
Сдвиг (сжатие массива) тут всё реализовано как и сказал Smitt&Wesson.
И да, код не компилится VS 2010.
Maksimall89 вне форума Ответить с цитированием
Старый 27.12.2011, 21:03   #5
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию

стоп стоп стоп я не то задание написал..
У меня почемуто все компилится..там кароче задание на создание матрицы такого вида
1 2 3 4 5 6 7
2 3 4 5 6 7 8
3 4 5 6 7 8 9
4 5 6 7 8 9 10
5 6 7 8 9 10 11
anton6262906 вне форума Ответить с цитированием
Старый 27.12.2011, 21:06   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,965
По умолчанию

Цитата:
стоп стоп стоп я не то задание написал..
Ну вот, а мы виноваты...
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 27.12.2011, 21:15   #7
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию

извиняюсь..дак задание таково там матрицу такую нужно сделать как я выше описал..там от 1 сдвиг в бок и в низ должен быть и каждый раз с каждым шагом увеличиваться должен на 1
anton6262906 вне форума Ответить с цитированием
Старый 28.12.2011, 08:59   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,965
По умолчанию

anton6262906, а в чём собственно моя помощь должна выражаться?
Прога работает нормально.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.12.2011, 12:21   #9
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию

Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введенного режима). n может быть больше количества элементов в строке или столбце.
Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
anton6262906, а в чём собственно моя помощь должна выражаться?
Прога работает нормально.
надо только обьяснить в коментариях типа "//" что выполняется в программе,что мы обьявляем,что делает эта строчка ну вот такого типа нужно сделать
anton6262906 вне форума Ответить с цитированием
Старый 29.12.2011, 17:42   #10
anton6262906
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 23
По умолчанию

ну ребят хэлп
anton6262906 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что делает этот код? Alex_sim Общие вопросы C/C++ 10 03.03.2010 23:45
Что делает код AllForCS PHP 1 24.02.2010 00:50
Что делает данный JS (там есть такие ф-ии как getElementsByTagName и getElementById) TwiX JavaScript, Ajax 5 05.02.2010 19:49
Подскажите пожалуйста что делает этот код SlashMan JavaScript, Ajax 3 10.01.2010 22:41
Что делает этот код? lucky Общие вопросы Delphi 4 17.06.2009 17:02