Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Aufbau einer Funktion (mit Flags)

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
19.05.2008, 21:35 Uhr
pixar



Hallo,

mein guter Vorsatz für das Jahr 2008 ist es, mich endlich mal aufzuraffen
die Programmierung mit C++ (und den Umgang mit einem freien Compiler) unter Windows zu erlernen.

Zum Ausprobieren diverser einfacher Beispielcodes verwende ich DevC++4.
Derzeit bin ich dabei, die Grundlagen mit Hilfe diverser C++-Tutorials durchzuarbeiten, und hoffe ihr seht mir nach, dass ich hier jetzt schon Codefragen stelle, ohne rechten Durchblick zu haben.

Aber leider passiert es recht häufig, dass selbst wenn ich die Theorie hinter einem kleinen Beispiel-Code zu verstehen glaube, dieser beim Kompilieren eine Fehlermeldung erzeugt und nicht ausgeführt werden kann.

Deshalb wäre mir wichtiger, als die erwähnten Beispielcodes, dass ich eure Hilfe bei meinem Umsetzungsversuch einer Funktion zur Stringbearbeitung erhalte. (Unabhängig davon, ob sie vielleicht schon in irgendeiner "Include.h" vorkommt.)
Ich erhoffe mir dadurch einen schnelleren Lernerfolg und ein besseres Syntaxverständis, um bald selbständig eigene Funktionen und Klassen schreiben zu können.

Der Aufbau eines C++-Programms ist mir relativ gut verständlich geworden.
Funktionen werden vor der Main-Funktion definiert und von innerhalb der Main-Funktion aufgerufen.

Nicht so klar ist mir allerdings, wie eine Funktion ihre Parameterliste und die Parameter des Aufrufs verwendet.
Um solche Sachen wie Parameterübergaben musste ich mich bisher nie selbst kümmern, und dementsprechend groß ist die Verwirrung, wo was hingehört.

Nachfolgend mal ein Pseudo-Code was die Funktion können soll:

QuellText: zu durchsuchender Textstring beliebiger Länge
TextStueckNr: z.B. Text in Zeile x, Text nach Tabulator x, nach String "xyz", etc.
TextTrenner: z.B. Zeilenumbruch, Tabulator, beliebiger String, etc.
ZielText: gefundener Text beliebiger Länge z.B. in Zeile x, nach Tabulator x, nach Wort "xyz", etc.
CaseFlag: 1 = Case sensitive (optional), 0 = kein Case sensitive
BackwardFlag: 1 = Rückwärtssuche (optional), 0 = Vorwärtssuche


Code:

string TextStueckRueckgabe (string QuellText, string ZielText, string TextTrenner, int TextStueckNr, int CaseFlag, int BackwardFlag)
{

int LengthTextTrenner = AnzahlZeichen(TextTrenner), EndPosition;
string CopyQuelle = QuellText;

// Suchen des TextTrenners bis das gesuchte Teilstueck erreicht wurde
For (i=0; i<=TextStueckNr; i++)
  {
   find (string TextTrenner, string CopyQuelle, int PosTextTrenner)

// Falls kein Sucherfolg, Schleife abbrechen und Ergebnis leer zurückliefern
   if (PosTextTrenner > 0)
    {
   // Neues Suchfeld definieren
     CopyQuelle = CopyQuelle ab PosTextTrenner;
   // Positionsangabe aktualisieren
     if (i<>TextStückNr)
      {
        StartPosition = StartPosition + PosTextTrenner + LengthTextTrenner;
     else
      // Position des darauffolgenden Trennzeichens ermitteln um die Länge von ZielText berechnen zu können
        EndPosition = PosTextTrenner;
        int LengthZielText = EndPosition-StartPosition;
        return ZielText = TextAbschnitt(QuellText, StartPosition, LengthZielText);
      }
    }
  }
};


int main()
{
// Funktionsaufruf: z.B. mit Textinhalt einer Datei
TextStueckRueckgabe (string QuellText, string ZielText, string TextTrenner, int Flag)
...
..
}



Schon mal Danke für eure Antworten und viele Grüße
Pixar

Dieser Post wurde am 19.05.2008 um 21:36 Uhr von pixar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.05.2008, 07:31 Uhr
Lensflare



hier zu erklären, wie man Funktionen mit Parametern schreibt/benutzt, wäre nicht sehr sinnvoll. Es gibt darüber tonnenweise Informationen im Internet. Zum Beispiel bei Google "c++ parameter" oder so eingeben.

www.willemer.de/informatik/cpp/parameter.htm

Um mit strings zu arbeiten, benutzt du in C++ am besten std::string als Datentyp.

Hier ist eine Seite, die Ich benutze um nachzuschlagen was der Datentyp string (und die anderen) alles kann:
www.cppreference.com/cppstring/index.html

um nicht immer wieder std:: zu schreiben, kannst du am anfang des codes folgende zeile eifügen:

using namespace std;


Ich hoffe es bringt dich weiter.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.05.2008, 11:24 Uhr
mischa
Fragender


Hallo,
besorg dir lieber einen ande IDE als den Dev-C++ 4. Das ist ziemlich alt und verbugt und wird auch nicht mehr weiter entwickelt. Du kannst dir ja Code Blocks runterladen oder Microsoft Visual C++ Express 2008, ist echt gut und kostenlos. Oder du kannst dir ja einfach einen reinen C++ Kompiler runterladen ohne eine IDE.
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.05.2008, 11:56 Uhr
Lensflare



Solange man viel rumprobiert und experimentiert würde ich von MS Visual C++ Express abraten.

Erstens, weil man immer ein ganzes Projekt erstellen MUSS und nicht einfach eine einzelne Datei kompilieren kann (Was bei DevC++ geht).

Und zweitens, weil man sich nach der Testperiode registrieren muss, auch wenns kostenlos bleibt.

Ansonsten ist es sicherlich eine bessere Wahl als DevC++.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.05.2008, 19:43 Uhr
pixar



Hallo Lensflare und mischa,

Die MSVSC++EE habe ich schon einmal ausprobiert. Das Handling ist mir aber für den Anfang und vor allem angesichts meiner kleinen Belange viel zu kompliziert.
Habe mir jetzt zusätzlich Code::Blocks mit MinGW installiert, ohne dass ich darin die default Compiler-Einstellungen verändert habe. Der Compiler ist ja auch schon wieder so eine Wissenschaft für sich.

@Lensflare
Ich stimme dir zu, dass sich über die Jahre schon reichlich viele Leute über C/C++ ihre Gedanken gemacht, und ihre Erfahrungen in unzähligen Büchern, Tuts und Nachschlagewerken niedergeschrieben haben.
Darum mag meine Anfrage nach einer weiteren Erklärung im großen Ganzen gesehen auch ziemlich überflüssig erscheinen.
Und natürlich fragmentiert bei mir auch noch reichlich Lesestoff auf der Platte, den ich über kurz oder lang noch durcharbeiten muss und der mir eventuell auch noch diverse Schreibweisen- und Syntaxfragen beantworten kann.

Aber vor dem Verwenden der hilfreichen String-Klasse, etc. wollte ich gerne erst die Basics verstehen, wie man so etwas selbst aufbaut, da ich leider nicht mal dieses kleine Beispiel mit der fertigen String.find-Funktion zum laufen bekomme, das du mir verlinkt hattest.

Für komplett selbstgestrickte Funktionen hätte ich die Hoffnung, selbst darauf zu kommen was mir der Compiler mit dem Fehler eigentlich sagen will, und wie ich sie künftig vermeiden kann.
Naja, ich werde auf jeden Fall erst einmal meine Lektüre fortsetzen, und nebenbei an den Funktionen basteln.


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

int main()
{
    string QuellText("Text1 und Text2");
    string::size_type Loc = QuellText.find.("und", 0);
    if(Loc = string::npos) {
        cout << "Found at " << Loc << endl;
    }
    else {
        cout << "Didn't found" << endl;
    }
    return 0;
}


Dieser Post wurde am 20.05.2008 um 19:47 Uhr von pixar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.05.2008, 20:20 Uhr
Oliver
S2-Pixelgeneral


Was das Beispiel angeht, schreibst du entweder mit an den Anfang der Datei


C++:
using namespace std;



oder du setzt vor die einzelnen Teile (string, endl, cout) noch ein std::
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.05.2008, 23:01 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von pixar:
Und natürlich fragmentiert bei mir auch noch reichlich Lesestoff auf der Platte, den ich über kurz oder lang noch durcharbeiten muss und der mir eventuell auch noch diverse Schreibweisen- und Syntaxfragen beantworten kann.

Aber vor dem Verwenden ... wollte ich gerne erst die Basics verstehen,


dann wirst Du Dich Dir doch mal das eine oder andere Lehrbuch vornehmen müssen...
www.fun-soft.de/dl.php?threadid=19058&postid=113889

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.05.2008, 23:14 Uhr
pixar



Hallo Oliver,

danke für die Klarstellung.
Ich sehe gerade, dass Lensflare den Hinweis auf die Verwendung von "namespace std" im obigen Post auch schon gegeben hatte.
Aber irgendwie war mir wohl nicht klar, dass die Anweisung sich auf diese beiden Includes beziehen soll.
Durch das Wort "Datentyp" war ich wohl etwas fehlgeleitet.

Mit dieser neuen Erkenntnis, kann ich dann ja mal weiter mein Glück versuchen.

@Hans
Danke für den Link. Ich werde mir ganz sicher auch noch die im Forum verlinkten E-Books angucken. Aber ob mir das alles später auch einleuchtet, bleibt abzuwarten...

Vielen Dank und Grüße
pixar
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.05.2008, 13:18 Uhr
9ball




Zitat von Lensflare:
Solange man viel rumprobiert und experimentiert würde ich von MS Visual C++ Express abraten.


ich nicht. der eingebaute debugger ist spitze.
--
one for all and all for one
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.05.2008, 14:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


und der eingebaute compiler ist auch um meilen besser als der vom devcpp
--
class God : public ChuckNorris { };
 
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: