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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2009, 22:22   #1
Werth
Новичок
Джуниор
 
Регистрация: 15.10.2009
Сообщений: 1
По умолчанию Матрица

Вывести на экран Магический квадрат!!!
Чё то не получается!!!!

Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;

//------------------------------------------------
//Печать матрицы
int print_matrica(int arr[][3],int n)
{
	for(int i = 0; i < n; i++)
	{
		for(int k = 0; k < 3; k++)
		{
			arr[i][k] = rand() % 10 + 1;
			cout << setw(3) << arr[i][k];
		}
		cout << endl << endl;
	}
	cout << "//------------------------------------ "<< endl;
	return 0;
}
//Функция суммы строк
int summ_strok(int arr[][3],int n)
{
	int summ;
	for(int i = 0; i < n; i++)
	{
		summ = 0;
		for(int k = 0; k < n; k++)
		{
			summ += arr[i][k];
		}
		/*cout << "Summa " << i << " stroki = " << summ << endl;*/
	}
	return 0;
}
//------------------------------------------------
//Функция сумма столбцов
int summ_stolbcov(int arr[][3],int n)
{
	int summ;
	for(int k = 0; k < n; k++)
	{
		summ = 0;
		for(int i = 0; i < n; i++)
		{
			summ += arr[i][k];
		}
		/*cout << "Summa " << k << " stolbca = " << summ << endl;*/
	}
	return 0;
}
//------------------------------------------------
//Функция суммы главной диоганали
int summ_gdiog(int arr[][3], int n)
{
	int summ = 0;
	for(int i = 0; i < n; i++)
	{
		for(int k = 0; k < 3; k++)
		{
			if(i == k)
			{
				summ += arr[i][k];
			}
		}
	}
	/*cout << "Summa glavnoi dioganali = " << summ << endl;*/
	return 0;
}
//------------------------------------------------
//Функция суммы побочной диоганали
int summ_pdiog(int arr[][3], int n)
{
	int summ = 0;
	for(int i = 0; i < n; i++)
	{
		for(int k = 0; k < 3; k++)
		{
			if(i + k + 1 == n)
			{
				summ += arr[i][k];
			}
		}
	}
	/*cout << "Summa pobochnoi dioganali = " << summ << endl;*/
	return 0;
}
//------------------------------------------------
//Функция Магического квадрата
int mag_kvadrata(int arr[][3],int n)
{
	bool b = true;
	while(b == true)
	{
		print_matrica(arr,3);
		b = false;
		for(int i = 0; i < n; i++)
		{
			for(int k = 0; k < 3; k++)
			{
				if((summ_strok(arr,3) == summ_stolbcov(arr,3)) && (summ_strok(arr,3) == summ_gdiog(arr,3)) &&(summ_strok(arr,3) == summ_pdiog(arr,3)))
				{
					b = true;
					break;
				}
			}
			if(b == true)
			{
				break;
			}
		}
		
		
	}
	return 0;
}
//------------------------------------------------
//Главная функция
int _tmain(int argc, _TCHAR* argv[])
{
	const int n = 3;
	int arr[n][n];
	cout << "Matrica imeet vid: " << endl;
	print_matrica(arr,3);
	cout << endl;
	summ_strok(arr,3);
	summ_stolbcov(arr,3);
	summ_gdiog(arr,3);
	summ_pdiog(arr,3);
	mag_kvadrata(arr,3);
	_getch();
	return 0;
}

Последний раз редактировалось Sazary; 15.10.2009 в 22:24.
Werth вне форума Ответить с цитированием
Старый 16.10.2009, 18:04   #2
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

а конечная цель-то какая и в чем проблема?
если проблема в зацикливании, то в функции mag_kvadrata :
Код:
if((summ_strok(arr,3) == summ_stolbcov(arr,3)) && (summ_strok(arr,3) == summ_gdiog(arr,3)) &&(summ_strok(arr,3) == summ_pdiog(arr,3)))
{
b = false ; 
break;
}
m0nax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица Sarumjan Помощь студентам 1 21.05.2009 06:15
Матрица (Си) ManInBlack Помощь студентам 3 13.01.2009 13:43
Матрица BlonDino4Ka Паскаль, Turbo Pascal, PascalABC.NET 3 07.01.2009 00:04
Матрица =( Gwynbleidd Помощь студентам 3 16.12.2007 23:20