verlinkungsproblem?



  • Hi Leute,
    weiß einer weiter?? Frage mich warum der arab1 und arab2 so Probleme macht...

    #include <iostream>
    #include "funktionen.h"
    using namespace std;
    
    int addiereRoemisch(char *zahl1, char *zahl2);
    int romZuArabien(char *rom);
    char *arabienZuRom(int arabisch);
    
    struct zahlen
    {
        char zahlenwert;
        char zeichenkette[];
    };
    
    int main()
    {
        zahlen roemisch;
        zahlen roemisch1;
        char zahl1[10], zahl2[10];
        int ergebnis;
        char *ergebnisRoemisch;
    
        cout << "Bitte geben Sie eine erste Zahl ein:";
        cin >> roemisch.zahlenwert;
        cout << "Bitte geben Sie eine zweite Zahl ein:";
        cin >> roemisch1.zahlenwert;
    
        ergebnis=addiereRoemisch(&roemisch.zahlenwert,&roemisch1.zahlenwert);
        ergebnisRoemisch=arabienZuRom(ergebnis);
    
        cout << zahl1 << " + " << zahl2 << " = " << ergebnisRoemisch << endl;
        {
            /* bitte ignorieren; nur bis zu Ihrer Anmeldung notwendig */
            int x;
            cin >> x;
        }
    }
    

    und meine header Datei

    #ifndef Sitzung_4_Auslagerung_Header_h
    #define Sitzung_4_Auslagerung_Header_h
    
    #include <iostream>
    
    using namespace std;
    
    #endif
    int addiereRoemisch(char *zahl1,/* zahl1= Zeiger auf ein erwartetes char, nach aufruf zeigt es uf die adresse von roemisch.zahlenwert in der main*/
     char *zahl2)
    {
        int resultat,arab1=0,arab2=0;
    
        arab1=romZuArabien(zahl1);
        arab2=romZuArabien(zahl2);
        resultat=arab1+arab2;
    
        return resultat;
    }
    
    int romZuArabien(char *rom)
    {
        char roemischeZiffern[8] = "ivxlcdm";
        int ziffernWert[7] = {1, 5, 10, 50, 100, 500, 1000};
        int arabisch[10], stellen=0, resultat;
        int j;
    
        if (rom[0]=='0') return 0;
    
        stellen=0;
        for (j=0; rom[stellen]!='\0'; stellen++)
        {
            for (j = 0; j < 7; j++)
                if (rom[stellen] == roemischeZiffern[j])
                {
                    arabisch[stellen] = ziffernWert[j];
                    break;
                }
            if (j == 7) return 0;
        }
    
        for (j=1; j < stellen; j++)
            if (arabisch[j] > arabisch[j-1])
            {
                arabisch[j] -= arabisch[j-1];
                arabisch[j-1] = 0;
            }
    
        resultat=0;
        for (j=0; j < stellen; j++) resultat += arabisch[j];
    
        return resultat;
    }
    
    char *arabienZuRom(int arabisch)
    {
        char *resultat;
        char roemischeZiffern[8] = "mdclxvi";
        int ziffernWert[7] = {1000,500,100,50,10,5,1};
        int stelle=0;
    
        resultat = new char[10];
        for (int i = 0; i < 7; i++)
        {
            while (arabisch >= ziffernWert[i])
            {
                resultat[stelle] = roemischeZiffern[i];
                arabisch -= ziffernWert[i];
                stelle++;
            }
        }
        resultat[stelle]='\0';
    
        return resultat;
    }
    

  • Mod



  • Arcoth schrieb:

    Ach soo :D, vielen Dank!!^^


  • Mod

    Was ist dein Problem? Wir können nicht hellsehen.
    http://www.c-plusplus.net/forum/304133
    http://www.c-plusplus.net/forum/200753


  • Mod

    SeppJ schrieb:

    Wir können nicht hellsehen.

    Willst du uns verarschen oder was? Deine Glaskugel ist doch angeblich in der Reperatur?! Und du hast mir gesagt, mein Hund würde wieder gesund werden! 😡



  • Funktionsdefinitionen haben in Headerdateien nichts zu suchen.

    Wieviel Speicher belegt zahlenwert (in struct zahlen)?
    Und wie behandelst du es in den Funktionen?

    Was sind deine Eingaben?

    Ist dir der Unterschied zwischen char , char[10] und char* klar?


Anmelden zum Antworten