Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » 8. Sonntagsrätsel: Für Anfänger

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
11.10.2002, 17:43 Uhr
virtual
Sexiest Bit alive
(Operator)


Schon mal ein Sonntagsrätsel auf Halde, damit auch niemand umsonst am Sonntag sucht:

C++:
string FindAddr( list<Employee> l, string name )
  {
    for( list<Employee>::iterator i = l.begin();
         i != l.end();
         i++ )
    {
      if( *i == name )
      {
        return (*i).addr;
      }
    }
    return "";
  }


Identifiziere alle Stellen im Code, wo unnötigerweise temporaere Objekte erzeugt werden
--
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
001
11.10.2002, 19:40 Uhr
void*
Generic Pointer
(Operator)


Hallo!

Hat Employee einen operator==() für strings, oder was?

MfG
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.10.2002, 20:22 Uhr
fry_



Hi Ihr

Vor derselben Frage stand ich eben auch, denn das hier
if( *i == name )
war wieder so ein fieses Ding, fand ich. struct fiel damit also weg u. es
konnte nur noch eine Klasse sein (nach langem Ausprobieren).
Nun ja, ich hab mir das dann so zusammen gebastelt:

C++:
class Employee {

public:
    string name;
    string addr;

    Employee() {}
    const bool operator == (string& s) {
        return name==s;
    }
};

(ich hoffe, das kommt in etwa hin?)

Zur Aufgabenstellung habe eine Frage: Wird an 'name' eine Stringvariable übergeben oder ein normaler String -> "..."?
--
mit computern geht alles viel schneller
es dauert nur ein bisschen länger

Dieser Post wurde am 11.10.2002 um 21:09 Uhr von fry_ editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.10.2002, 21:07 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
fry_ postete
Zur Aufgabenstellung habe eine Frage: Wird an 'name' eine Stringvariable übergeben oder ein normaler String -> "..."?


Ist Für die Fragestellung irrelevant. ABer wenn es Dir Spaß macht nimm an, dass ein string übergeben wird
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 11.10.2002 um 21:08 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.10.2002, 21:09 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
void* postete
Hat Employee einen operator==() für strings, oder was?

Ja.
--
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
005
11.10.2002, 21:36 Uhr
fry_



Ja, ich hab' meinen Irrtum gefunden:

bool operator == (const string& s) {

So würde es wirklich keine Rolle mehr spielen.
--
mit computern geht alles viel schneller
es dauert nur ein bisschen länger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.10.2002, 13:46 Uhr
void*
Generic Pointer
(Operator)


Hallo!

@fry_: Das verwirrt mich:


Zitat:

war wieder so ein fieses Ding, fand ich. struct fiel damit also weg u. es
konnte nur noch eine Klasse sein



Stehe ich jetzt auf dem Schlauch oder ist der einzige Unterschied zwischen struct und class in C++, dass in einer struct bei default alles public und in der class private ist?

Gruß
void*
--
Gruß
void*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.10.2002, 15:17 Uhr
void*
Generic Pointer
(Operator)


Hallo!

ACHTUNG: Ein Lösungsversuch...wer selber rätseln will nicht weiter lesen.
Tja, ich muss ein übler Anfänger sein... ich konnte nur 1,5 Stellen finden...


C++:
#include <list>
#include <string>

using namespace std;

const string empty("");

class Employee
{
public:
  string name;
  string addr;

  bool operator==(const string &rhs) const
  {
    return name == rhs;
  }
};

//string FindAddr( list<Employee> l, string name )
// vermeide Kopie von  l und name
const string &FindAddr(const list<Employee> &l, const string &name )
{
    for( list<Employee>::const_iterator i = l.begin();
         i != l.end();
         i++ )
    {
     if( *i == name )
     {
        return (*i).addr;
     }
    }
    //return ""; // string muss erzeugt und dann kopiert werden
    return  empty;
}

int main(void)
{
  string n("Egon");
  list<Employee> e;
  Employee E;
  E.addr="Hier und da";
  E.name="Egon";
  e.push_back(E);
  string res=FindAddr(e, n);
  res+=" 5";

  return(0);
}



Da bin ich ja mal wirklich auf die Lösung gespannt...

Gruß
void*
--
Gruß
void*

Dieser Post wurde am 12.10.2002 um 15:17 Uhr von void* editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.10.2002, 15:55 Uhr
virtual
Sexiest Bit alive
(Operator)


@void* Also Du hast Die Aufgabe bisher zu 2/3 gelöst
--
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
009
12.10.2002, 17:14 Uhr
fry_




Zitat:
@fry_: Das verwirrt mich:...

Sorry void*, ich war net da -> sonst hätten wir uns vorher noch darüber etwas austauschen können.
Eigentlich sieht meins genauso aus, nur habe ich noch die Definition des iterators raus genommen. Da bin ich aber auch schon an meine Wissensgrenze gestoßen.
C++:
#include <iostream>
#include <string>
#include <list>

using namespace std;

class Employee {

public:
    string name;
    string addr;


    Employee() {}
    bool operator == (const string& s) { return name==s; }
        
};

list<Employee>::iterator i;
const string empty(""); // danke, void* :)

const string& FindAddr( list<Employee>& l, const string& name )
{
    for(i = l.begin();
        i != l.end();
        i++ )
    {
     if( *i == name )
     {
        return (*i).addr;
     }
    }
    return empty;
}

int main() {

    list<Employee> liste;

    Employee e;
    e.name="Jupp";
    e.addr="Street001";
    liste.push_back(e);

    e.name="Karl Heinz";
    e.addr="Street099";
    liste.push_back(e);

    string str_in;
    getline(cin, str_in);
    cout << FindAddr(liste,str_in) << endl;


    return 0;
}


Zitat:

Da bin ich ja mal wirklich auf die Lösung gespannt...

Geht mir genauso.

Gruß
--
mit computern geht alles viel schneller
es dauert nur ein bisschen länger

Dieser Post wurde am 12.10.2002 um 17:36 Uhr von fry_ editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


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: