Programm funktioniert nicht, funktion wird als Klassendefintion gesehen (?)



  • Hallo ich habe in einem Programm zwei Header Dateien integriert. Auch ein paar Funktionen. Jetzt sieht mein Compiler zwei von dieser allerdings als Klassendefintionen..

    /*
    Author: Julian S.
    */
    //main.cpp
    #include <stdio.h>
    #include <cstdlib>
    #include <iostream>
    #include <stdlib.h>
    #include <math.h>
    #include "circalc.h"
    #include "sqrcalc.h"
    
    using namespace std;
    double circalc();
    double sqrcalc();
    void menu();
    void menufora();
    void menuforarea();
    void menufordiagonal();
    void menuforperimeter();
    
    Square sqr1;
    
    int main(int argc, char const *argv[]) {
      menu();
    
      return 0;
    }
    
    double sqrcalc(){
    
      cout << "\tWhat do you want to calculate?\n"
                << "1. a (Side)\n"
                << "2. Area\n"
                << "3. Perimeter\n"
                << "4. Diagonal\n";
    
                char inpt;
                cin >> inpt;
    
      switch (inpt) {
      case '1':
      system ("clear");
      menufora();
      break;
    
      case '2':
      system("clear");
      menuforarea();
      break;
    
      case '3':
      system("clear");
      menuforperimeter();
      break;
    
      case '4':
      system("clear");
      menufordiagonal();
    
      default:
      system("clear");
      cout << "Seems like something went wrong- try again!" << '\n';
        break;
    }}
    
    double circalc(){
      cout << "\t Calculate area by:\n"
                << "1. Radius\n"
                << "2. Circumference\n"
                << "3. Diameter\n";
                char inpt;
                cin >> inpt;
                Circle cir1;
      switch (inpt) {
      case '1':
      system("clear");
        cout << "Please type in the radius: " << '\n';
        cin >> cir1.cirradius;
        cout << "The area is: " << cir1.cirareabyradius() <<'\n';
        cin.sync();
        cin.get();
        break;
      case '2':
      system("clear");
        cout << "Please type in the circumference: " << '\n';
        cin >> cir1.circumference;
        cout << "The area is: " << cir1.cirareabycircumference() <<'\n';
        cin.sync();
        cin.get();
        break;
      case '3':
      system("clear");
        cout << "Please type in the diameter: " << '\n';
        cin >> cir1.cirdiameter;
        cout << "The area is: " << cir1.cirareabydiameter() <<'\n';
        cin.sync();
        cin.get();
        break;
    
      default:
        cout << "Seems like something went wrong- try again!" << '\n';
        break;
    }}
    
    void menu(){
      cout
      << "Main menu: \n"
      << "\t1. CirCalc\n"
      << "\t2. SqrCalc\n";
    
      char inpt;
      cin >> inpt;
    
        switch (inpt) {
          case '1':
          system("clear");
          circalc();
            break;
    
          case '2':
          system("clear");
          sqrcalc();
            break;
    
          default:
            cout << "Seems like something went wrong- try again!" << '\n';
            break;
        }
    
    }
    
    void menufora(){
      cout
      << "\t By what do you want to calculate a?\n"
      << "1. Area\n"
      << "2. Perimeter\n"
      << "3. Diagonal\n";
      char inpt;
      cin >> inpt;
    
      switch (inpt) {
        case '1':
        system("clear");
        cout << "Please type in the area\n";
        cin >> sqr1.sqrarea;
        cout << "The side a is: " << sqr1.sqrabyarea() << "\n";
        cin.sync();
        cin.get();
          break;
    
        case '2':
        system("clear");
        cout << "Please type in the perimeter\n";
        cin >> sqr1.sqrperimeter;
        cout << "The side a is: " << sqr1.sqrabyperimeter() << "\n";
        cin.sync();
        cin.get();
          break;
    
        case '3':
        system("clear");
        cout << "Please type in the diagonal\n";
        cin >> sqr1.sqrdiagonal;
        cout << "The side a is: " << sqr1.sqrabydiagonal() << "\n";
        cin.sync();
        cin.get();
          break;
    
        default:
        cout << "Something went wrong\n";
        break;
    
      }
    
    }
    
    void menuforarea(){
      cout
      << "\t By what do you want to calculate the area?\n"
      << "1. a\n"
      << "2. Perimeter\n"
      << "3. Diagonal\n";
      char inpt;
      cin >> inpt;
    
      switch (inpt) {
        case '1':
        system("clear");
        cout << "Please type in a\n";
        cin >> sqr1.sqra;
        cout << "The area is: " << sqr1.sqrareabya() << "\n";
        cin.sync();
        cin.get();
          break;
    
        case '2':
        system("clear");
        cout << "Please type in the perimeter\n";
        cin >> sqr1.sqrperimeter;
        cout << "The area is: " << sqr1.sqrareabyperimeter() << "\n";
        cin.sync();
    
        cin.get();
          break;
    
        case '3':
        system("clear");
        cout << "Please type in the diagonal\n";
        cin >> sqr1.sqrdiagonal;
        cout << "The area is: " << sqr1.sqrareabydiagonal() << "\n";
        cin.sync();
        cin.get();
          break;
    
        default:
        cout << "Something went wrong\n";
        break;
    }
    
    void menufordiagonal(){
      cout
      << "\t By what do you want to calculate the diagonal?\n"
      << "1. a\n"
      << "2. Perimeter\n"
      << "3. Area\n";
    
      cin >> inpt;
    
      switch (inpt) {
        case '1':
        system("clear");
        cout << "Please type in a\n";
        cin >> sqr1.sqra;
        cout "The area is: " << sqr1.sqrdiagonalbya() << "\n";
        cin.sync();
        cin.get();
          break;
    
        case '2':
        system("clear");
        cout << "Please type in the perimeter\n";
        cin >> sqr1.sqrperimeter;
        :cout "The area is: " << sqr1.sqrdiagonalbyperimeter() << "\n";
        cin.sync();
        cin.get();
          break;
    
        case '3':
        system("clear");
        cout << "Please type in the area\n";
        cin >> sqr1.sqrarea;
        cout "The area is: " << sqr1.sqrdiagonalbyarea() << "\n";
        cin.sync();
        cin.get();
          break;
    
        default:
        cout "Something went wrong\n";
        break;
    }
    
    void menuforperimeter(){
      cout
      << "\t By what do you want to calculate the perimeter?\n"
      << "1. a\n"
      << "2. Diagonal\n"
      << "3. Area\n";
    
      cin >> inpt;
    
      switch (inpt) {
        case '1':
        system("clear");
        cout << "Please type in a\n";
        cin >> sqr1.sqra;
        cout "The area is: " << sqr1.sqrperimeterbya() << "\n";
        cin.sync();
        cin.get();
          break;
    
        case '2':
        system("clear");
        cout << "Please type in the diagonal\n";
        cin >> sqr1.sqrdiagonal;
        :cout "The area is: " << sqr1.sqrperimeterbydiagonal() << "\n";
        cin.sync();
        cin.get();
          break;
    
        case '3':
        system("clear");
        cout << "Please type in the area\n";
        cin >> sqr1.sqrarea;
        cout "The area is: " << sqr1.sqrperimeterbyarea() << "\n";
        cin.sync();
        cin.get();
          break;
    
        default:
        cout "Something went wrong\n";
        break;
    
    }
    
    //CirCalc.h
    double circalc();
    void menu();                            /*Functions*/
    
    class Circle {
    public:
      double cirdiameter;
      double cirradius;
      double circumference;
      double cirareabyradius() {                              /*area  by  radius*/
        return M_PI * cirradius * cirradius;
    
      }
    
      double cirareabycircumference(){                               /*area  by  circumference*/
        return circumference / (2 * M_PI) * circumference / (2 * M_PI) * M_PI;
    
      }
    
      double cirareabydiameter(){                                 /*area  by  diameter*/
        return M_PI * (cirdiameter / 2) * (cirdiameter / 2);
    
      }
    
    };
    
    //sqrcalc.h
    void menu();
    double sqrcalc();
    
    class Square {
    
    public:
    
      double sqra;
      double sqrarea;
      double sqrperimeter;
      double sqrdiagonal;
    
      double sqrdiagonalba(){
        return (sqrt(2)) * sqra;
    
      }
    
      double sqrdiagonalbyarea(){
        return sqrt((sqrt(sqrarea)));
    
      }
    
      double sqrdiagonalbyperimeter(){
        return sqrperimeter / 4;
    
      }
    
      double sqrperimeterbya(){
        return sqra * 4;
    
      }
    
      double sqrperimeterbarea(){
        return sqrt(sqrarea) * 4;
    
      }
    
      double sqrperimeterbydiagonal(){
        return (sqrdiagonal * sqrt(2)) * 4;
    
      }
    
      double sqrareabydiagonal(){
        return (sqrdiagonal * sqrt(2)) * (sqrdiagonal * sqrt(2));
    
      }
    
      double sqrareabyperimeter(){
        return (sqrperimeter / 4) * (sqrperimeter / 4);
    
      }
    
      double sqrareabya(){
        return sqra * sqra;
    
      }
    
      double sqrabydiagonal(){
        return sqrdiagonal / sqrt(2);
    
      }
    
      double sqrabyperimeter(){
        return sqrperimeter / 4;
    
      }
    
      double sqrabyarea(){
        return sqrt(sqrarea);
    
      }
    
    };
    
    //Fehlercode
    
    /home/julian/Projekt/main.cpp: In Funktion »void menuforarea()«:
    /home/julian/Projekt/main.cpp:225:23: Fehler: a function-definition is not allowed here before »{« token
     void menufordiagonal(){
                           ^
    /home/julian/Projekt/main.cpp:308:1: Fehler: expected »}« at end of input
     }
     ^
    

    Kann mir jemand erklären, was da falsch Läuft?



  • Dir fehlt die schließende "}" der switch-Anweisungen in menuforarea (und den folgenden Funktionen).



  • Danke! Hätte ich so nie gesehen



  • SchnJulian schrieb:

    Danke! Hätte ich so nie gesehen

    Hast du die Fehlermeldung vom Compiler nicht gelesen oder verstehst du kein Englisch? 😕



  • Ich bin der Julian und mag das lesen nicht so



  • SchnJuIian schrieb:

    Ich bin der Julian und mag das lesen nicht so

    Naja, Hauptsache für jeden Furz einen neuen Beitrag schreiben...


Anmelden zum Antworten