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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2014, 18:23   #1
Nnaya
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 17
По умолчанию Нужно исправить! Сложить модули элементов строк матрицы и сформировать из них вектор V

Проверьте и исправьте, пожалуйста! Задача: дана матрица А размера n на n. Нужно сформировать вектор V, элементами которого являются суммы модулей элементов строк полученной матрицы.
Это тот фрагмент, который получился у меня:
Код:
for (i=0; i < n; i++)
    {
        V[i]=0;
        for (j=0; j<n; j++)
        V[i]+=A[i][j];
    }   
    cout<<"Вектор V, элементами которого являются суммы модулей элементов строк матрицы А:";
    cout<<V[i]<<"\t";
Nnaya вне форума Ответить с цитированием
Старый 12.12.2014, 18:27   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

а где получение модуля - abs()?
Smogg вне форума Ответить с цитированием
Старый 12.12.2014, 18:32   #3
Nnaya
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 17
По умолчанию

Я полный ноль в программировании, поэтому не понимаю, о чем Вы говорите(
Вы можете мне помочь?

Последний раз редактировалось Nnaya; 12.12.2014 в 18:35.
Nnaya вне форума Ответить с цитированием
Старый 12.12.2014, 18:52   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

abs(x) - функция взятия модуля от переменной х.
Код:
for (i=0; i < n; i++)
    {
        V[i]=0;
        for (j=0; j<n; j++)
        V[i]+=abs(A[i][j]);
    }   
    cout<<"Вектор V, элементами которого являются суммы модулей элементов строк матрицы А: \n" ;
for (i=0; i < n; i++)
{
    cout<<V[i]<<"\n";
}
Smogg вне форума Ответить с цитированием
Старый 12.12.2014, 19:00   #5
Nnaya
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 17
По умолчанию

Большое спасибо!
А можно я Вам еще один вопрос задам?)
Если нужно упорядочить элементы V в порядке возрастания, то так будет верно?
Код:
cout<<”Упорядочим элементы V в порядке возрастания:\n”
for (i=0;i<n-1;i++)
        for (j=0;j<n-1-i;j++)
            if (V[j]>V[j+1]){
                X=V[j];
                V[j]=V[j+1];
                V[j+1]=X;
            }
    for (i=0;i<n;i++)
cout<<”Получившийся вектор:\n”
        cout<<V[i]<<" ";
    cout<<endl;
Nnaya вне форума Ответить с цитированием
Старый 12.12.2014, 20:10   #6
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от Nnaya Посмотреть сообщение
Большое спасибо!
А можно я Вам еще один вопрос задам?)
Если нужно упорядочить элементы V в порядке возрастания, то так будет верно?
Код:
cout<<”Упорядочим элементы V в порядке возрастания:\n”
for (i=0;i<n-1;i++)
        for (j=0;j<n-1-i;j++)
            if (V[j]>V[j+1]){
                X=V[j];
                V[j]=V[j+1];
                V[j+1]=X;
            }
    for (i=0;i<n;i++)
cout<<”Получившийся вектор:\n”
        cout<<V[i]<<" ";
    cout<<endl;
Ну, если компилируется и граничные случаи отрабатываются, то верно) Здесь граничный случай - поднимание самого последнего элемента на самый верх (или самый первый в самый конец) .
Smogg вне форума Ответить с цитированием
Старый 12.12.2014, 20:25   #7
Nnaya
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Smogg Посмотреть сообщение
Ну, если компилируется и граничные случаи отрабатываются, то верно) Здесь граничный случай - поднимание самого последнего элемента на самый верх (или самый первый в самый конец) .
Эм, ладно, буду считать, что верно) А если я попрошу проверить всю программу, Вы не решите, что я "села Вам на шею"?)
Nnaya вне форума Ответить с цитированием
Старый 12.12.2014, 20:40   #8
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

) да в общем нет. Здесь свободный форум. Хочу - подставляю шею, не хочу - иду мимо)
Smogg вне форума Ответить с цитированием
Старый 12.12.2014, 20:54   #9
Nnaya
Пользователь
 
Регистрация: 10.12.2014
Сообщений: 17
По умолчанию

Тогда Вы мне поможете?)
Вот программа, а сама задача такая:
Над квадратной матрицей А порядка n выполнить последовательность действий:
а) Умножить k-ю строку матрицы А на заданное число;
б) сформировать вектор V, элементами которого являются суммы модулей элементов строк полученной матрицы;
в) упорядочить элементы V в порядке возрастания.

Код:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include "StdAfx.h"
#include <conio.h>
#include <math.h>
#include <cmath>
#include <tgmath.h>

using namespace std;
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,A[100][100],k,h,V,X;
    cout<<"Введите количество строк квадратной матрицы А: n=";
    cin>>n;
    cout<<"Введите элементы матрицы A \n";
    for (i=0; i<n; i++)
        for (j=0; j<n; j++)
            cin>>A[i][j];
    cout<<"Матрица A \n";
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
            cout<<A[i][j]<<"\t";
        cout<<"\n";
    }
    cout<<"Введите номер строки k=";
    cin>>k;
    while ((k<=0)||(k>n))
    {
        cout<<"Неверное значение\n введите другое\n k=";
        cin>>k;
    }
    cout<<"Введите число, на которое умножаем k: h=";
    cin>>h;
    for(i=0;i<n;i++)
        A[k][i]=A[k][i]*h;
    cout<<"Матрица А\n";
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++)
            cout<<A[i][j]<<"\t";
        cout<<"\n";
    }
    
    for (i=0; i < n; i++)
    {
        V[i]=0;
        for (j=0; j<n; j++)
        V[i]+=abs(A[i][j]);
    }   
    cout<<"Вектор V, элементами которого являются суммы модулей элементов строк матрицы А: \n" ;
    for (i=0; i < n; i++)
    {
        cout<<V[i]<<"\n";
    }
    cout<<"Упорядочим элементы V в порядке возрастания:\n";
    for (i=0;i<n-1;i++)
        for (j=0;j<n-1-i;j++)
            if (V[j]>V[j+1])
			{
                X=V[j];
                V[j]=V[j+1];
                V[j+1]=X;
            }
    cout<<"Получившийся вектор:\n";
    for (i=0;i<n;i++)
        cout<<V[i]<<" ";
    cout<<endl;
    system("pause");
    return 0;
}
Nnaya вне форума Ответить с цитированием
Старый 12.12.2014, 21:30   #10
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Да у вас все работает, кроме двух глупостей - не правильно объявлен V, да нумерация строк при вводе идет от 1, а в программе должна быть от 0.
Код:


#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include "StdAfx.h"
#include <conio.h>
#include <math.h>
#include <cmath>
//#include <tgmath.h>

using namespace std;
int main()
{
	setlocale (LC_ALL, "RUS");
	int i,j,n,A[100][100],k,h,V[100],X;
	cout<<"Введите количество строк квадратной матрицы А: n=";
	cin>>n;
	cout<<"Введите элементы матрицы A \n";
	for (i=0; i<n; i++)
		for (j=0; j<n; j++)
			cin>>A[i][j];

	cout<<"Матрица A \n";
	for (i=0; i<n; i++)
	{
		for (j=0; j<n; j++)
			cout<<A[i][j]<<"\t";
		cout<<"\n";
	}
	cout<<"Введите номер строки k=";
	cin>>k;
	while ((k<=0)||(k>n))
	{
		cout<<"Неверное значение\n введите другое\n k=";
		cin>>k;
	}
	k--;

	cout<<"Введите число, на которое умножаем k: h=";
	cin>>h;
	for(i=0;i<n;i++)
		A[k][i]=A[k][i]*h;
	cout<<"Матрица А\n";
	for (i=0; i<n; i++)
	{
		for (j=0; j<n; j++)
			cout<<A[i][j]<<"\t";
		cout<<"\n";
	}

	for (i=0; i < n; i++)
	{
		V[i]=0;
		for (j=0; j<n; j++)
			V[i]+=abs(A[i][j]);
	}   
	cout<<"Вектор V, элементами которого являются суммы модулей элементов строк матрицы А: \n" ;
	for (i=0; i < n; i++)
	{
		cout<<V[i]<<" ";
	}
	cout<<"\n";
	cout<<"Упорядочим элементы V в порядке возрастания:\n";
	for (i=0;i<n-1;i++)
		for (j=0;j<n-1-i;j++)
			if (V[j]>V[j+1])
			{
				X=V[j];
				V[j]=V[j+1];
				V[j+1]=X;
			}
			cout<<"Получившийся вектор:\n";
			for (i=0;i<n;i++)
				cout<<V[i]<<" ";
			cout<<endl;
			system("pause");
			return 0;
}
Smogg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построить вектор по количеству элементов в i-й строке матрицы А (Delphi7 исправить ошибку) Анастасья Помощь студентам 3 04.04.2011 19:09
Составить функцию для умножения матрицы matr из n строк и m столбцов на вектор vect (из n элементов) KASPEER Помощь студентам 7 12.01.2010 15:11