1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

c++ fehlermeldungen

Discussion in 'Programmieren' started by Dackel, Jul 21, 2003.

Thread Status:
Not open for further replies.
  1. Dackel

    Dackel Byte

    Hallo Leute!
    Fast immer wenn ich = oder == benutzte im Code, markiert mir der Compiler dies als fehlerhafte Zeil.Auch meint der Compiler "main must return int".
    Vielleicht könntet ihr mir sagen, warum das so ist und wie ich das lösen kann. (verbesserter Code erwünscht aber nicht notwendig).
    Volker
    #include <iostream>
    #include <conio.h>
    using namespace std;
    void main()
    {
    int k,r;
    extern double a,b,c,d,zl1,zl2,zw1,zw2,adda,addb,suba,subb,multa,multb,diva,divb;
    extern double addpa,addpb,subpa,subpb,multpa,multpb,divpa,divpb;
    cout << "Summenform(1) oder Polarform(2) (komplexe Zahl)?";
    cin >> k;
    if k==1 goto Summ;
    if k==2 goto Polar;
    else
    cout << "nicht gültige Eingabe"<<endl;
    Summ:
    cout << "Rechenart?( Add=1,Sub=2,Multi=3,Div=4)";
    cin >> r;
    cout << "Reeler Teil der 1. Zahl";
    cin >> a;
    cout << "Imaginärer Teil der 1. Zahl";
    cin >> b;
    cout << "Reeler Teil der 2. Zahl";
    cin >> c;
    cout << "Imaginärer Teil der 2. Zahl";
    cin >> d;
    if r==11 goto AddS;
    if r==12 goto SubS;
    if r==13 goto MultiS;
    if r==14 goto DivS;

    AddS:
    adda= a+c
    addb = b+d
    cout << adda <<"+"<< addb<<"i"<<endl;
    getch();

    SubS:
    suba = a-c
    subb = b-d
    cout << suba <<"+"<<subb<<"i"<<endl;
    getch();

    MultiS:
    multa= (a*c)-(b*d)
    multb=(a*d)+(b*c)
    cout << multa <<"+"<< multb <<"i"<<endl;
    getch();

    DivS:
    diva =(a*c+b*d)/(c*c+d*d)
    divb =(b*c-a*d)/(c*c+d*d)
    cout << diva <<"+" << divb <<"i"<<endl;
    getch();

    Polar:
    cout << "Rechenart?( Add=21,Sub=22,Multi=23,Div=24)";
    cin >> r;
    cout<<"Länge des Zeigers 1?"<<endl;
    cin >> zl1;
    cout <<"Länge des Zeigers 2?"<< endl;
    cin >> zl2;
    cout <<"Winkel des Zeigers 1?" <<endl;
    cin >>zw1;
    cout << "Winkel des Zeigers 2?"<<endl;
    cin >> zw2;
    if r=="21" goto Addp;
    if r=="22" goto Subp;
    if r=="23" goto Multp;
    if r=="24" goto Divp;

    Addp:
    addpa = zl1 + zl2;
    addpb = zw1 + zw2;
    cout << addpa <<"|"<< addpb<<"°"<<endl;
    getch();
    Subp:
    subpa = zl1-zl2;
    subpb =zw1-zw2;
    cout << subpa<<"|"<<subpb<<"°"<<endl;
    getch();
    Multp:
    multpa =(zl1*zl2);
    multpb = (zw1+zw2);
    cout << multpa<<"|"<<multpb<<"°"<<endl;
    getch();
    Divp:
    divpa =zl1/zl2;
    divpb =zw1 - zw2;
    cout << divpa <<"|"<< divpb <<"°"<<endl;
    getch();
    }
     
  2. Hatz20

    Hatz20 Kbyte

    ihhhhh GOTO!
    Verbanne diese aus deinem Code. Diese gehören in kein! Programm.
     
  3. Dackel

    Dackel Byte

    Will dich nicht beleidigen, aber der Code produziert bei mir 31 Linkerfehler (Anzahl:31).Soweit bin ich mit meinem leicht verändertem Code auch, finde aber die Gründe für die Fehler nicht.
    Vielen Dank für eure Hilfe.
    Volker
     
  4. AS_X

    AS_X Halbes Megabyte

    Wer weiß?
    Er hat ja auch die Version 5...
    ;-)
     
  5. Sumo

    Sumo Kbyte

    In welchem Code?
    Meinst du 135 Fehler, Fehler Nummer 135 oder Zeile 135?

    Ich bekomm nur 88 Linkerfehler hin :). Lässt sich aber lösen indem man das extern vor dem double löscht.

    Ich nutze noch die letzte stable-version des Dev-Cpp 4. Auf 5 steig ich erst um wenn das keine beta mehr ist.
     
  6. ColonelChris

    ColonelChris Kbyte

    Bau auch mal die gotos aus, das ist doch wirklich nur was für extreme Spezialfälle und Visual Basic! Benutze lieber switches und einzelne Funktionen.
     
  7. ColonelChris

    ColonelChris Kbyte

    DevCpp soll .net unterstützen? Wäre mir neu. Aber ich bin für Neuigkeiten stets offen. :-)
     
  8. ColonelChris

    ColonelChris Kbyte

    Argh. DevCpp ist eigentlich nicht so problematisch. Reduziere das Problem am besten, indem du ganze Codeteile wegkommentierst und nur die Basisfunktionen (schlimmstenfalls nur das return) übrig lässt und compilierst. Dann baust du den Rest nach und nach wieder dazu. Ich weiß, das ist keine schöne Methode, aber wie ich C kenne findest du den Fehler mit bloßem Suchen nie. ;-)
     
  9. AS_X

    AS_X Halbes Megabyte

    zeigt der linker sonst noch was an?
    unterstüzt dev-c++ das .net framework?
    (wg. using namespace std)
     
  10. Dackel

    Dackel Byte

    Vielen Dank für eure Hilfe. Jetzt lässt sich das Kompilieren, aber nicht Linken.(135 Linkerfehler)
    Ich benützte DevC++5.
    Volker
     
  11. AS_X

    AS_X Halbes Megabyte

    Bedingungen müssen geklammert werden.

    main must return int bedeutet dass die funktion main() eine ganze zahl zurückgeben muss (nicht nix: void);

    also1) if(a==b) {...
    und2) int main( /*evtl noch parameter */) {... return 0;}
     
  12. Sumo

    Sumo Kbyte

    Hi
    ich hab mir das ganze mal angeschaut. Problem immer vor dem Doppelpunkt :)

    ==: bei einem if muss eine Klammer um die Bedingung
    if (blabla == blubblub)

    =: du vergisst immer das Semikolon in der vorherigen Zeile.

    main must return int: aus void main() mach int main() und in die letzte Zeile vor der abschließenden geschweiften Klammer ein return 0;

    verbesserter Code: (leider nicht in der Originalformatierung :()

    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main()
    {
    int k,r;
    double a,b,c,d,zl1,zl2,zw1,zw2,adda,addb,suba,subb,multa,multb,diva,divb;
    double addpa,addpb,subpa,subpb,multpa,multpb,divpa,divpb;
    cout << "Summenform(1) oder Polarform(2) (komplexe Zahl): ";
    cin >> k;

    switch (k) {
    case 1: cout << "Rechenart?( Add=1,Sub=2,Multi=3,Div=4): ";
    cin >> r;
    cout << "Reeler Teil der 1. Zahl: ";
    cin >> a;
    cout << "Imaginaerer Teil der 1. Zahl: ";
    cin >> b;
    cout << "Reeler Teil der 2. Zahl: ";
    cin >> c;
    cout << "Imaginaerer Teil der 2. Zahl: ";
    cin >> d;
    switch (r) {
    case 1: adda = a+c;
    addb = b+d;
    cout << adda <<"+"<< addb<<"i"<<endl;
    break;
    case 2: suba = a-c;
    subb = b-d;
    cout << suba <<"+"<<subb<<"i"<<endl;
    break;
    case 3: multa = (a*c)-(b*d);
    multb =(a*d)+(b*c);
    cout << multa <<"+"<< multb <<"i"<<endl;
    break;
    case 4: diva =(a*c+b*d)/(c*c+d*d);
    divb =(b*c-a*d)/(c*c+d*d);
    cout << diva <<"+" << divb <<"i"<<endl;
    break;
    }
    break;
    case 2: cout << "Rechenart?( Add=1,Sub=2,Multi=3,Div=4): ";
    cin >> r;
    cout<<"Laenge des Zeigers 1: "<<endl;
    cin >> zl1;
    cout <<"Länge des Zeigers 2: "<< endl;
    cin >> zl2;
    cout <<"Winkel des Zeigers 1: " <<endl;
    cin >>zw1;
    cout << "Winkel des Zeigers 2: "<<endl;
    cin >> zw2;
    switch (r) {
    case 1: addpa = zl1 + zl2;
    addpb = zw1 + zw2;
    cout << addpa <<"|"<< addpb<<"°"<<endl;
    break;
    case 2: subpa = zl1-zl2;
    subpb =zw1-zw2;
    cout << subpa<<"|"<<subpb<<"°"<<endl;
    break;
    case 3: multpa =(zl1*zl2);
    multpb = (zw1+zw2);
    cout << multpa<<"|"<<multpb<<"°"<<endl;
    break;
    case 4: divpa =zl1/zl2;
    divpb =zw1 - zw2;
    cout << divpa <<"|"<< divpb <<"°"<<endl;
    break;
    }
    break;
    default: cout << "Ungueltige Eingabe!";
    break;
    }
    getch();
    return 0;
    }
     
Thread Status:
Not open for further replies.

Share This Page