Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » C++ Programm

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
12.01.2005, 14:35 Uhr
Gölti



Hi! Brauche eure Hilfe! Haben in Programmieren folgende Hausaufgabe auf und ich kann sie nicht lösen! Ich hoffe ihr helft mir! Also hier die Aufgabenstellung:

a) Erstellen Sie eine Funktion findeZahl(), die mehrere Übergabeparameter hat: Eine ganze Zahl,
ein Feld ganzer Zahlen zwischen 1 und 100, die Länge des Feldes, sowie einen Zeiger, der auf
ein Element des Feldes zeigt.
Die Funktion soll die übergebene Zahl im Feld finden und einen Zeiger auf das Element zurückgeben,
in dem sich die Zahl befindet. Die Suche soll bei dem Element beginnen, auf das der zusätzlich
übergebene Zeiger zeigt.
Die Funktion soll NULL zurückgeben, falls die Zahl nicht gefunden wird. Die Funktion soll sicherstellen,
dass der Zeiger wirklich auf ein Element des Feldes verweist. Wenn dies nicht der
Fall ist, soll die Suche am Anfang des Feldes beginnen. Enthält der übergebene Zeiger den Wert
NULL, so soll die Suche auch am Anfang des Feldes beginnen.
Die Funktion soll ausschließlich Zeiger (keine Ausdrücke der Art 'Feldanfang+Index' !) für den
Zugriff auf das Feld verwenden. Entwerfen Sie den Algorithmus mittels eines Struktogramms.

b) Stellen Sie ein Hauptprogramm zum Test der Funktion zur Verfügung. Es soll ein Feld mit Zahlen
initialisieren und es soll alle möglichen erlaubten und fehlerhaften Funktionsaufrufe generieren,
um zu Testen, dass sich die Funktion korrekt verhält.
Das Hauptprogramm soll außerdem dem Anwender die Möglichkeit bieten, eine Suchzahl einzugeben.
Aus dem zurückerhaltenen Zeiger soll im Hauptprogramm berechnet werden, um das wievielte
Element im Feld es sich bei der gefundenen Position handelt. Das Hauptprogramm soll außerdem
die Funktion mehrfach aufrufen, um so alle im Feld vorhandenen passenden Zahlen zu
finden.

P.S.: Das ganze soll in Borland C++ geschrieben werden!
Schonma DANKE
MfG Gölti
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.01.2005, 15:48 Uhr
virtual
Sexiest Bit alive
(Operator)


Dein Ansatz?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.01.2005, 16:28 Uhr
Gölti



Hallo,

kann mir jemand helfen? Komme nicht mehr weiter. Bitte helft mir!!!

Danke im voraus.

C++:
#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; // Anzahl der ausgegebenen Elemente
   int array[elemente];
   int *pArray;
   int *pStelle;
   int *pResultat;
   int *pEnde = array + elemente;

   /*Zufallszahlengenerator*/
   randomize();
   for(pArray = array; pArray < pEnde; pArray++)
   {
      *pArray = 1+(rand() % 10); // % 10 steht für Zahlen bis 9
      cout << *pArray << " ";
   }

   /*Eingabeaufforderung*/
   cout << endl << endl;
   cout << "Bitte eine Zahl eingeben: ";
   cin  >> eingabe;

   /*Eingabeaufforderung des Benutzers für Stelle*/
   cout << endl << endl;
   cout << "Bitte eine Stelle eingeben: ";
   cin  >> *pStelle;
   stelle = *pStelle;

   if (stelle > elemente || stelle < 0)
   {
      cout << "\aDer Zeiger zeigt auf eine Stelle ausserhalb des Arrays!" << endl;
      cout << "Stelle " << pStelle << endl;
      cout << "Abbruch mit beliebiger Taste!" << endl;

      getch();
      abort();
   }

   else;
   {
      /*Funktionsaufruf von 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();
}


Dieser Post wurde am 13.01.2005 um 19:17 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.01.2005, 19:43 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ist nur ein einzeiler

C++:
int*findeZahl(int*a,int n,int x,int*p){for(p<a||p>=a+n?p=a:0,a+=n;a-p&&*p-x;++p);return a-p?p:NULL;}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 13.01.2005 um 19:44 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.01.2005, 19:54 Uhr
~Gast
Gast


Hallo Gölti.

Ich kenne die Verteilung von rand() nicht genau, aber ich denke wenn man 10 Zahlen mit werten zwischen 1-10 generiert, so kann es bestimmt passieren, das eine Zahl doppelt, eine andere dafür gar nicht auf taucht. Wenn man nach einer Zahl sucht die nicht generiert wurde,

C++:
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; // geht das wohl schief !!!
      }


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.01.2005, 20:02 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Ich kenne die Verteilung von rand() nicht genau, aber ich denke wenn man 10 Zahlen mit werten zwischen 1-10 generiert, so kann es bestimmt passieren, das eine Zahl doppelt, eine andere dafür gar nicht auf taucht. Wenn man nach einer Zahl sucht die nicht generiert wurde,


jo ist richtig... wenn du dir darüber keinen kopf machen willst kannst du einfach ein array mit zahlen von 1 bis 100 füllen und dann std::random_shuffle rüberjagen und die sache ist gegessen... (scheints ja auch c++ benutzen zu dürfen da du ja unter anderem auch cout verwendest)
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 13.01.2005 um 20:04 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.01.2005, 20:19 Uhr
Gölti



Könnt ihr mir bitte die Veränderungen gleich in den Quelltext schreiben?

@Windalf ja dürfen teilweise C++ benutzen, kannst du das bitte im Quellcode ändern?

Vielen Dank im voraus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.01.2005, 21:21 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@gölti
was konkret soll ich wo im quellcode verändern?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.01.2005, 09:40 Uhr
Gölti



Kannst du deine Veränderung mit "kannst du einfach ein array mit zahlen von 1 bis 100 füllen und dann std::random_shuffle rüberjagen und die sache ist gegessen..." mal im Quelltext ändern?

Bitte dringend!!!

Danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.01.2005, 20:19 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


www.fun-soft.de/showtopic.php?threadid=1805
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: