Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2015, 14:26   #1
Fliiz
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 44
По умолчанию Подпрограммы

Доброго времени суток,народ Такая задача:
Дана матрица размера nxm . Умножить отрицательные элементы столбцов с нечетными номерами на минимальный элемент матрицы.
Написал вообщем код,но без использования отдельных функций(с этим проблема),а по условию в обязательном порядке решение в виде функций ввода, вывода и обработки массивов. Прошу помочь

Код:
#include <iostream>
#include <clocale>

using namespace std;

int main()
{
    setlocale (LC_CTYPE,"rus");
    int n, m;
    int min=0;
    cout<<"Vvedite kol-vo strok n =";
    cin>>n;
    cout<<"Vvedite kol-vo stolbtsov m =";
    cin>>m;
    double A[n][m];
    cout<<"Vvedite elementy matritsy A: "<<endl;
    for (int i=0; i<n; i++)
        for (int j=0; j<m; j++)
        {
            cout<<"Element A  " <<i<<j<< "=";
            cin>>A[i][j];
        }
    cout<<"Massiv A: "<<endl;
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            cout<<A[i][j]<<"    ";
        }
        cout<<endl;
    }
    min = A[0][0];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (A[i][j] < min) min = A[i][j];
        }
    }
    cout<<"min = "<<min<< endl;
    cout<<"Izmenenniy stolbets massiva:"<<endl;
    for (int i = 0; i < n; ++i )
    {
        for (int j = 1; j < m; j+=2 )
        {    if(A[i][j]<0)
                A[i][j]*=min;
            cout<<A[i][j]<<endl;
        }

    }
}
Fliiz вне форума Ответить с цитированием
Старый 05.07.2015, 16:30   #2
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Fliiz Посмотреть сообщение
Написал вообщем код,но без использования отдельных функций(с этим проблема),а по условию в обязательном порядке решение в виде функций ввода, вывода и обработки массивов.
Нужно сделать 3 функции:
1) Для ввода матрицы.
2) Для умножения отрицательных элементов столбцов с нечетными номерами на минимальный элемент матрицы.
3) Для вывода матрицы.

Я правильно понял?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 05.07.2015, 16:41   #3
Fliiz
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 44
По умолчанию

да-да,именно
Fliiz вне форума Ответить с цитированием
Старый 05.07.2015, 17:13   #4
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Fliiz Посмотреть сообщение
да-да,именно

Код:
#include <iostream>
#include <iomanip>

using namespace std;

double** createMatrix(char* name, int rows, int cols){

    double** newMatrix = new double*[rows];  // выделение памяти для указателей на рядки
    for (int i = 0; i < rows; i++){
        newMatrix[i]= new double[cols];  // выделение памяти для рядка
        for (int j = 0; j < cols; j++){
            // считывание значений матрицы
            cout << name <<"[" << i << "][" << j << "]=";
            cin >> newMatrix[i][j];
        }
    }

    return newMatrix;
}

void deleteMatrix(double** matrix, int rows) {
     // освобождение памяти рядков
    for(int i = 0; i < rows; i++){
        delete[] matrix[i];
    }
    // освобождение памяти указателей на рядки
    delete[] matrix;
}

void showMatrix(double** matrix, char* name, int rows, int cols){
    // вывод матрицы
    cout << name << ":" << endl;
    for (int i = 0; i < rows; i++){
        for (int j = 0; j < cols; j++) cout << setw(9) << matrix[i][j] << ' ';
        cout << endl;
    }
}

void changeMatrix(double** matrix, int rows, int cols){
    double min = matrix[0][0];
    //  поиск минимального элемента матрицы
    for (int i = 0; i < rows; i++){
        for (int j = 0; j < cols; j++){
            if(matrix[i][j]< min) min = matrix[i][j];
        }
    }
    //  умножение отрицательных элементов столбцов с нечетными номерами на минимальный элемент матрицы
    for (int i = 0; i < rows; i++){
        for (int j = 1; j < cols; j+=2){
            if(matrix[i][j]<0){
                matrix[i][j]*=min;
            }
        }
    }
}

int main()
{
    int n,m;
    cout<<"Input matrix NxM"<< endl;
    cout<<"N = ";
    cin>>n;
    cout<<"M = ";
    cin>>m;

    double **A = createMatrix("MtrixA",n,m);
    showMatrix(A,"MtrixA",n,m);
    changeMatrix(A,n,m);
    showMatrix(A,"MtrixA after change",n,m);
    deleteMatrix(A,n);

    return 0;
}
Примерно так?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 05.07.2015, 18:54   #5
Fliiz
Пользователь
 
Регистрация: 07.05.2015
Сообщений: 44
По умолчанию

Да,спасибо)
Fliiz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограммы Camelot_2012 Паскаль, Turbo Pascal, PascalABC.NET 6 18.04.2012 21:10
Подпрограммы в Си M_arisha Общие вопросы C/C++ 1 10.04.2012 20:48
подпрограммы nolx Помощь студентам 8 15.02.2011 18:08
Подпрограммы Егор93 Помощь студентам 1 13.02.2011 18:52
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05