brauche hilfe bei programm



  • Hallo,
    bin neu hier bin auch c++ anfänger.
    bin in der Fachoberschule und habe dort c++

    habe folgendes problem in c++

    komme nicht weiter :
    Aufgabe ist ein Programm mit Password abfgrage und folgende Berechnung:

    Berechne eine beliebige Anzahl von Abschüssen eines Projektils hinsichtlich Projektilweite und Projektilhöhe

    Formel:
    Weite L=v²/g * sin alpha v=anfangsgeschwindigkeit in m/s

    G=9.81 m/s²

    Höhe H = v² /2g * sin² alpha

    Alpha = abschlusswinkel in Grad

    Beispiel :
    v=100 m/s²; alpha =30 grad

    Ergebnis : L=506m;H=127m

    habe folgendes geschrieben
    bekomme folgende fehlermeldung
    :D:\ruben\aufgabe\aufgabe_test.cpp(27) : error C2297: '*' : Ungültig, da der rechte Operand vom Typ 'double (__cdecl *)(double)' ist

    #include "d:\hilfe.h"

    float v,winkel,alpha,l,h ;

    void eingabe()
    {
    printf (" /n Gebe eine Geschwindigkeit an");
    cin>> v;

    printf (" /n Gebe einen winkel an in grad");
    cin>> winkel;
    getch();
    }

    void berechne()
    {

    alpha=winkel/360*2*pi;

    l=v*(v)/gsin(alpha);
    h=v
    (v)/2*g*sin*(sin)(alpha);
    }

    void ausgabe()
    {

    printf ("/n Ergebniss länge %g meter",l);

    printf ("/n Ergebniss höhe %g meter",h);
    getch();

    }

    void main()
    {
    gruss();
    zweck();
    passw();
    eingabe();
    berechne();
    ausgabe();

    }



  • sin*(sin)(alpha); ist falsch

    Entweder sin(alpha)*sin(alpha) oder mit temporärer Variable oder pow(sin(alpha), 2).



  • Desweiteren:
    - Du vermischst c und c++
    - Es heißt int main() und nicht void main()
    - Die Escape-Sequenz für Neue Zeile lautet: \n
    - Globale Variablen sind oft nicht die beste Lösung.

    btw. Bitte benutze das nächste Mal code-tags [cpp][/cpp ] (Ohne das Leerzeichen vor ]!)

    Caipi



  • --- Sorry, komme heute irgendwie mit den Links Editieren und Zitieren durcheinander 😉 ---



  • //edit erledigt



  • Caipi schrieb:

    - Globale Variablen sind nicht oft nicht die beste Lösung.

    Doppelt gemoppelt :p .



  • //erledigt

    @peerffm: bitte schreib das nochmal mit [cpp] tags!! es ist furchbar das so zu lesen



  • Walli schrieb:

    Caipi schrieb:

    - Globale Variablen sind nicht oft nicht die beste Lösung.

    Doppelt gemoppelt :p .

    Jaja, habs auch gerade gemerkt. Ist verbessert 🙂

    War mal wieder zu schnell...

    @peerffm
    Noch eine Sache, die mir aufgefallen ist. getch() ist kein standard. Ich würde es weglassen. (Ist zwar nicht so wichtig, aber so ergibt dieser Post wenigstens ein bischen Sinn :))

    Caipi



  • thanx es funktioniert !
    aber irgendiwe ist da noch ein fehler also die aufgabe war :
    Aufgabe ist ein Programm mit Password abfgrage und folgende Berechnung:

    **Berechne eine beliebige Anzahl von Abschüssen eines Projektils hinsichtlich Projektilweite und Projektilhöhe

    Formel:
    Weite L=v²/g * sin alpha v=anfangsgeschwindigkeit in m/s

    G=9.81 m/s²

    Höhe H = v² /2g * sin² alpha

    Alpha = abschlusswinkel in Grad

    Beispiel :
    v=100 m/s²; alpha =30 grad

    Ergebnis : L=506m;H=127m
    **

    mein quellcode
    [cpp]
    #include "d:\hilfe.h"

    float v,winkel,alpha,l,h ;

    void eingabe()
    {
    printf (" \n Gebe eine Geschwindigkeit an");
    cin>> v;

    printf (" \n Gebe einen winkel an in grad");
    cin>> winkel;
    getch();
    }

    void berechne()
    {

    alpha=winkel/360*2*pi;

    l=v*v/g*sin(alpha);
    h=v*v/2*g*sin(alpha)*sin(alpha);
    }

    void ausgabe()
    {

    printf ("\n Ergebniss länge %g meter",l);

    printf ("\n Ergebniss höhe %g meter",h);
    getch();

    }

    void main()
    {
    gruss();
    zweck();
    passw();
    eingabe();
    berechne();
    ausgabe();

    }

    [b]die ergebnisse von beispiel stimmen nicht überein



  • das liest sich ja grauenvoll, tu mal das so machen tun (c++) 😉

    #include "d:\hilfe.h" 
    #include <iostream>
    using namespace std;
    
    float v,winkel,alpha,l,h ; 
    
    void eingabe() 
    { 
    cout << "Gib eine Geschwindigkeit an: "; 
    cin >> v; 
    cout << "Gib einen Winkel in Grad an: "; 
    cin >> winkel;
    //ist ein bischen eiganartig gelöst, schlage vor du übergibst zwei werte an die
    //funktion, und läßt ein ergebnis zurückgeben (return), somit kannst du auf
    //diese funktion verzichten und übergibst deine werte an die 'berechne'-funktion
    };
    
    void berechne() 
    { 
    alpha=winkel/360*2*pi; 
    l=v*v/g*sin(alpha); 
    h=v*v/2*g*sin(alpha)*sin(alpha); 
    } 
    
    void ausgabe() 
    { 
    cout <<"Ergebniss laenge " << l << " meter" << endl; 
    cout <<"Ergebniss höhe " << h << " meter" << endl; 
    cin.get(); //wartet auf enter
    } 
    
    int main() 
    { 
    gruss(); //kenn ich nicht
    zweck(); //kenn ich nicht
    passw(); //kenn ich nicht
    eingabe(); 
    berechne(); 
    ausgabe(); 
    }
    

    naja, wie gesagt...ich würde es anders lösen...so:

    ...
    int main(){
    cout << "geben sie die geschwindigkeit an: ";
    cin >> speed;
    cout << "geben sie den winkel an: ";
    cin >> winkel;
    
    cout << "das ergebnis lautet: " << berechne(speed, winkel) << endl;
    

    die funktion 'berechne' müßtest du natürlich anpassen



  • h=v*v/(2*g)*sin(alpha)*sin(alpha);
    

    Da ist wahrscheinlich der Fehler gewesen. Einfach eine Klammer um 2*g machen!


Anmelden zum Antworten