also ich hab das programm nochmal etwas verändert, ist jetzt etwas kürzer und ein bissl übersichtlicher. trotzdem hab ich noch ein problem. sobald er die eingegebene zahl nach der eingegebene stelle findet gibt er sie aus. das ist auch in ordnung dannach soll er auch nix mehr machen. aber sollte er nix finden soll der zeiger null beinhalten, das geht auch, dannach soll er den ganzen array durchsuchen. bei mir findet er dann die zahl wenn sie vor der stelle liegt. er gibt sie aus, aber trotzdem will ich dann auch noch die anderen stellen wissen an der die zahl sich befindet aber das geht bei mir net weil er durch das return laufend das programm abbricht und nur eine stelle ausgibt. wo muss ich die for schleife einbauen?
ich hab mir gedacht das ich eine normale variable hochzählen lass aber die darf nicht größer sein als die anzahl der elemente(anzahl der zahlen).
das würde dann so aussehen for(int index = 0; index < elemente; index++). ja gut das wäre das dann muss ich aber noch sagen das die stelle an der er die zahl gefunden hat ist doch dann die stelle an der er die suche fortsetzen soll oder? also wäre das doch der return wert resultat+1 damit der zeiger an der nächsten stelle weitermacht. warum macht er das dann nicht??? hab ich irgendeinen denkfehler oder so? hab das 2000 mal ausprobiert und trotzdem gibt er mir immer die selbe stelle aus. könnte mir da mal bitte jemand helfen!?!?!?!?! dann noch ein problem: angenommen die zahl die zu suchen ist liegt nicht nach der eingegebenen stelle im feld. er fängt die suche von der stelle 0 an des arrays. so jetzt liegt die zu suchende zahl an der stelle 0 würde ich nicht pStelle = &array[-1]; schreiben sondern pStelle = &array[0]; dann würde er die nullte stelle überspringen und an der ersten anfangen warum?
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <dos.h>
int *findeZahl(int array[], int elemente, int eingabe, int *pStelle)
{
int *pEnde = array + elemente;
int *pArray;
for(pArray = array+(*pStelle); pArray < pEnde; pArray++)
{
if (*pArray == eingabe)
{
return pArray;
}
}
return NULL;
}
void main(void)
{
int stelle;
int eingabe;
const int elemente = 10;
int array[elemente];
int *pArray;
int *pStelle;
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 für Zahl*/
cout << endl << endl;
cout << "Bitte Zahl eingaben: ";
cin >> eingabe;
/*Eingabeaufforderung des Benutzers für Stelle*/
cout << endl << endl;
cout << "Bitte Stelle eingeben: ";
cin >> *pStelle;
stelle = *pStelle;
if (stelle > elemente || stelle < 0)
{
cout << "Der Zeiger zeigt auf eine Stelle ausserhalb des Arrays!" << endl;
cout << "Stelle " << pStelle << endl;
cout << "Abbruch mit beliebiger Taste!" << endl;
getch();
abort();
}
else;
{
/*Funktionsaufruf der Funktion findeZahl*/
pResultat = findeZahl(array, elemente, eingabe, pStelle);
/*Keine Übereinstimmungen im gesamten Array*/
if (pResultat == NULL)
{
pStelle = &array[-1];
cout << "Keine Uebereinstimmungen." << endl;
cout << "Ganzes Array wird durchsucht." << endl;
pResultat = findeZahl(array, elemente, eingabe, pStelle);
cout << "Gefunden an Stelle:" << endl;
cout << pResultat - array << endl;
}
else
{
cout << eingabe << " wurde an Stelle " << pResultat - array << " gefunden." << endl;
}
}
getch();
}
Alles anzeigen