Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
-Линка-
0 / 0 / 0
Регистрация: 23.12.2010
Сообщений: 1
#1

Осуществить циклический сдвиг элементов прямоугольной матрицы - C++

27.12.2010, 01:03. Просмотров 2071. Ответов 2
Метки нет (Все метки)

Помогите решить задачки. Я не оть программирую, а делать над... (С++)

1) Вычислить 12 значений функции y=ax^2+bx+c на отрезке [e,f], сохранить их в массиве Y и определить, является ли функция убывающей, возрастающей или немонотонной на этом отрезке.

2) Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введенного режима). n может быть больше количества элементов в строке или столбце.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2010, 01:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Осуществить циклический сдвиг элементов прямоугольной матрицы (C++):

Осуществить циклический сдвиг элементов прямоугольной матрицы
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов...

Осуществить циклический сдвиг элементов прямоугольной матрицы
Здравствуйте, было задание Осуществить циклический сдвиг элементов...

Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз
Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов...

Циклический сдвиг элементов прямоугольной матрицы
Мне нужно сделать такую программу: Осуществить циклический сдвиг элементов...

Циклический сдвиг прямоугольной матрицы на n элементов вправо
Подскажите пожалуйста в чем ошибка. Надо осуществить циклический сдвиг...

Осуществить циклический сдвиг элементов квадратной матрицы
Помогите решить эту задачу: Осуществить циклический сдвиг элементов квадратной...

2
sandye51
программист С++
833 / 592 / 147
Регистрация: 19.12.2010
Сообщений: 2,016
27.12.2010, 01:33 #2
Лучший ответ Сообщение было отмечено как решение

Решение

2.
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#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 (int i = a - sdvig; i >= sdvig; --i)
                    matrix[i][index] = matrix[i - sdvig][index];
                for (int 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 (int i = b - sdvig; i >= sdvig; --i)
                        matrix[index][i] = matrix[index][i - sdvig];
                    for (int 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;
}
1
Merlin666
98 / 98 / 29
Регистрация: 26.12.2010
Сообщений: 220
27.12.2010, 01:48 #3
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
56
//
// Вычислить 12 значений функции y=ax^2+bx+c на отрезке [e,f], 
// сохранить их в массиве Y и определить, является ли функция убывающей,
// возрастающей или немонотонной на этом отрезке.
//
#include "StdAfx.h";
#include <iostream>
#include <cmath>;
using namespace std;
 
bool IsDown(int x[12])
{
    bool flag=true;
 
    for (int i=0;i<11;i++)
        if (x[i]<x[i+1]) flag=false;
 
    return flag;
}
 
bool IsRaised(int x[12])
{
    bool flag=true;
 
    for (int i=0;i<11;i++)
        if (x[i]>x[i+1]) flag=false;
 
    return flag;
}
 
void main()
{
    int x[12];
    int a, b, c, e, f, count, i=0;
 
    cout<<"Enter a, b, c: ";
    cin>>a>>b>>c;
 
    cout<<"Enter e, f: ";
    cin>>e>>f;
 
    count=e;
 
    for (int j=0;j<=11;j++)
    {
        x[j]=a*count*count+b*count+c;
        count=count+double((f-e)/12);
    }
    
    for (int j=0; j<=11; j++)
        cout<<x[j]<<" ";
 
    if (IsRaised(x)) cout<<"Raised";
    else if (IsDown(x)) cout<<"Down";
    else cout<<"Not Monotonical...";
}
Добавлено через 1 минуту
C++
1
count=count+double((f-e)/12);
Замени просто на
C++
1
count+=(f-e)/12;
Добавлено через 40 секунд
Если нужны не только целые значения - поменяй типы данных) int на double или float=)
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2010, 01:48
Привет! Вот еще темы с решениями:

Осуществить циклический сдвиг элементов квадратной матрицы
(Console Application) Осуществить циклический сдвиг элементов квадратной...

Как осуществить циклический сдвиг элементов квадратной матрицы
Помогите осуществить циклический сдвиг элементов квадратной матрицы размерности...

Осуществить циклический сдвиг матрицы по условию
Необходимо осуществить циклический сдвиг элементов прямоугольной матрицы на n...

Осуществить циклический сдвиг элементов
Осуществить циклический сдвиг элементов квадратной матрицы на n элементов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru