Komm nicht mehr weiter wer kann helfen



  • Also hab das programm hier geschrieben, es funktioniert auch alles nur das programm soll mir aus einem zahlfeld heraus eine zahl suchen die vorher eingegeben wurde, das problem is nur sobald er eine zahl gefunden hat gibt er mir die adresse aus und bricht ab. es kann aber auch sein das die zahl zwei oder auch mehr stellen etwas weiter vor kommt, aber der gibt mir die nicht mehr mit aus. was muss ich schreiben damit die funktion mehrmals aufgerufen wird und er mir die adressen aus dem gesamten array herausgibt, die gleich sind mit der eingegebenen zahl? gruss

    int *findeZahl(int array[], int elemente, int eingabe, int *pStelle)
    {
       int *pEnde = array + elemente;
       int *pArray;
       int *pGefunden;
    
       /*Durchsuchen des Arrays ab Stelle 4*/
       cout << endl;
       cout << "Array wird ab Stelle 4 durchsucht." << endl;
       cout << "Ergebnis(se):" << endl;
       for(pArray = array+(*pStelle); pArray < pEnde; pArray++)
       {
       	if (*pArray == eingabe)
             {
          	     pGefunden = pArray;
                  return pGefunden;
             }
       }
    
       /*Duchsuchen des ganzen Arrays*/
       cout << "Keine Uebereinstimmungen." << endl << endl;
       cout << "Gesamtes Array wird durchsucht." << endl;
       cout << "Ergebnis(se):" << endl;
     	for(pArray = array; pArray < pEnde; pArray++)
      	{
      	     if (*pArray == eingabe)
         	     {
         	         pGefunden = pArray;
            	         return pGefunden;
         	     }
      	}
             return NULL;
    }
    
    void main(void)
    {
       int eingabe;
       const int elemente = 10;
       int array[elemente];
       int *pArray;
       int stelle = 4;
       int *pStelle = &stelle;
       int *pResultat;
       int *pEnde = array + elemente;
    
       /*Zufallszahlen erstellen per Generator*/
       randomize();
       for(pArray = array; pArray < pEnde; pArray++)
       {
          *pArray = 1+(rand() % 10);
          cout << *pArray << " ";
       }
    
       /*Eingabeaufforderung des Benutzers*/
       cout << endl << endl;
       cout << "Bitte Zahl eingaben: ";
       cin  >> eingabe;
    
       /*Funktionsaufruf der Funktion findeZahl*/
       pResultat = findeZahl(array, elemente, eingabe, pStelle++);
    
       /*Keine Übereinstimmungen im gesamten Array*/
       if (pResultat == NULL)
       {
          cout << "Keine Uebereinstimmungen." << endl;
       }
       /*Übereinstimmungen im Array*/
       else
       {
          cout << pResultat;
       }
       getch();
    }
    


  • Hi!

    Guck mal was du machst:

    if (*pArray == eingabe)
             {
                   pGefunden = pArray;
                  return pGefunden;
             }
    

    Du springst ja auch zurück. pGefunden zeigt hier auf eine Speicherstelle in pArray bzw. in array (pArray zeigt ja selbst nur auf array). Also entweder gibst du alle in der Funktion aus, immerhin hast du dort bei einer Ausgabe auch "Ergebnis(se):" stehen oder du legst ein Array an und speicherst darin die Adressen als Werte. Auf jedenfall musst du das Ergebnis am Ende der Funktion zurückgeben bzw. nachdem die jeweilige Routine durchgelaufen ist.

    Noch etwas:
    Hier geht es um C# und .NET und was du da gepostet hast ist C++. Wobei 'void main' auch falsch ist, da es in ISO-C++ 'int main' heißt (immer! auch ohne return am Ende).

    Code-Hacker


Anmelden zum Antworten