Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Magische Quadrate

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.01.2007, 18:15 Uhr
~Rheinfun
Gast


Hey Leute,

hab hier mal so nen paar Probleme hoffe ihr könnt mir helfen, also ich muss nen Magisches Quadrate schreiben mit Feldern usw.

Ich hab jetzt eins erstellt mit der Dimension 4, ich kann auch schon die Zahlen eingeben, nur sollen Zahlen net mehrmals auftauchen. Und da hackt es, ich weiss nicht wie ich die Zahlen überprüfen soll und dat zweite Problem ist, dass es nur magisch ist wenn es waagerecht, senkrecht und diagonal die gleiche Summe ergibt ... ich frag mich wie ich die for schleifen schreiben soll damit er nur die ersten 4 zeilen addiert dann die nächsten und die halt überprüft ... hoffe mir kann jemand helfen



C++:
#include <stdio.h>

    enum { DIM = 4 } ;
    typedef double Matrix[ DIM ][ DIM ];


void lies (Matrix a) {
    
    int i, j;
    
    for (i=0; i < DIM; i++) {
        for (j=0; j < DIM; j++) {
            printf ("Geben Sie ihre Zahl fuer das Feld [ %d ][ %d ] ein: ", i, j);
            scanf ( "%lf", &a[ i ][ j ]);
        }
    }
    
    return ;
    
}



void drucke (Matrix a) {
    
     int i,j;
    
     printf ( "\n");
          
     for( i = 0; i < DIM ; i++) {
          for( j = 0; j < DIM; j++)
               printf ( "  %.0f  ", a[ i ][ j ]);
          printf ("\n");
     }
     printf ( "\n");
    
     return ;
    
}

void magisch (Matrix a) {
    
     int i,j;
     double summe=0;
    
     for( i = 0; i < DIM ; i++) {
          for( j = 0; j < DIM; j++) {
              
               summe=a[ i ][ j ]+summe;           // So wie es hier steht addiert er alle Felder zusammen
               printf ("Waagerecht: %.0f ",summe);
          }
     }
}



int main (void) {
    
    Matrix a;
    
    lies ( a ) ;
    
    drucke ( a );
    
    magisch ( a );
    
    
return 0;

}


Dieser Post wurde am 16.01.2007 um 20:05 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.01.2007, 19:44 Uhr
xXx
Devil


Versuch mal irgendwie sowas:

C++:
#include <iostream>

const unsigned short dimension = 4;
typedef double Matrix[dimension][dimension];

void magic(Matrix&);
void read(Matrix&);
void show(Matrix&);

int main (void)
{
    Matrix a;
    read(a);
    show(a);
    magic(a);

    return 0;
}

void read(Matrix& a)
{
    for (unsigned short x = 0; x < dimension; ++x)
    {
        for (unsigned short y = 0; y < dimension; ++y)
        {
            std::cout << "Geben Sie bitte Ihre Zahl fuer das Feld [" << x << "][" << y << "] ein: " << std::endl;
            std::cin >> a[x][y];
        }
    }
}

void show(Matrix& a)
{
    for (unsigned short x = 0; x < dimension; ++x)
        for (unsigned short y = 0; y < dimension; ++y)
            std::cout << a[x][y] << std::endl;
}

void magic(Matrix& a)
{    
    unsigned int sum[dimension];
    for (unsigned short x = 0; x < dimension; ++x)
    {
        for (unsigned short y = 0; y < dimension; ++y)
            sum[x] += a[x][y];

        std::cout << "Waagerecht :: " << x << ". Reihe: " << sum[x] << std::endl;
    }
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.01.2007, 20:00 Uhr
~Rheinfun
Gast


das sieht mir irgendwie nach c++ aus ... ich arbeite aber mit c und nen paar befehle sind mir auch unbekannt ...

hat man da keine andere möglichkeit ?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.01.2007, 20:07 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi hier so in C:


C++:
// Matrix als Pointer übergeben, dann kriegt auch der Aufrufer wieder das Ergebnis!
void lies (Matrix *a) {
    
    int i, j;
    
    for (i=0; i < DIM; i++) {
        for (j=0; j < DIM; j++) {
            printf ("Geben Sie ihre Zahl fuer das Feld [ %d ][ %d ] ein: ", i, j);
            scanf ( "%lf", a[ i ][ j ]); // hier dann natürlich kein &, da a ja schon eine adresse ist(  &() und *() heben sich ja auf ;) )
        }
    }
    
    return ;
    
}



void drucke (Matrix *a) {
    
     int i,j;
    
     printf ( "\n");
          
     for( i = 0; i < DIM ; i++) {
          for( j = 0; j < DIM; j++)
               printf ( "  %.0f  ", a[ i ][ j ]);
          printf ("\n");
     }
     printf ( "\n");
    
     return ;
    
}

void magisch (Matrix *a) {
    
     int i,j;
     double summe=0;
    
     for( i = 0; i < DIM ; i++) {
          for( j = 0; j < DIM; j++) {
              
               summe=a[ i ][ j ]+summe;           // So wie es hier steht addiert er alle Felder zusammen
               printf ("Waagerecht: %.0f ",summe);
          }
     }
}



int main (void) {
    
    Matrix a;
    
    lies ( &a ) ;
    
    drucke ( &a );
    
    magisch ( &a );
    
    
return 0;

}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.01.2007, 20:19 Uhr
~Rheinfun
Gast


... mmmh ich versteh net ganz ... du hast jetzt nur die lies verändert .. aber mit der hatte ich ja keine probs


die überprüfung der zeilen,spalten und diagonalen fehlt mir doch ?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.01.2007, 22:22 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
ich habe nur deinen Fehler behoben, das nach lies natürlich wieder die uninitialisierte Matrix weiter an drucke und magisch weitergegeben wird, da du ja nur eine kopie innerhalb der funktion verändert hast. Deine Frage habe ich mir wenn ich ehrlich bin noch gar nicht angesehen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: