000
26.04.2006, 10:46 Uhr
~Neuling_Peter23
Gast
|
Hi,
ich soll einen Header, der in C++ geschrieben wurde, in C umschreiben. Leider hab ich überhaupt keine Ahnung von C++ geschweige denn von C. Über die Unterschiede hab ich mich schon belesen und weiß auch, was zu ändern ist. Doch finde ich keinen Ansatz um die Aufgabe zu erfüllen.
Vielleichet könnt ihr mal schauen und mir ein paar tips geben. Das wär Super!
C++: |
#ifndef __CSTRING_H__ #define __CSTRING_H__
#include <string> #include <vector> using namespace std; enum _eSFErgebnis { eFehler, //Zeichen gefunden, Bedingung nicht erfüllt eKorrekt, //Zeichen gefunden, Bedingung erfüllt eKeinZeichen //zu untersuchendes Zeichen nicht gefunden }; typedef _eSFErgebnis eSFErgebnis;
class cKlasseString { public: //Die Prüftabelle ist im Konstruktor abgelegt //die Zuordnung zu den Fehlertabellen ebenfalls cKlasseString(); //für ToUpper und ToLower wird der Konstruktor überladen cKlasseString(string szOriginal); ~cKlasseString();
int Qalpha(string szString,string szModus,long *iFehlerNummer,long *iFehlerStelle); bool ToUpper(string *szUpper); bool ToLower(string *szLower); enum { eES,eMT,eLS,eAZ //AlleZeichen,ErsteStelle,MittelTeil,LetzteStelle } eTeil; enum { eName, eVorname, eVorsatzwort, eTitel, eBescheidEmpfaenger, eOrtInland, eStrasseInUndAusland, eGeburtsort, eNamenszusatz, eLand, eOrtAusland, eHausnummer, eAuslVSNR, eOrtMitPLZ, eAdresszusatz, ePLZAusland } eBegriff; enum { eGrossBuchstabe, eKleinBuchstabe, eZiffer, eEszett, eBlank, eBindestrich, ePunkt, eSchraegstrich, eApostroph, eKomma, eKlammerAuf, eKlammerZu, eUnd, eSonderFall //Sonderfall für begriffsweite Sonderfälle }eZeichen;
private:
//Memberfunktionen bool SetPArray(int iBegriff,int iTeil,int iGb,int iKb,int iZi, int iSz,int iBl,int iBs, int iPu,int iSs,int iAp, int iKo,int iKa,int iKz, int iUn); bool SetSFNr(int iSF01,int iSF02,int iSF03,int iSF04,int iSF05, int iSF06,int iSF07,int iSF08,int iSF09,int iSF10, int iSF11,int iSF12,int iSF13,int iSF14,int iSF15, int iSF16,int iSF17,int iSF18);
bool SetSonderfall(int iSF,int iBegriff,int iTeil,int iZeichen); bool SetZeichen(string szZeichen); bool SetSonderzeichen(string szSonderzeichen); bool SetVorsatzworte(string szVorsatzworte); bool SetNamenszusatz(string szNamenszusatz); bool SetFehlerArray(); bool SetMemberVar(string szString,string szModus);
bool CheckVorbedingung(); bool CheckBegriffsSF(); bool CheckPArray(); bool CheckEinzelSF(); bool CheckFehlerArray();
//Prüfroutinen bool IstZeichenKorrekt(int iZeichen,int iTeil); bool IsGrossBuchstabe(string szPruefString,int iTeil); bool IsKleinBuchstabe(string szPruefString,int iTeil); bool IsZiffer(string szPruefString,int iTeil); bool IsZeichen(string szPruefString);
//Sonderfälle //ein zurückgegebenes true bedeutetm dass //Bedingung erfüllt, die untersuchte Zeichefolge also korrekt ist eSFErgebnis IsSonderfall01(int iTeil); eSFErgebnis IsSonderfall02(int iTeil); eSFErgebnis IsSonderfall03(int iTeil); eSFErgebnis IsSonderfall04(int iTeil); eSFErgebnis IsSonderfall05(int iTeil); eSFErgebnis IsSonderfall06(int iTeil); eSFErgebnis IsSonderfall07(int iTeil); eSFErgebnis IsSonderfall08(int iTeil); eSFErgebnis IsSonderfall09(int iTeil); eSFErgebnis IsSonderfall10(int iTeil); eSFErgebnis IsSonderfall11(int iTeil); eSFErgebnis IsSonderfall12(int iTeil); eSFErgebnis IsSonderfall13(int iTeil); eSFErgebnis IsSonderfall14(int iTeil); eSFErgebnis IsSonderfall15(int iTeil); eSFErgebnis IsSonderfall16(int iTeil); eSFErgebnis IsSonderfall17(int iTeil); eSFErgebnis IsSonderfall18(int iTeil); //Membervariablen //Prüfmatrix mit Fehlernummern /*1. Ebene Begriffe
0 Name 1 Vorname 2 Vorsatzwort 3 Titel 4 BescheidEmpfaenger 5 OrtInland 6 StrasseInUndAusland 7 Geburtsort 8 Namenszusatz 9 Land 10 OrtAusland 11 Hausnummer 12 AuslVSNR 13 OrtMitPLZ 14 Adresszusatz 15 PLZAusland
2.Ebene 0 erste Stelle, 1.Mittelteil 2 letzte Stelle
3.Ebene Zeichen */ //je ein vektor für iSFNr, iBegriff,iTeil und iZeichen struct _sSFPos { vector<int> m_viNr; vector<int> m_viBegriff; vector<int> m_viTeil; vector<int> m_viZeichen; }m_sSFPos;
//vektor für Fehlerkennzeichen (Position und Nummer) vector<char> m_vcFehlerArray;
int m_aiPruefMatrix[16][3][13];
//Sonderfallauswertung
int m_aiSFNr[18]; //Prüfregeln vector<char> m_vcZeichen; vector<char> m_vcSonderzeichen; vector<string> m_vszVorsatzworte; vector<string> m_vszNamenszusatz;
//Stringbestandteile /*string m_szString; string m_szErsteStelle; string m_szMittelTeil; string m_szLetzteStelle; int m_iBegriff; int m_iFNummer; int m_iFStelle;*/
//Membervariable für ToUpper und ToLower string m_szOriginal;
};
#endif __CSTRING_H__
|
|