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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2019, 19:26   #1
SadZhaba
 
Регистрация: 02.03.2018
Сообщений: 6
По умолчанию Выход за границы массива

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

Код:
#include <iostream>
#include <algorithm>
using namespace std;
void umnozh(int** arr, int n,int strings, int cols)
{
	for (int i = 0; i < strings; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			arr[i][j] = arr[i][j]*n;
		}
	}
}
void minus1(int** arr, int** arr1, int** res, int strings, int cols)
{
	for (int i = 0; i < strings; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			res[i][j] = arr[i][j] - arr1[i][j];
		}
	}
}
void uvector(int** arr, int* vector, int* result, int vcount)
{
	for (int i = 0; i < vcount; i++)
	{
		result[i] = 0;
		for (int j = 0; j < vcount; j++)
		{
			result[i] += arr[i][j] * vector[i];
		}
	}
}
void dvavect(int* arr1, int* arr2, int* res, int vcount)
{
	for (int i = 0; i < vcount; i++)
	{
		res[i] = arr1[i] + arr2[i];
	}
}

int main()
{
	int vcount = 0;
	int vcount1 = 0;
	cout << " Razmer vectora 1, vectora 2 " << endl;
	cin >> vcount >> vcount1;//Umnozhenie na vector
	int n = 0;
	cout << " Chislo dlya umnozheniya matricu " << endl;
	cin >> n;//Umnozhenie na N
	int strings, cols;
	int strings1, cols1;
	cout << " Razmer matricu 1 " << endl;
	cin >> strings >> cols;
	cout << " Razmer matricu 2 " << endl;
	cin >> strings1 >> cols1;
	int ResStr = strings;
	int ResCol = cols1;
	int* vect = new int[vcount];
	int* vect1 = new int[vcount1];
	int* resvect = new int[vcount];
	int* resvect1 = new int[vcount];
	//------------------------------------------------ZADANIE 2 MERNUH + VVOD---------------------------------------
	cout << " v1 " << endl;
	for (int i = 0; i < vcount; i++)
	{
		cin >> vect[i];
	}
	cout << " v2 " << endl;
	for (int i = 0; i < vcount1; i++)
	{
		cin >> vect1[i];
	}
	int** a = new int*[strings];
	for (int i = 0; i < strings; i++)
	{
		a[i] = new int[cols];
	}
	cout << " m1 " << endl;
	for (int i = 0; i < strings; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			cin >> a[i][j];
		}
	}
	int** b = new int*[strings];
	for (int i = 0; i < strings; i++)
	{
		b[i] = new int[cols];
	}
	cout << " m2 " << endl;
	for (int i = 0; i < strings; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			cin >> b[i][j];
		}
	}
	int** resultat = new int*[ResStr];
	for (int i = 0; i < ResStr; i++)
	{
		resultat[i] = new int[ResCol];
	}
	int** pr = new int*[strings];
	for (int i = 0; i < strings; i++)
	{
		pr[i] = new int[cols];
	}
	//--------------------------------------------------------------------------------------------------
	umnozh(b, n, strings, cols);
	minus1(a, b, pr, strings, cols);
	uvector(pr, vect, resvect, vcount);
	dvavect(resvect, vect1, resvect1, vcount);
	for (int i = 0; i < vcount; i++)
	{
		cout << resvect1 << " ";
	}
	system("pause");
}
SadZhaba вне форума Ответить с цитированием
Старый 27.02.2019, 21:01   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
result[i] += arr[i][j] * vector[i];
У вас точно vcount <= std::min(strings, cols) ?
p51x вне форума Ответить с цитированием
Старый 27.02.2019, 21:22   #3
SadZhaba
 
Регистрация: 02.03.2018
Сообщений: 6
По умолчанию

Да, там нужно было добавить пару условий, про которые я забыл(умножений матриц, сложение векторов, разность матриц).
SadZhaba вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выход за границы linkoln_7 HTML и CSS 0 22.12.2014 16:53
Выход за границы массива, имеет-ли смысл в виртуальных адресах? DakotaZ Общие вопросы C/C++ 4 27.08.2014 16:46
Выход за границы массива 220Volt Общие вопросы C/C++ 7 01.07.2013 07:55
Выход за границы массива weech Помощь студентам 8 30.04.2012 23:52