c++ fehlermeldungen

Dieses Thema im Forum "Programmieren" wurde erstellt von Dackel, 21. Juli 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Dackel

    Dackel Byte

    Registriert seit:
    6. September 2001
    Beiträge:
    85
    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

    Registriert seit:
    21. Mai 2001
    Beiträge:
    312
    ihhhhh GOTO!
    Verbanne diese aus deinem Code. Diese gehören in kein! Programm.
     
  3. Dackel

    Dackel Byte

    Registriert seit:
    6. September 2001
    Beiträge:
    85
    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

    Registriert seit:
    17. Oktober 2002
    Beiträge:
    585
    Wer weiß?
    Er hat ja auch die Version 5...
    ;-)
     
  5. Sumo

    Sumo Kbyte

    Registriert seit:
    30. August 2000
    Beiträge:
    178
    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

    Registriert seit:
    9. April 2001
    Beiträge:
    256
    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

    Registriert seit:
    9. April 2001
    Beiträge:
    256
    DevCpp soll .net unterstützen? Wäre mir neu. Aber ich bin für Neuigkeiten stets offen. :-)
     
  8. ColonelChris

    ColonelChris Kbyte

    Registriert seit:
    9. April 2001
    Beiträge:
    256
    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

    Registriert seit:
    17. Oktober 2002
    Beiträge:
    585
    zeigt der linker sonst noch was an?
    unterstüzt dev-c++ das .net framework?
    (wg. using namespace std)
     
  10. Dackel

    Dackel Byte

    Registriert seit:
    6. September 2001
    Beiträge:
    85
    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

    Registriert seit:
    17. Oktober 2002
    Beiträge:
    585
    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

    Registriert seit:
    30. August 2000
    Beiträge:
    178
    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;
    }
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen