array mit maximalgroeße füllen



  • Hallöchen Leute, ich hätte da mal wieder ein kleines Problemchen.

    Header:

    #pragma once
    #ifndef VECTOR3D_H
    #define VECTOR3D_H
    
    const unsigned int n = 3;
    
    typedef double Vector[n];
    
    void addVectors(Vector Vector1, Vector Vector2, Vector Vector3);
    
    void subVectors(Vector Vector1, Vector Vector2, Vector Vector3);
    
    #endif // !VECTOR3D.H
    

    .cpp zum Header:

    #include "vector3D.h"
    
    void addVectors(Vector Vector1, Vector Vector2, Vector Vector3)
    {
    	for (int index = 0; index < n; index++)
    	{
    		Vector3[index] = Vector1[index] + Vector2[index];
    	}
    }
    
    void subVectors(Vector Vector1, Vector Vector2, Vector Vector3)
    {
    	for (int index = 0; index < n; index++)
    	{
    		Vector3[index] = Vector1[index] - Vector2[index];
    	}
    }
    

    main:

    #include <iostream>
    #include "vector3D.h"
    
    using namespace std;
    
    int main() {
    
    	double wert = 0;
    	Vector Vector1[n] = {};
    	Vector Vector2[n] = {};
    
    	cout << "Ersten Vektor füllen:" << endl;
    	for (int i = 0; i < n; i++)
    	{
    		cout << "Wert " << n << "ist: ";
    		cin >> Vector1[i];
    	}
    
    }
    

    warum zeigt mir visual studio folgendes an:
    Der Arraytyp "Vector" kann nicht zugewiesen werden.
    und:
    Der Arraytyp "Vector" kann nicht zugewiesen werden.

    hoffe mir kann das einer genau erklären, ich denke das liegt am "const" vor dem unsigned int n. aber wie kann ich das nach möglichkeit beibehalten?



  • Im Typ Vector ist die Dimension schon enthalten.

    Demnach sind die Variablen Vector1 und Vector2 in main 2D-Arrays.

    Du machst Funktionen für 3D (also eine feste Dimension) und packst dann die Arraygröße in eine globale Variable, die dann auch noch denn häufig genutzten Namen n hat.
    Schlimmer geht es fast nicht mehr.

    Doch geht, du definierst n im Header. Da haben Variablenddefinitionen nichts zu suchen.

    Machst du jetzt C oder C++?



  • DirkB schrieb:

    Im Typ Vector ist die Dimension schon enthalten.

    Demnach sind die Variablen Vector1 und Vector2 in main 2D-Arrays.

    Du machst Funktionen für 3D (also eine feste Dimension) und packst dann die Arraygröße in eine globale Variable, die dann auch noch denn häufig genutzten Namen n hat.
    Schlimmer geht es fast nicht mehr.

    Doch geht, du definierst n im Header. Da haben Variablenddefinitionen nichts zu suchen.

    Machst du jetzt C oder C++?

    warum sind das 2d-arrays. ich habe doch mit n die größe 3 gesetzt
    c++ war mein plan



  • ProjectCenix schrieb:

    warum sind das 2d-arrays. ich habe doch mit n die größe 3 gesetzt

    typedef double Vector[n]; // da ist das erstemal die 3. Vecter ist ein array 3 von double 
    
    Vector Vector1[n] = {};  // Da ist nochmal eine 3. Vector1 ist ein dann ein array 3 von array 3 von double
    

    Ein Array von einem Array wird i.A. als 2D-Array bezeichnet.

    ProjectCenix schrieb:

    c++ war mein plan

    Dann nutze auch die Möglichkeiten von C++.
    Im Augenblick ist es C mit cout

    Hier ist auch das C Unterforum.


Log in to reply