Problem
-
Hallo zusammen,
folgendes Problem:
#include <stdio.h> #include <stdlib.h> void kreis_area( float d ) { float flaeche, pi = 3.1415; flaeche = d*d*pi/4; printf("Flaeche des Kreises = %.2f\n", flaeche); } void kreis_durchmesser( float flaeche ) { float d, pi = 3.1415; d = sqrt(4 * flaeche / pi); printf("Durchmesser des Kreises :%.2f\n", d); } void kreis_umfang( float d ) { float umfang, pi = 3.1415; umfang = d * pi; printf("Umfang des Kreises betraegt : %.2f\n", umfang); } int main() { float var; int abfrage; do{ printf("Welche Berechnung wollen Sie durchfuehren?\n\n"); printf("<1> Kreisflaeche\n"); printf("<2> Kreisdurchmesser\n"); printf("<3> Kreisumfang\n\n"); printf("<4> Programm beenden\n\n"); printf("Ihre Auswahl < >\b\b"); scanf("%d", &abfrage); switch( abfrage ) { case 1 : printf("Durchmesser : "); scanf("%f", &var); kreis_area(var); break; case 2 : printf("Flaeche : "); scanf("%f", &var); kreis_durchmesser(var); break; case 3 : printf("Durchmesser : "); scanf("%f", &var); kreis_umfang(var); break; case 4 : printf("Programmende\n"); break; default: printf("Unbekannte Eingabe\n); } }while( abfrage !=4 ); system("PAUSE"); return 0; }
Compiler:
------ Erstellen gestartet: Projekt: Projekt_Lernen2, Konfiguration: Release Win32 ------
Kompilieren...
berechnung_kreis.c
.\berechnung_kreis.c(8) : warning C4305: 'Initialisierung': Verkürzung von 'double' in 'float'
.\berechnung_kreis.c(18) : warning C4305: 'Initialisierung': Verkürzung von 'double' in 'float'
.\berechnung_kreis.c(19) : warning C4244: '=': Konvertierung von 'double' in 'float', möglicher Datenverlust
.\berechnung_kreis.c(27) : warning C4305: 'Initialisierung': Verkürzung von 'double' in 'float'
.\berechnung_kreis.c(46) : warning C4996: 'scanf' wurde als veraltet deklariert
C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(295): Siehe Deklaration von 'scanf'
Meldung: "This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details."
.\berechnung_kreis.c(51) : warning C4996: 'scanf' wurde als veraltet deklariert
C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(295): Siehe Deklaration von 'scanf'
Meldung: "This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details."
.\berechnung_kreis.c(56) : warning C4996: 'scanf' wurde als veraltet deklariert
C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(295): Siehe Deklaration von 'scanf'
Meldung: "This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details."
.\berechnung_kreis.c(61) : warning C4996: 'scanf' wurde als veraltet deklariert
C:\Programme\Microsoft Visual Studio 8\VC\include\stdio.h(295): Siehe Deklaration von 'scanf'
Meldung: "This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details."
.\berechnung_kreis.c(68) : error C2001: Zeilenvorschub in Konstante.
.\berechnung_kreis.c(69) : error C2143: Syntaxfehler: Es fehlt ')' vor '}'
.\berechnung_kreis.c(77) : fatal error C1004: Unerwartetes Dateiende gefunden.
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\mamaundpapa\Eigene Dateien\Visual Studio 2005\Projects\Projekt_Lernen2\Projekt_Lernen2\Release\BuildLog.htm" gespeichert.
Projekt_Lernen2 - 3 Fehler, 8 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========scanf ist veraltet? Habe ich doch schon immer so benutzt was mukkt der jetzt rum?! Verkürzung von 'double' in 'float'? Was hat den das denn zu interessieren was für einen Typ ich benutze?
.\berechnung_kreis.c(68) : error C2001: Zeilenvorschub in Konstante.
.\berechnung_kreis.c(69) : error C2143: Syntaxfehler: Es fehlt ')' vor '}'
.\berechnung_kreis.c(76) : fatal error C1004: Unerwartetes Dateiende gefunden.Also ich sehe da nichts was falsch sein sollte?!
Hoffe ihr könnt mir helfen.
Danke im Voraus
MfG Micha
-
Also, bei mir geht alles bis auf 'sqrt'. Hier krieg ich noch die Meldung, dass du ; und " vergessen hast.
default: printf("Unbekannte Eingabe\n); }
-
Bezüglich "Verkürzung von 'double' in 'float' ":
Fließkommaliterale wie 3.14 sind grundsätzlich vom Typ double. Wenn du so ein Literal einer (kleineren) float-Variable zuweist, gibt es einen gewissen Datenverlust, genauer einen Verlust an Genauigkeit. Die Warnung ist deswegen auch vollkommen korrekt. Entweder du benutzt Variablen vom Typ double, oder du erzwingst den Typ float für deine Fließkommaliterale.double pi = 3.14; // oder float pi = 3.14f;
Bezüglich " 'scanf' wurde als veraltet deklariert":
Microsoft hat sich einfach die Freiheit genommen, Standardfunktionen wie eben scanf() als veraltet und unsicher zu deklarieren. Wie man die Warnung abstellt steht ja in der Meldung.