Seite 1 von 2
Kreisberechnungen
Verfasst: Donnerstag 25. Oktober 2012, 22:42
von bgmann
Re: Kreisberechnungen
Verfasst: Freitag 26. Oktober 2012, 00:25
von BlackJack
@bgmann: Ich habe das mal vom Thema „An alle Schüler und Studenten mit Informatikproblemen” abgetrennt. Und Du solltest zumindest die ersten Beiträge von dem Thema mal lesen. Das ist nicht das Thema in dem Schüler ihre Informatikprobleme posten, sondern was sie vorher lesen sollten um zu wissen wie sie ihre Frage stellen und welche Hilfe sie erwarten können.
Ohne ein wenig Eigenleistung in der Regel eher wenig. Es wird erwartet, dass Du Dich mit Python und der Fragestellung auseinander setzt. Das heisst sich in ein Python-Tutorial einarbeiten und dann die eigene Lösung zeigen, beziehungsweise Teillösung oder zumindest Lösungsansatz.
Die Aufgabe ist in der Tat ganz einfach und die sollte man eigentlich nach vier Tagen Python lernen lösen können. Wo genau sind denn die Schwierigkeiten? Es steht doch fast alles dort was man machen muss. Nicht einmal die Formel muss man sich selber suchen.
Re: Kreisberechnungen
Verfasst: Freitag 26. Oktober 2012, 00:47
von StefanLawl
Hallo, ich bin angefangen bevor 4 Tage Python zu lernen und noch die erste Aufgabe kann nicht lösen. Kann mir jemand eventuell helfen? Werde dankbar. Das soll nicht schwer sein, aber für mich es ist, weil ich nur seit 4 Tage es lerne.
Hört sich stark nach translate.google.de an.
math modul
raw_input
PythonWin
Viel Glück

Re: Kreisberechnungen
Verfasst: Freitag 26. Oktober 2012, 08:11
von bgmann
Ich kann es nicht lösen trotz alles, was ich gesucht und gelesen habe. Meine variante ist diese, aber ich weiß, dass es falsch ist. Für "try" habe ich keine ahnung was da stehen soll? Wo muss die Formel stehen? Es ist nicht, dass ich nichts versucht habe!
import math
x=math.pi
print x
userVariable=raw_input("Geben Sie bitte Durchmesser ein:")
numBerechnung=float(userVariable)
print numBerechnung
try:
except:
print "Fehler aufgetreten"
raw_input("Press return to close this window...")
Re: Kreisberechnungen
Verfasst: Freitag 26. Oktober 2012, 08:32
von Sr4l
Ohne jetzt besonders viel zu verändern. So könntest du deinen Aufgabe weiter bearbeiten:
bgmann hat geschrieben:
Code: Alles auswählen
from math import pi
print pi
userVariable = raw_input("Geben Sie bitte Durchmesser ein:")
try:
#diese Umwandlung kann fehlschlagen, wenn Eingabe keine Zahl, deshalb try / except
numBerechnung=float(userVariable)
print "Durchmesser: ", numBerechnung
print "Pi: ", pi
print "Durchmesser^2: ", numBerechnung**2
# hier muss jetzt die Flaeche berechnet werden
except ValueError:
print "Eingabe war keine Zahl."
raw_input("Press return to close this window...")
*edit* Ich habe doch noch das except zu einem ValueError gemacht, um nur Fehler der Umwandlung von string to float abzufangen.
Tipp: Führ deinen Code in der Konsole aus, damit du Fehlermeldungen lesen kannst, dann kannst du dir "raw_input("Press return to close this window...")" sparen
Re: Kreisberechnungen
Verfasst: Freitag 26. Oktober 2012, 08:47
von bgmann
Danke! Bei except steht wieder nix, soll es so sein? Ich weiß nicht, was ich ändern soll, es siecht gut aus.
Ahso, du hast schon bei Except etwas dazu geschrieben. Darf ich diese beide nacheinander schreiben?
print "Fehler aufgetreten"
print "Eingabe war keine Zahl."
Muss man nach "Zahl" "." - Punkt haben?
Re: Kreisberechnungen
Verfasst: Freitag 26. Oktober 2012, 09:21
von Leonidas
Probier es doch aus, dann siehst du ja was geht und was nicht. Das ist ja der Vorteil am Programmieren gegenüber etwa mathematischen Beweisen.
Re: Kreisberechnungen
Verfasst: Samstag 27. Oktober 2012, 19:44
von BlackJack
Eine Lösung in CoffeeScript:
Code: Alles auswählen
#!/usr/bin/env coffee
readline = require "readline"
Number :: squared = () -> this * this
interface = readline.createInterface process.stdin, process.stdout
interface.question "Bitte Durchmesser eingeben: ",
(answer) ->
d = parseFloat answer
if isNaN d
console.log "Fehler: Eingabe war keine Zahl!"
else
console.log "Die Fläche beträgt", Math.PI * d.squared() / 4
interface.close()
process.stdin.destroy()

Re: Kreisberechnungen
Verfasst: Samstag 27. Oktober 2012, 19:58
von Leonidas
@BlackJack: Einige () kann man weglassen :p
Re: Kreisberechnungen
Verfasst: Samstag 27. Oktober 2012, 20:35
von BlackJack
@Leonidas: Einige? Ich habe doch schon fast alle weg gelassen. Die Leeren bei ``Number :: squared`` können weg. Das war's dann aber auch schon.
Re: Kreisberechnungen
Verfasst: Samstag 27. Oktober 2012, 21:30
von DasIch
Haskell
Code: Alles auswählen
import Data.Maybe (listToMaybe)
import System.IO (hSetBuffering, BufferMode(NoBuffering), stdout)
import Network.CGI.Protocol (maybeRead)
area :: Double -> Double
area diameter = pi * diameter ^ 2 / 4
ask question = fmap maybeRead (putStr question >> getLine)
main :: IO ()
main = do
hSetBuffering stdout NoBuffering
maybeAnswer <- ask "Bitte Durchmesser eingeben: "
putStrLn $ maybe ("Fehler: Eingabe war keine Zahl!")
(("Die Fläche beträgt " ++) . show . area)
maybeAnswer
Re: Kreisberechnungen
Verfasst: Samstag 27. Oktober 2012, 23:20
von BlackJack
Mal eine eher langweilige Sprache: Pascal. Damit es nicht ganz so langweilig wird die Berechnung in Assembler (x86 FPU, AT&T syntax):
Code: Alles auswählen
Program CircleArea;
Const
four: Word = 4;
Var A, d: Real;
Begin
Write('Bitte Durchmesser eingeben: ');
ReadLn(d);
Asm
fninit
fld d
fmul %st,%st
fldpi
fmulp
fidiv four
fstp A
End;
WriteLn('Die Fläche beträgt ', A:0:3);
End.
Re: Kreisberechnungen
Verfasst: Sonntag 28. Oktober 2012, 09:55
von Darii
Warum nicht mal LabVIEW?

Re: Kreisberechnungen
Verfasst: Sonntag 28. Oktober 2012, 10:40
von BlackJack
May the Forth be with you:
Code: Alles auswählen
: main ( -- )
." Bitte Durchmesser eingeben: " pad 80 accept cr
pad swap >float
if
fdup f* pi f* 4e f/
." Die Fläche beträgt " f.
else
." Eingabe war keine Zahl."
then cr ;
main bye
Re: Kreisberechnungen
Verfasst: Sonntag 28. Oktober 2012, 12:41
von snafu
Oder wenn's Java sein darf:
Code: Alles auswählen
import java.util.Scanner;
public class Durchmesserberechner {
public static void main(String[] args) {
System.out.print("Bitte Durchmesser eingeben: ");
String eingabe = new Scanner(System.in).nextLine();
try {
double durchmesser = new Double(eingabe);
System.out.format("Die Fläche beträgt %.1f",
Math.PI * Math.pow(durchmesser, 2) / 4);
} catch (NumberFormatException e) {
System.err.println("Fehler: Eingabe war keine Zahl!");
}
}
}
Re: Kreisberechnungen
Verfasst: Sonntag 28. Oktober 2012, 13:35
von nomnom
Hm, die Python-Lösung hat mich noch nicht überzeugt. Der try-except-Block ist sinnlos, da der Fehler gar nicht behandelt wird, sondern nur die Fehlermeldung, die sowieso erscheinen würde, ausgegeben wird.
Edit: Code entfernt.

Re: Kreisberechnungen
Verfasst: Sonntag 28. Oktober 2012, 13:47
von BlackJack
Darii's inspiration von Lösungen in „grafischen” Programmiersprachen folgend eine Lösung in Scratch zusammen geklickt:
@nomnom: Juhuu, wenigstens einer der die Hausaufgabe für den OP in abgebbarer Form gelöst hat.
Was meinst Du mit „dank PEP8”? Genau *die* Zeile hält sich da nicht dran, denn da fehlen Leerzeichen um die Operatoren. Ich hoffe Du hast da nicht die Leerzeichen um die Zuweisung von Default- und Schlüsselwortargumenten einfach auf Operatoren übertragen.
Re: Kreisberechnungen
Verfasst: Sonntag 28. Oktober 2012, 18:47
von nomnom
BlackJack hat geschrieben:@nomnom: Juhuu, wenigstens einer der die Hausaufgabe für den OP in abgebbarer Form gelöst hat.
Was meinst Du mit „dank PEP8”? Genau *die* Zeile hält sich da nicht dran, denn da fehlen Leerzeichen um die Operatoren. Ich hoffe Du hast da nicht die Leerzeichen um die Zuweisung von Default- und Schlüsselwortargumenten einfach auf Operatoren übertragen.
Das mit der Hausaufgabe habe ich gar nicht bedacht.
Irgendwo, meine ich, habe ich mal gelesen, dass da Leerzeichen hingehören. In PEP8 habe ich es nicht mehr gefunden ...
Re: Kreisberechnungen
Verfasst: Sonntag 28. Oktober 2012, 19:53
von BlackJack
@nomnom: Ist jetzt etwas ungünstig über nicht mehr vorhandenen Quelltext zu diskutieren.
In PEP8 steht: Leerzeichen vor und nach Operatoren. Und die hattest Du nicht gesetzt, Dich aber im Kommentar darauf bezogen, dass das wegen PEP8 so aussieht.
Re: Kreisberechnungen
Verfasst: Mittwoch 31. Oktober 2012, 12:29
von BlackJack
Früher war alles viel einfacher — da hätte es so auf meinem Bildschirm (== Fernseher) ausgesehen (ohne die farbige Hervorhebung der Syntax allerdings):
Code: Alles auswählen
LIST
10 INPUT"DURCHMESSER";D
20 PRINT"FLAECHE:";π*D↑2/4
READY.
RUN
DURCHMESSER? 10
FLAECHE: 78.5398164
READY.