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

Задана матрица размером N*N и вектор размерности N

15.03.2015, 14:34. Просмотров 990. Ответов 5
Метки нет (Все метки)

Задана матрица размером N*N и вектор размерности N. Заменить нечетные строки матрицы на заданный вектор.
Здравствуйте, помогите пожалуйста доделать программу, а то не соображаю как, заранее спасибо)
Данная программа заменяет четный столбец, а мне надо что заменяла нечетные строки на заданные вектор, помогите пожалуйста)
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    setlocale(0, "");
    int n, m;
    srand(time(NULL));
 
    cout << "kolvo ctrok: ";
    cin >> n;
 
    cout << "kolvo stolbcov: ";
    cin >> m;
 
    int **Matrix = new int *[n];
    cout << "vvedite elementu matricu\n";
    for(int i = 0; i < n; i++)
    {
        Matrix[i] = new int [m];
        for(int j = 0; j < m; j++)
        {
            cout << "Matrix[" << i +  1<< "][" << j + 1 << "] = "; 
            cin >> Matrix[i][j];
        }
    }
 
    cout << "izvestnay matrica:" << endl;
    for(int i  =0; i < n; i++)
    {
        cout << endl;
        for(int j = 0; j < m; j++)
            cout << Matrix[i][j] << "\t";
    }
    cout << endl;
 
    cout << "\nvector:";
    int *vector = new int [n];
    for(int i = 0; i < n; i++)
    {
        vector[i] = rand() % 20;
        cout << vector[i] << " ";
    }
 
    for(int j = 1; j < m; j += 2)
        for(int i = 0; i < n; i++)
            Matrix[i][j] = vector[i];
            
    cout << "preobrazovvannaz matrica:" << endl;
    for(int i  =0; i < n; i++)
    {
        cout << endl;
        for(int j = 0; j < m; j++)
            cout << Matrix[i][j] << "\t";
    }
    cout << endl;
    
    for (int i = 0; i < n; i++)
        delete [] Matrix[i];
    delete [] Matrix;
    delete [] vector;
 
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2015, 14:34
Ответы с готовыми решениями:

Задана матрица {aij} размерности N*N. Из ее элементов сформировать одномерный массив
Пожалуйста помогите сделать эти задачи: 1. Задана матрица {aij} размерности...

Задана матрица размером NxM. Найти k - количество
Задана матрица размером NxM.Найти k - количество особых элементов...

Задана матрица размером М х N. Найти максимальный по модулю эле¬мент матрицы
Задана матрица размером М х N. Найти максимальный по модулю эле¬мент матрицы. ...

Задана матрица размером NxM. Найти сумму всех элементов, расположенных выше строки с максимальным элементом
Задана матрица размером NxM. Найти сумму всех элементов, расположенных выше...

Задана символьная матрица размером NxM.Определить кол-во различных элементов(Повторяющиеся считать только 1 раз).
Помогите пожалуйста . Не могу создать динамческий символьный массив. Остальную...

5
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
15.03.2015, 16:01 2
Вы уже определитесь какая у Вас матрица. А то в задании n*n, а в программе n*m.
Если в строке m элементов, то туда не записать полностью вектор размерностью n.
Вот подправил Ваш код:
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
#include <iostream>
#include <random>
#include <time.h>
 
using namespace std;
int main()
{
    int n;
    srand(time(NULL));
 
    cout << "Enter n: ";
    cin >> n;
 
    int **Matrix = new int *[n];   
    for(int i = 0; i < n; i++)
        Matrix[i] = new int [n];
    cout << "vvedite "<<n*n<< " elementov matricu\n";
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            cin >> Matrix[i][j];
    
    cout << "izvestnay matrica:" << endl;
    for(int i  =0; i < n; i++)
    {
        cout << endl;
        for(int j = 0; j < n; j++)
            cout << Matrix[i][j] << "\t";
    }
    cout << endl;
 
    cout << "\nvector:";
    int *vector = new int [n];
    for(int i = 0; i < n; i++)
    {
        vector[i] = rand() % 20;
        cout << vector[i] << " ";
    }
    cout << endl;
 
    for(int i = 0; i < n; i++)
        if(i%2==0) 
            for(int j(0);j<n;j++)
                Matrix[i][j] = vector[j];
            
            
    cout << "preobrazovvannaz matrica:" << endl;
    for(int i  =0; i < n; i++)
    {
        cout << endl;
        for(int j = 0; j < n; j++)
            cout << Matrix[i][j] << "\t";
    }
    cout << endl;
    
    for (int i = 0; i < n; i++)
        delete [] Matrix[i];
    delete [] Matrix;
    delete [] vector;
 
    system("pause");
    return 0;
}
И ещё. В С++ нумерации индексов идёт с 0. Поэтому ищем наоборот четные строки
C++
1
if(i%2==0)
0
den111
0 / 0 / 1
Регистрация: 30.11.2014
Сообщений: 14
15.03.2015, 18:06  [ТС] 3
Leon_AD, Да вы правильно заметили у меня был такой недочет. Спасибо за исправленную программу, но она не заменяет нечетные строки, она просто заменяет первую строку
0
Leon_AD
103 / 103 / 51
Регистрация: 11.04.2014
Сообщений: 160
15.03.2015, 18:51 4
Не знаю, как у Вас. У меня всё работает.
Задана матрица размером N*N и вектор размерности N
1
den111
0 / 0 / 1
Регистрация: 30.11.2014
Сообщений: 14
15.03.2015, 19:23  [ТС] 5
Leon_AD, Извините я перепутал, все работает отлично, спасибо вам большое, очень помогли
0
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
15.03.2015, 19:23 6
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
#include <iostream>
#include <random>
#include <vector>
#include <algorithm>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
 
using std::cout;
using std::endl;
namespace ublas = boost::numeric::ublas;
 
int main()
{
    int N = 4;
    ublas::matrix<int> A (N, N);
    std::vector<int> V (N);
 
    std::random_device rng;
    std::uniform_int_distribution<> gen (1, 9);
    for (int i = 0; i < A.size1(); i++)
    {
        V[i] = gen (rng);
        for (int j = 0; j < A.size2(); j++)
        {
            A(i,j) = gen (rng);
        }
    }
    cout <<A <<endl;
    for (auto i : V)
        cout <<i <<' ';
 
    for (int i = 1; i < A.size1(); i+=2)
        std::copy (V.begin(), V.end(), A.begin2() + A.size2() * i);
    cout <<endl <<A <<endl;
}
0
15.03.2015, 19:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2015, 19:23

Дана матрица размером МхN. Сформировать из этой матрицы вектор по правилу
Как решить эту программу с помощью указателей? Задача Дано матрицу размером...

Задана матрица размером NxM. Определить количество "особых" элементов матрицы
Помогите написать программу. Задана матрица размером NxM. Определить...

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


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

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

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