Übergabe von Arrays /Gültigkeitsbereich von Variablen



  • Hallo,

    ich beschäftige mich gerade mit Arrays und bin auf folgendes Problem gestoßen:

    #include "stdafx.h"
    
    using namespace System;
    
    int quadriere(Int32 feld[j])
    {
    	Int32 quadrat;
    	quadrat= feld[j]*feld[j];
    }
    
    int main(array<System::String ^> ^args)
    {
    	Int32 feld[5];
    
    	for (Int32 i=0; i<4; i++)
    	{
    		Console::WriteLine("Bitte geben Sie eine Zahl ein! ");
    			feld[i] = Convert::ToInt32(Console::ReadLine());
    	}
    
    for (Int32 j=0; j<4; j++)
    {
    	Console::Write("{0} \t", feld[j]);
    	Console::WriteLine ("Das Quadrat von {0} ist {1}", feld[j], quadriere(feld[j]));
    }
        return 0;
    }
    

    wenn ich nun versuche dieses Programm übersetzen zu lassen, erhalte ich folgende fehlermeldung:

    1>Felder1.cpp
    1>.\Felder1.cpp(7) : error C2065: 'j': nichtdeklarierter Bezeichner
    1>.\Felder1.cpp(26) : error C2664: 'quadriere': Konvertierung des Parameters 1 von 'int' in 'int []' nicht möglich

    wenn ich dieses Programm ohne Felder schreibe, funktioniert alles nach Wunsch:

    ich hoffe ihr könnt mir sagen, wo mein Denkfehler liegt 🙂

    Vielen Dank & mfg Dragon



  • 1. Dein Array ist 5 Felder groß

    Int32 feld[5];
    

    du benutzt aber nur 4 (nimm i < 5)

    zum Problem

    feld ist ein Array von Integer werten.
    wenn du in der Schleife

    feld[j]
    

    schreibst, bekommst du einen einzelnen Integer,
    den musst du nicht 2mal dereferenzieren 🙂

    ändere die Funktion um zu

    int quadriere(Int32 wert)
    {
        Int32 quadrat;
        quadrat= wert*wert;
        return quadrat; // wir wollen den wert wieder zurückgeben !
    }
    


  • Vielen dank für die schnelle Antwort 🙂

    => nun funktioniert alles wie gewünscht

    mfg Dragon


Anmelden zum Antworten