Boas malta, em baixo esta um código de um programa para um trabalho de faculdade ao qual querem que desenvolva em C mas eu fiz lo em C++, logo não me aceitaram, e com sorte, deixaram me que o volta se a fazer em C, então vim aqui pedir a vossa ajuda a ver se conseguem traduzir me. ficaria grato com vocês.
O problema é construir uma programa que desenhe o famoso quadrado magico em C
#include <iomanip>
#include <iostream>
#include <stdio.h>
using namespace std;
class cMagicSquare {
private:
int **m_ippMagicSquare;
const int m_iDim;
int m_iOtherDiagonal;
public:
cMagicSquare(int iInput);
~cMagicSquare();
void print() const;
};
cMagicSquare::cMagicSquare(int iInput):m_iDim(iInput) {
int iCol, iRow;
m_ippMagicSquare = new int *[m_iDim+1];
for(int i = 0; i <= m_iDim; m_ippMagicSquare[i++] = new int[m_iDim+1]);
for(iRow = 0; iRow <= m_iDim; iRow++)
for(iCol = 0; iCol <= m_iDim; m_ippMagicSquare[iRow][iCol++] = 0);
iRow = 1;
iCol = m_iDim / 2 + 1;
m_iOtherDiagonal = 0;
for(int iValue = 1; iValue <= m_iDim * m_iDim; iValue++) {
if(m_ippMagicSquare[iRow][iCol] > 0) {
iRow += 2;
if(iRow > m_iDim)
iRow -= m_iDim;
if(--iCol < 1)
iCol = m_iDim;
}
m_ippMagicSquare[iRow][iCol] = iValue;
m_ippMagicSquare[0][iCol] += iValue;
m_ippMagicSquare[iRow][0] += iValue;
if(iRow == iCol)
m_ippMagicSquare[0][0] += iValue;
if(iRow+iCol == m_iDim+1)
m_iOtherDiagonal += iValue;
if(--iRow < 1)
iRow = m_iDim;
if(++iCol > m_iDim)
iCol = 1;
}
}
cMagicSquare::~cMagicSquare() {
for(int i = 0; i <= m_iDim; delete [] m_ippMagicSquare[i++]);
delete [] m_ippMagicSquare;
}
//funçao que imprime a matriz
void cMagicSquare::print() const {
cout<<"\n O numero que escolheu e o "<<m_iDim<<", e o quadrado e: \n\n";
int iCol, iRow;
for(iRow = 1; iRow <= m_iDim; iRow++) {
cout<<" ";
for(iCol = 1; iCol <= m_iDim; cout<<setw(5)<<m_ippMagicSquare[iRow][iCol++]);
cout<<" = "<<setw(5)<<m_ippMagicSquare[iRow][0]<<"\n";
}
for(iCol = 0; iCol <= m_iDim; iCol++, cout<<"-----");
cout<<"\n"<<setw(5)<<m_iOtherDiagonal;
for(iCol = 1; iCol <= m_iDim; cout<<setw(5)<<m_ippMagicSquare[0][iCol++]);
cout<<" "<<setw(5)<<m_ippMagicSquare[0][0]<<endl;
}
int main() {
printf("Quadrado Magico \n");
//testa o caracter introduzido, e para sair do programa
for(int i = 1; i != 0;) {
cout<<"\n-Introduza o numero impar (0 para sair): "<<flush;
cin>>i;
if(1) {
if(i <= 0) {
if(i != -1)
printf("ERRO:\nO inteiro tem de ser positivo.\n");
} else if(i % 2 == 0) {
printf("ERRO:\nO numero tem de ser impar.\n");
} else if(i >= 14) {
printf("ERRO:\nO inteiro tem de ser menor que 14.\n");
}
else {
cMagicSquare *mspMySquare = new cMagicSquare(i);
mspMySquare->print();
delete mspMySquare;
}
}
}
return 0;
}
Ficarei a espera.
comprimentos
Editado por Micheus Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Pergunta
rika1987
Boas malta, em baixo esta um código de um programa para um trabalho de faculdade ao qual querem que desenvolva em C mas eu fiz lo em C++, logo não me aceitaram, e com sorte, deixaram me que o volta se a fazer em C, então vim aqui pedir a vossa ajuda a ver se conseguem traduzir me. ficaria grato com vocês.
O problema é construir uma programa que desenhe o famoso quadrado magico em C
Ficarei a espera.
comprimentos
Editado por MicheusIncluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.