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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2010, 19:33   #1
Перфаратар
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 15
По умолчанию Задача на С++

Постановка задачи такова: дана квадратная матрица, после того как пользователь заполнит матрицу программа должна исключить диагонали матрицы, которые поделят её на 4 сектора. Найти сумму элементов для каждого сектора.

Вот мой пример, но он подходит для матрицы 3х3. Я там нашел сумму только первого сектора, но это не важно смысл как найти остальные тотже:
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

const int n=10, m=10;

int _tmain(int argc, _TCHAR* argv[])
{
	int x[n][m], i, j, q, w, e, s1=0;
	cout<<"Vvedite kol-vo ryadkov:";
	cin>>q;
	cout<<"Vvedite kol-vo stolbcov:";
	cin>>w;
	if(q!=w)
	{
		cout<<"Vvedite kvadratnuy matricu!";
	}
	else
	{
		if(q<3)
		{
			cout<<"Vse elementy matricy isklyucheny diagonalyami!";
		}
		else
		{
			for(i=0;i<q;i++)
			{
				for(j=0;j<w;j++)
				{
					cout<<"Vvedite["<<i<<"]["<<j<<"]:";
					cin>>e;
					x[i][j]=e;
				}
			}
			cout<<"Matrica, kotoruyu vveli:"<<endl;
			for(i=0;i<q;i++)
			{
				for(j=0;j<w;j++)
				cout<<x[i][j]<<" ";
				cout<<endl;
				cout<<endl;
			}
			x[i][j]=0;
			for(i=0;i<q-2;i++)
			{
				for(j=1;j<w-1;j++)
				{
					s1=s1+x[i][j];
				}
			}
			cout<<"Suma pervogo sektora:"<<s1<<" ";
		}
	}
	getch();
	return 0;
}
Подправьте программу, что бы она была универсальна вне зависимости 3х3, 4х4, или 5х5 введёт пользователь.
Перфаратар вне форума Ответить с цитированием
Старый 21.10.2010, 23:09   #2
Перфаратар
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 15
По умолчанию

Спасибо всем за помощь... Оказывается студенты быстрее программистов пишут я посидел два денька и написал. Кому интересно:
Код:
// Постановка задачи: Дана квадратная матрица. Программа должна исключить диагонали матрицы, которые поделят её на 4 сектора, найти сумму элементов для каждого сектора и вывести на экран максимальную.
// Автор: Алексей Гауба
// Дата: 21.10.10

#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;
const int n=10;

int _tmain(int argc, _TCHAR* argv[])
{
	int mat[n][n],				// Объявление массива
		i, j,					// Номера элементов в матрице(массиве)
		q,						// Размер матрицы
		e,						// Элемент массива
		s1=0, s2=0, s3=0, s4=0,	// Сумы элементов для четырёх секторов
		max;					// Максимальная сумма
	cout<<"Vvedite razmer matrici:";	// Ввод размера матрицы
	cin>>q;
	if(q<3)								// Проверка размера матрицы
	{
		cout<<"Vse elementy matricy isklyucheny diagonalyami!";	// Если матрица слишком маленькая, то диагонали исключают все её элементы
	}
	else
	{
		for(i=0;i<q;i++)		// Заполнение матрицы с клавиатуры
		{
			for(j=0;j<q;j++)
			{
				cout<<"Vvedite["<<i<<"]["<<j<<"]:";
				cin>>e;
				mat[i][j]=e;
			}
		}
		cout<<endl;
		cout<<"Matrica, kotoruyu vveli:"<<endl; // Для визуального удобства выводим на экран матрицу, которая была введена
		for(i=0;i<q;i++)
		{
			for(j=0;j<q;j++)
			cout<<mat[i][j]<<" ";
			cout<<endl;
			cout<<endl;
		}
		mat[i][j]=0;					// Обнуляем массив
		for(i=0;i<q;i++)				// Цикл проверит все элементы матрицы
		{
			for(j=0;j<q;j++)
			{
				if(j<(q-1-i) && j>i)	// Отделяем элементы первого сектора от остальных
				s1+=mat[i][j];			// Сумма первого сектора
				if(j>(q-1-i) && j>i)	// Элементы второго сектора
				s2+=mat[i][j];			// Сумма второго сектора
				if(j>(q-1-i) && j<i)	// Элементы третьего сектора
				s3+=mat[i][j];			// Сумма третьего сектора
				if(j<(q-1-i) && j<i)	// Элементы четвёртого
				s4+=mat[i][j];			// Сумма четвёртого
			}
		}			
		cout<<"Suma pervogo sektora:"<<s1<<" ";	// Вывод на экран суммы всех четырёх секторов
		cout<<endl;
		cout<<"Suma vtorogo sektora:"<<s2<<" ";
		cout<<endl;
		cout<<"Suma tretego sektora:"<<s3<<" ";
		cout<<endl;
		cout<<"Suma chetvertogo sektora:"<<s4<<" ";
		cout<<endl;
		cout<<endl;
		if (s1>s2 && s1>s3 && s1>s4) max=s1;	// Нахождение максимальной суммы
		if (s2>s1 && s2>s3 && s2>s4) max=s2;
		if (s3>s2 && s3>s1 && s3>s4) max=s3;
		if (s4>s2 && s4>s3 && s4>s1) max=s4;
		cout<<"Naibolshaja suma:"<<max<<" ";	// Вывод на экран наибольшей суммы
		cout<<endl;
		}
	getch();
	return 0;
}
Перфаратар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача Dog Помощь студентам 2 21.09.2009 09:22