Anfänger-Problem

IFIllusion

Grünschnabel
Hallo, ich fange gerade an C zu lernen, bekomme es aber etwas nicht hin. Ich möchte ein kleines Programm schreiben, dass folgendes tut: Es soll je nach Tastatureingabe (auswahl zwischen "a" für die Berechnung von sin(x) und "b" für die Berechnung von cos(x))diese beiden Funktionen berechnen. Ich stelle mir den Programmablauf so vor:
1) a für sin(x) / b für cos(x)
2) Eingabe: a
3) für welchen Wert soll sin(x) berechnet werden?
4) Eingabe: x=1
Leider weiss ich nicht wie ich das schaffe, Bücher und Skripte haben mir dabei auch nicht geholfen..., dass ich die math.h einbinden muss weiss ich :)
 
Hallöle *g*

Warum lernst du C, und nicht C++/C# (Achtung, C++ und C# sind anders!).
Wenn dein kompiler auch C++ "versteht" kann ich dir vl. helfen..

Code:
#include <cmath>
#include <iostream>
using namespace std;

int main() {
     char was; // *g*
     cout<<"Bitte a für sin(x) und b für cos(x) drücken!\n";
     cin>>was;
     
     double zahl;
     double erg;

     if(was=="a") {
          cout<<"\n\nGeben sie eine Zahl für x ein:\n";
          cin>>zahl;
          erg = sin(zahl); //Syntax: double sin(double zahl);
          cout<<"sin("<<zahl<<") = "<<erg;
     }
     elseif(was=="b"){
          cout<<"\n\nGeben sie eine Zahl für x ein:\n";
          cin>>zahl;
          erg = cos(zahl); //Syntax: double cos(double zahl);
          cout<<"cos("<<zahl<<") = "<<erg;
     }

mfg

Philipp9494
 
Hallo

math.h ist eine C-Bibliothek und cmath eine C++, nein, das c bedeuted, das es das gleiche ist, aber halt nur umbenannt. Das c bedeuted, dass es eine C-Bibliothek ist.

Lg

Philipp9494
 
Nein!!

"cout" geht nur mit C++, so win "cin"

in C glaub ich gibt es sprint oder so ähnlich..

Lg

Philipp9494
 
Hi.

Nunmal nichts durcheinander würfeln.

"cmath" und "math.h" sind beides Headerdateien (keine Bibliotheken).

"math.h" ist eine Standard-Headerdatei der C Bibliothek.

"cmath" ist eine Standard-Headerdatei der C++ Standard Bibliothek.

In C++ sollten alle Standad-Headerdateien der C Bibliothek nicht direkt eingebunden werden, sondern durch die entsprechend angepasste C++ Header Datei. Die C Standard-Headerdateien werden in C++ ohne Endung und mit dem Präfix 'c' eingebunden. Also statt "stdio.h" nimmt man "cstdio", statt "stdlib.h" nimmt man "cstdlib" etc.

Der Grund ist das die Funktionen die durch die C Headerdateien bekannt gemacht werden z.B. im Namensraum std definiert werden (C kennt keine Namensräume). Außerdem unterstützt C++ das Überladen von Funktionen was bei C nicht möglich ist.

Daher kann man in C++ z.B. der Funktion "abs" unterschiedliche Typen von Argumenten übergeben. Während man in C gezwungen ist für unterschiedliche Datentypen Funktionen mit anderen Namen aufzurufen (also abs(double) bzw. fabs(float)).

Gruß
 
Dazu hätte ich auch mal eine Frage. Gibt es einen Unterschied zwischen einer Header-Datei(foobar.h) und einer C-Datei(foobar.c) ?
Leider kann mir dabei keine Suchmaschine/Hilfe helfen.
Bis jetzt habe ich in C++ Projekten immer eigene Header-Dateien includiert, nun lese ich aber das es unüblich ist zumindest bei Standardfiles. :)
 
Zurück