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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2015, 13:25   #1
MaKs676
Новичок
Джуниор
 
Регистрация: 25.06.2015
Сообщений: 1
По умолчанию Здравствуйте. Помогите пожалуйста исправить код C++

задание: дан целочисленный массив А[n][m]. сформировать одномерный массив B[m] из произведений положительных элементов соответствующих столбцов массива А. Обязательно с динамическим выделением памяти.
вот код:
Код:
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
	setlocale(0, "");
	int **A, *B;
	int str, stl;
	int flag;
	int p;
	int M = 0;

	cout << "введите количество строк\n";
	cin >> str;
	cout << "введите количество столбцов\n";
	cin >> stl;

	A = new int*[str];//Выделяем память динамически для массива A
	for (int i = 0; i < str; i++)
	{
		for (int j = 0; j < stl; j++)//Выделяем память динамически для массива A
			A[i] = new int[stl];
	}

	cout << "Введите элементы массива\n";
	for (int i = 0; i < str; i++)
	for (int j = 0; j < stl; j++)
		cin >> A[i][j];
	
	cout << "Массив А: \n";
	for (int i = 0; i < str; i++)//Выводим массив A  
	{
		for (int j = 0; j < stl; j++)
			cout << A[i][j] << "	";//Выводим массив A 
		cout << "\n";
	}
	B = new int[stl]; //Выделяем память динамически для массива B
	
	//Цикл составления массива B из положительных элементов столбцов матрицы А
	for (int j = 0; j<stl; j++)
	{
		p = 1;
		for (int i = 0; i<str; i++)
		{
			if (A[i][j]>0)
			{
				p = p * A[i][j];
					
			}
			else 
			{
				M++;
				if (M%2 == 0) p = 0;
			}
		}
		 B[j] = p;
	}
	//вывод массива В
	cout << "Массив B:\n";
	for (int j = 0; j < stl; j++)
		cout << B[j] << "	";
	cout << "\n";
	system("pause");
	return 0;
}
но он работает не всегда правильно надо вот здесь:
Код:
for (int j = 0; j<stl; j++)
	{
		p = 1;
		for (int i = 0; i<str; i++)
		{
			if (A[i][j]>0)
			{
				p = p * A[i][j];
					
			}
			else 
			{
				M++;
				if (M%2 == 0) p = 0;
			}
		}
		 B[j] = p;
	}
что-то помять или добавить, я не знаю что(

Последний раз редактировалось Stilet; 01.07.2015 в 15:08.
MaKs676 вне форума Ответить с цитированием
Старый 01.07.2015, 14:45   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Как работает код, что не работает, что выдает в результате? Самое главное при работе с динамической памятью на Си/С++ - это ее освобождение после использования. Функции free / delete И не надо ничего "мять"
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Здравствуйте, помогите пожалуйста DarenvanDorff Помощь студентам 4 01.02.2014 21:34