Problem mit Deklaration von Variablen

Samson22k

Grünschnabel
Hi Leute,

Ich Programmiere erst seid kurzem.
Mein Problem ist folgendes :

Ich möchte ein programm schreiben mit dem ich Kartesische in Polarkoordinaten umrechnen kann. Das Programm:

#include <stdio.h>
#include <math.h>

int main(void)
{

double y, x, bogenmass;

printf("Bitte geben sie die Abszisse ein");
scanf("%d\n", &x);

printf("Bitte geben sie die Ordinate ein");
scanf("%d\n", &y);

bogenmass = double atan2(double y, double x)/180*3.1215926535;


printf("Rho = %d", bogenmass);


return 0;
}

Das Problem ist, dass beim Compilieren immer "error C2062: type 'double' unexpected" kommt. Kann mir jemand erklären warum sich der Quelltext nicht compilieren lässt ? Was muss ich ändern, damit das Programm läuft ?

gruß
 
Hi!

Versuch's mal so und finde heraus, was bei Dir nicht gepasst hat:
C++:
#include <cstdio>
#include <cmath>

int main(void)
{
    double y, x, bogenmass;

    printf("Bitte geben sie die Abszisse ein ");
    scanf("%lf", &x);

    printf("Bitte geben sie die Ordinate ein ");
    scanf("%lf", &y);

    bogenmass = atan2(y, x)/180*3.1215926535;


    printf("Rho = %lf\n", bogenmass);


    return 0;
}

Gruß
Enum
 
Vielen dank für dein schnelle Hilfe ....

Jetzt läuft das Programm auch ! Waren wohl einfach zu viele double ;)

Danke nochmal !

gruß
 
Kein Problem.

Wenn ich noch eine Anmerkung machen darf:
Gewöhn' Dir am besten gleich an deinen Quellcode mit -Wall in den Compiler zu jagen - oder wie auch immer man bei Deinem Exemplar alle Warnungen anschaltet.
Und ignoriere diese Warnungen nicht! :p

Dann hättest Du gleich gemerkt, dass das Formaf für printf und scanf nicht passt...

Gruß
Enum
 
Hi.
Gewöhn' Dir am besten gleich an deinen Quellcode mit -Wall in den Compiler zu jagen - oder wie auch immer man bei Deinem Exemplar alle Warnungen anschaltet.
Und ignoriere diese Warnungen nicht! :p

Dann hättest Du gleich gemerkt, dass das Formaf für printf und scanf nicht passt...
Es gibt aber keinen Formatspezifierer %lf für printf in ISO C/C++. Ein float wird automatisch in double konvertiert wenn er an eine Funktion mit variabler Anzahl von Argumenten übergeben wird. (-pedantic Option einschalten ;))

Gruß
 
Genau, und das man für konstante Zahlen auch konstante Variablen benutzen sollte, damit bei Wiederverwendung nur an einer Stelle etwas geändert werden muss.
C:
#define PI 3.1415
// oder
const float PI = 3.1415;

mfg
 
Hi.
Es gibt aber keinen Formatspezifierer %lf für printf in ISO C/C++. Ein float wird automatisch in double konvertiert wenn er an eine Funktion mit variabler Anzahl von Argumenten übergeben wird. (-pedantic Option einschalten ;))

Gruß
Hm, klein Enum ist gerade bei der Gute-Nacht Lektüre aufgefallen...
"use of the l modifier with floating conventions was added in C89"
... und er schließt daraus, dass das kleine l zwar spezifiziert aber nicht von allem Compilern implementiert und auch nicht zwingend erforderlich ist. Deswegen gibt's wohl ohne -pedantic auch nur eine Warnung und keine Fehlermeldung.

Gruß
Enum
 
Zurück