Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задание на матрицы и вставку солбцов в них

30K
30 июля 2008 года
Styks
19 / / 06.05.2008
Здравствуйте, помогите пожалуйста написать программу:
Даны действительные числа a1,..,an, действительная квадратная матрица порядка n(n>=6). Получить действительную матрицу размера n(n+1), вставив в исходную матрицу между пятым и шестым столбцами новый столбец с элементами a1,..,an.
заранее спасибо)
320
30 июля 2008 года
m_Valery
1.0K / / 08.01.2007
Язык программирования надо указывать.
В Факе Студентам на 3 странице есть пример на С++.
307
31 июля 2008 года
Artem_3A
863 / / 11.04.2008
Цитата: Styks
Здравствуйте, помогите пожалуйста написать программу:
Даны действительные числа a1,..,an, действительная квадратная матрица порядка n(n>=6). Получить действительную матрицу размера n(n+1), вставив в исходную матрицу между пятым и шестым столбцами новый столбец с элементами a1,..,an.
заранее спасибо)



Если лень заглянуть в фак, то вот пример:

Код:
// Matrix.cpp : main project file.

//#include "stdafx.h"
#include <iostream>
#include <time.h>

using std::cout;
using std::endl;
using std::cin;

void filling(double **matrix, int n)
{
    int i = 0;
    int j = 0;
    srand(time(0));
    for( i=0; i<n; i++)
    {
        for( j=0; j<n; j++)
        {
            matrix[j] = rand()%(10-0+1)+0;
            cout << matrix[j]<< "\t";
        }
        cout << endl;
    }
}

void pasting(double **matrix, int n)
{
    int i = 0;
    int j = 0;
    double **temp = matrix;
    matrix = NULL;
    matrix = new double*[n];
    for( i=0; i<n; i++)
    matrix = new double[n+1];
    for(i=0; i<n; i++)
    for(j=0; j<(n+1); j++)
    {
        if(j==5)
            matrix[j] = 0;
        else if(j>6)
            matrix[j] = temp[j-1];
        else
            matrix[j] = temp[j];
    }
    temp = NULL;
    cout << "New matrix: "<< endl;
    for( i=0; i<n; i++)
    {
    for( j=0; j<(n+1); j++)
        cout << matrix[j]<< "\t";
    cout << endl;
    }
}

int main(void)
{
    int n = 0;
    do
    {
    cout << "Please ente the size of array: ";
    cin >> n;
    if(n<6||n<=0)
        cout << "\nSize incorrect. Error."<< endl;
    }while(n<6||n<=0);
    system("cls");
    double **matrix;
    matrix = new double*[n];
    for(int i=0; i<n; i++)
    {
        matrix = new double[n];
    }
    cout << "Matrix: "<< endl;
    filling(matrix, n);
    pasting(matrix, n);
    for(int i=0; i<n; i++)
    delete matrix;
    delete [] matrix;
    system("pause");
    return EXIT_SUCCESS;
}


Учебник по С++ тебе в руки, примеров по двумерным массивам море, дерзай!
3
31 июля 2008 года
Green
4.8K / / 20.01.2000
Удивляют такие "экзотические" сочетания:
 
Код:
#include <iostream>

<skip>

    double **matrix;
    matrix = new double*[n];

Это чтоб жизнь медом не казалась? :)

Вот ещё забавное место:
 
Код:
matrix = NULL;
    matrix = new double*[n];
307
01 августа 2008 года
Artem_3A
863 / / 11.04.2008
Цитата: Green
Удивляют такие "экзотические" сочетания:
 
Код:
#include <iostream>

<skip>

    double **matrix;
    matrix = new double*[n];

Это чтоб жизнь медом не казалась? :)



В общем воспользовавшись вашим замечанием я лихорадочно искал в чем моя оплошность, но так и не понял. К примеру вот тут данный способ описывается как единственный вариант создания динамического двумерного массива...:confused: Может вы поясните??? Во втором месте я тоже не до конца понял в чем узкое место....:confused: Кто нить может меня просветить? А то я как то сам не могу дойти!:(

87
01 августа 2008 года
Kogrom
2.7K / / 02.02.2008
Artem_3A, попытаюсь понять, о чем говорил Green.

Не уверен, но в первом отрывке его наверно удивило то, что используется стандартная библиотека STL, но не используется vector для создания матрицы. Если это так - то, думаю, зря придрался.

Во втором отрывке и мне не ясно, зачем нужна операция matrix = NULL; что она тут дает, если сразу после этого вы пишете matrix = new double*[n]; Может вы думаете, что этой операцией вы освобождаете память на которую ссылается matrix? Это не так.
307
01 августа 2008 года
Artem_3A
863 / / 11.04.2008
Цитата: Kogrom
Artem_3A, попытаюсь понять, о чем говорил Green.

Не уверен, но в первом отрывке его наверно удивило то, что используется стандартная библиотека STL, но не используется vector для создания матрицы. Если это так - то, думаю, зря придрался.

Во втором отрывке и мне не ясно, зачем нужна операция matrix = NULL; что она тут дает, если сразу после этого вы пишете matrix = new double*[n]; Может вы думаете, что этой операцией вы освобождаете память на которую ссылается matrix? Это не так.


Спасибо! Теперь все ясно!=) Обязательно исправлюсь!=)

3
01 августа 2008 года
Green
4.8K / / 20.01.2000
Цитата: Kogrom
Artem_3A, попытаюсь понять, о чем говорил Green.


Понял правильно.

Цитата: Kogrom

Не уверен, но в первом отрывке его наверно удивило то, что используется стандартная библиотека STL, но не используется vector для создания матрицы. Если это так - то, думаю, зря придрался.


Ну почему же зря.
Если используется STL, то почему бы не использовать стандартные контейнеры, это значительно упростит жизнь и сократит код.

87
01 августа 2008 года
Kogrom
2.7K / / 02.02.2008
Цитата: Green
Ну почему же зря.
Если используется STL, то почему бы не использовать стандартные контейнеры, это значительно упростит жизнь и сократит код.



Думаю, эта задачка нужна для развития у студента навыков работы с обыкновенными массивами, а каким образом осуществляется ввод-вывод данных тут не важно.

307
02 августа 2008 года
Artem_3A
863 / / 11.04.2008
Цитата: Green

Ну почему же зря.
Если используется STL, то почему бы не использовать стандартные контейнеры, это значительно упростит жизнь и сократит код.



Совершенно с вами согласен, но если человек просит помочь решить на столько простое задание, то боюсь код с использованием стандартных контейнеров вызовет у него больше проблем чем сама задача.:) Да и к тому же я считаю, что когда выполняешь учебные задачи лучше идти более сложеым путем, просто для саморазвития!:)

3
02 августа 2008 года
Green
4.8K / / 20.01.2000
Цитата: Artem_3A
Совершенно с вами согласен, но если человек просит помочь решить на столько простое задание, то боюсь код с использованием стандартных контейнеров вызовет у него больше проблем чем сама задача.:)


Не вижу сложности в использовании контейнеров. Это проще и удобнее, чем **p. Для того они и были созданы.

Цитата: Artem_3A
Да и к тому же я считаю, что когда выполняешь учебные задачи лучше идти более сложеым путем, просто для саморазвития!:)


[QUOTE=Kogrom]Думаю, эта задачка нужна для развития у студента навыков работы с обыкновенными массивами, а каким образом осуществляется ввод-вывод данных тут не важно.[/QUOTE]
Я против такого подхода к обучению.
Не менее важно, чем обучение самому приему, обучение правильно применять эти приемы. При таком виде обучения это совершенно упускается и это чуть ли не самая большая ошибка.
Представьте себе отлично исполненный нижний брейк на балу у английской королевы под вальс Венского... :)

Даже при обучении "обстановка должна быть приближена к боевой".

307
02 августа 2008 года
Artem_3A
863 / / 11.04.2008
На сколько я знаю, подобные задания имеют место быть - курс первый, семестр первый; когда учат что такое програмирование, с чем его едят и как это все работает, уже со второго курса только начинается что то более пригодное для использование в дальшейшем. Мне кажется что тупо использовать инструмент не зная хоть примерно как он работает. Собственно для этого и мучают студентов написанием стеков, списков, заданиями на матрици и т.д.
Хотя, сколько людей - столько мнений!:D:);)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог