2015-11-24 2 views
-5

наш учитель сказал нам сделать C++-программу, которая генерирует магический квадрат 3x3 или выше, и это то, что я получил до сих пор, но не работает. помогите мне пожалуйста.Magic Square 3x3 C++

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

using namespace std; 
// A B C 
// D E F 
// G H I 
int main() 
{ 
srand(time(0)); 
int A,B,C,D,E,F,G,H,I; 
do 
{A=rand()%9+1; 
B=rand()%9+1; 
C=rand()%9+1; 
D=rand()%9+1; 
E=rand()%9+1; 
F=rand()%9+1; 
G=rand()%9+1; 
H=rand()%9+1; 
I=rand()%9+1;} 
while ((A+B+C!=15) && (D+E+F!=15) && (G+H+I!=15) && (A+D+G!=15) && (B+E+H!=15) && (C+F+I!=15) && 
     (A+E+I!=15) && (C+E+G!=15) && (A!=B!=C!=D!=E!=F!=G!=H!=I)); 
     cout<<A<<" "<<B<<" "<<C<<endl; 
     cout<<D<<" "<<E<<" "<<F<<endl; 
     cout<<G<<" "<<H<<" "<<I<<endl; 
return 0; 
} 
+4

** Что ** не работает? –

+1

Пожалуйста, отредактируйте этот вопрос, чтобы включить четкое описание проблемы. –

+1

'A! = B! = C! = D! = E! = F! = G! = H! = I' условные утверждения не цепятся так. После первого сравнения все другие сравнения проверяются на 'true' или' false'. –

ответ

0

Когда вы пишете A!=B!=C!=D вы должны, вероятно, писать A!=B && B!=C && C!=D, или, возможно, !(A==B || B==C || C==D). То, как вы его пишете, первое сравнение приведет к bool, который затем будет сравниваться со следующим значением.

+0

Также ему нужно добавить A! = C, потому что если значения будут 'A = 1; B = 2; C = 1' ваше выражение вернет 'true', но результат должен быть' false' =) EDIT: много beter – Michael

+0

Я не получаю это может кто-то опубликовать его полностью workig, поэтому я не могу его изучить – Carnage

+1

Из того, что я видел, пользователи здесь будет нерешительно полностью решить вашу проблему. Мы с большей вероятностью укажем вам в правильном направлении и дадим вам понять это. – PunDefeated