Ich checks nicht!



  • Hallo

    Ich bräuchte mal eure Hilfe, muss verschiedene Programme und kriegs net auf die Reihe,wär gut wenn ihr die mal schreiben könntet ,wenn erklärung dabei noch viel besser!

    also1)Der unterschied zwischen ++i und i++
    2)#include <cstdlib>
    #include <iostream>
    using namespace std;

    int main() {
    int feld[5][3];
    for (int i=0; i < 5; i++)
    for (int j = 0; j < 3; j++)
    feld[i][j] = i-j;
    for (int i=0; i < 5; i++) {
    for (int j = 0; j < 3; j++)
    cout << feld[i][j] << " ";
    cout << endl;
    }
    system("pause");
    return 0;
    }

    das proggi soll ich so ändern, dass zunächst ein
    feld1[5][3] mit Werten belegt wird, dann die Werte an eine feld2[5]
    [3] übergeben werden und von dort aus ausgegeben werden.

    3)ich soll schreiben ein Programm, dass ein [6][10]-Array mit den Summen von i
    und j belegt, ein zweites gleichgroßes Array mit den Differenzen aus
    i und j und ein drittes Array soll die Produkte der entsprechenden
    Felder der beiden anderen Array enthalten. Das dritte Array soll
    übersichtlich ausgegeben werden.

    4)Ich soll erstellen ein Array mit vier Linien! Diese Linien sollen im
    Koordinatensystem ein Quadrat mit der Seitenlänge 4 bilden. Die
    Seiten sollen parallel zu den Achsaen liegen, der linke, untere
    Punkt A habe die Koordinaten (-1;2).
    Gebt die Koordinaten der Linie mit einer for-Schleife aus!

    5)Ich soll ändern das beiliegende Programm so um, dass der Tausch der Variablen
    als Funktion swap erledigt wird.Es werden n Zahlen eingegeben.

    #include <cstdlib>
    #include <iostream>
    using namespace std;

    #define n 5

    int main() {
    int zahlen[n];
    int h;
    for (int i=0; i<n; i++) {
    cout << "Wert " << i << ": ";
    cin >> zahlen[i];
    }
    for (int i=0; i<n-1; i++)
    for (int j=i+1; j<n; j++)
    if (zahlen[i]>zahlen[j]) {
    h = zahlen[i];
    zahlen[i] = zahlen[j];
    zahlen[j]=h;
    }
    for (int i=0; i<n; i++)
    cout << i << ": " << zahlen[i] << endl;
    system("Pause");
    return 0;
    }

    Bitte helft mir, weil ich bin zu blöd dazu!

    Mfg



  • Also erstens macht man hier ja normalerweise keine Hausaufgaben und deine "Probleme" sind irgendwie sehr grundlegend, selbst wenn dir jemand alles vorsagen würde, würde es nicht viel helfen...

    Zweitens würde ich Code-Tags verwenden ^^

    Zu 1) bei ++i wird i um eins erhöht und dann der erhöhte Wert zurückgegeben. Bei i++ wird dagegen der ursprüngliche Wert von i zurückgegeben und dann wird i erhöht.

    Zu 2)

    #include <cstdlib> 
    #include <iostream> 
    using namespace std; 
    
    int main()
    { 
        int feld1[5][3]; 
        for (int i=0; i < 5; i++)
        {
            for (int j = 0; j < 3; j++) 
            {
                feld1[i][j] = i-j; 
            }
        } 
        int feld2[5][3];
        for (int i=0; i < 5; i++)
        {
            for (int j = 0; j < 3; j++) 
            {
                feld2[i][j] = feld1[i][j]; 
            }
        } 
        for (int i=0; i < 5; i++)
        {
            for (int j = 0; j < 3; j++) 
            {
                cout << feld2[i][j] << " " << endl; 
            }
        } 
        system("pause"); 
        return (0); 
    }
    

    Die restlichen Dinge kannst du dir (eigentlich) auch selbst ausdenken...

    Felix :xmas2:



  • oky, vielen dank ersma,weiß das mer da normal net macht aber ich bin halt zu blöd dazu, werde auch bald den kurs wechseln,sobald möglich also.
    wenn mir aber noch wer anders helfen will darf er das gferne machen>!



  • Ok...

    Zu 3)

    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
        int sumArray[6][10];
        int diffArray[6][10];
        int prodArray[6][10];
        //Man könnte auch für die Initialisierung jedes Array eine einzelne Schleife nehmen,das wäre aber aufwendiger
        for(int i = 0; i < 6; ++i)
        {
            for(int j = 0;j < 10; ++i)
            {
                sumArray[i][j] = i+j;
                diffArray[i][j] = i-j; //Differenz könnte auch andersherum sein...
                prodArray[i][j] = sumArray[i][j] * diffArray[i][j];
            }
        }
        for(int i = 0; i < 6; ++i)
        {
            for(int j = 0;j < 10; ++i)
            {
                cout << "prodArray[" << i << "][" << j << "] = " << prodArray[i][j];
            }
        }
        system("pause"); //Schlechter Stil, aber was solls
        return(0);
    }
    
    1. Keine Ahnung... bzw keine Lust 😞

    Hier gibt es zwei Möglichkeiten: Entweder macht man die Funktion swap() so, dass sie zwei Referenzen auf die zu tauschenden Elemente nimmt, oder aber man übergibt das Array und die Indizes der Elemente, die vertauscht werden sollen. Ich finde die Implementierung über die Referenzen persönlich besser, also benutze ich sie hier:

    #include <cstdlib> 
    #include <iostream> 
    using namespace std; 
    
    #define n 5 
    
    void Swap(int &zahl1, int &zahl2)
    {
        int temp = zahl1;
        zahl1 = zahl2;
        zahl2 = temp;
    }
    
    int main()
    { 
        int zahlen[n]; 
        for (int i=0; i<n; i++)
        { 
            cout << "Wert " << i << ": "; 
            cin >> zahlen[i]; 
        } 
        for (int i=0; i<n-1; i++) 
        {
            for (int j=i+1; j<n; j++) 
            {
                if (zahlen[i]>zahlen[j])
                { 
                    Swap(zahlen[i],zahlen[j]);
                } 
            }
        }
        for (int i=0; i<n; i++) 
        {
        cout << i << ": " << zahlen[i] << endl; 
        }
        system("Pause"); 
        return 0; 
    }
    

    Felix :xmas2:



  • ... bleibt noch 4)

    #include <iostream>
    #include <algorithm>    // copy
    #include <iterator>     // ostream_iterator
    
    class Koordinate
    {
    public:
        Koordinate() : m_x(0), m_y(0) {}
        Koordinate( double x, double y ) : m_x(x), m_y(y) {}
        friend Koordinate operator+( const Koordinate& a, const Koordinate& b )
        {
            return Koordinate( a.m_x + b.m_x, a.m_y + b.m_y );
        }
        Koordinate ortho() const { return Koordinate( -m_y, m_x ); }
        friend std::ostream& operator<<( std::ostream& out, const Koordinate& k )
        {
            return out << k.m_x << " " << k.m_y;
        }
    private:
        double m_x, m_y;
    };
    
    class Linie
    {
    public:
        Linie() : m_von(), m_bis() {}
        Linie( const Koordinate& von, const Koordinate& richtung )
            : m_von( von ), m_bis( von + richtung ) {}
        Koordinate ende() const { return m_bis; }
        friend std::ostream& operator<<( std::ostream& out, const Linie& l )
        {
            return out << "Linie von " << l.m_von << " nach " << l.m_bis;
        }
    private:
        Koordinate m_von, m_bis;
    };
    
    int main()
    {
        using namespace std;
        Linie linien[4];  // Array mit 4 Linien
        Koordinate richtung( 4, 0 );  // eine Seite 4 lang, parallel zu X
        linien[0] = Linie( Koordinate( -1, 2 ), richtung ); // beginne bei [-1;2]
        for( int i=1; i<sizeof(linien)/sizeof(*linien); ++i )
        {
            richtung = richtung.ortho(); // drehe 90Grad nach links
            linien[i] = Linie( linien[i-1].ende(), richtung );
        }
        copy( linien, linien + sizeof(linien)/sizeof(*linien), ostream_iterator< Linie >( cout << "Das Quadrat:\n", "\n" ) );
        return 0;
    }
    

    Bem.: die geforderte for-Schleife versteckt sich im 'copy'

    Gruß
    Werner :xmas2:


Log in to reply