Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleifen-Problem (https://www.delphipraxis.net/109954-schleifen-problem.html)

coly546 10. Mär 2008 15:56


Schleifen-Problem
 
Guten Tag,
ich habe ein Problem mit folgender Aufgabe:

Zitat:

Schreiben Sie ein Programm, jenes das Gehäuse eines kegelförmigen Körpers berechnen kann.
Der User muss dazu nur die Höhe des kegelförmigen Körpers eingeben. Lassen Sie eine Liste
mit folgenden Bestandteilen ausgeben:
den Durchmesser von 300-500mm in 10er-Schritten
den dazu gehörigen Winkel des Mantels in Grad
Manteldurchmesser in mm

Tipp:

Durchmesser:=Durchmesser+10;
Radius:=Durchmesser/2;
Seite:=sqrt(Hoehe*Hoehe+Radius*Radius);
Alpha:=360*Radius/Seite;
Manteldurchmesser:=2*Seite;


Das habe ich bis jetzt programmiert und komme leider nicht weiter:
Delphi-Quellcode:
program Kegel;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  Durchmesser, Radius, Seite, Alpha, Manteldurchmesser, Hoehe:real;
begin

  writeln;
  writeln;
  writeln(' Programm zum Berechnen des Materialzuschnittes fuer Kegel-Koerper ');
  writeln(' ******************************************************************');
  writeln;
  writeln;
  writeln('      Geben Sie die Hoehe des Kegels in mm ein: ');
  read(Hoehe);
  writeln;writeln;writeln;writeln;writeln;writeln;writeln;writeln;
  writeln;writeln;writeln;writeln;writeln;writeln;writeln;writeln;
  writeln(' Durchmesser     Winkel des Mantels     Manteldurchmesser');
  writeln(' __________________________________________________________');


  Durchmesser:=290;
  Radius:=0;
  Seite:=0;
  Alpha:=0;
  Manteldurchmesser:=0;

  repeat
      Durchmesser:=Durchmesser+10;
      Radius:=Durchmesser/2;
      Seite:=sqrt(Hoehe*Hoehe+Radius*Radius);
      Alpha:=360*Radius/Seite;
      Manteldurchmesser:=2*Seite;

      writeln(' ',Durchmesser:5:2,' mm         ',Alpha:5:2,' grd     ',Manteldurchmesser:5:2,' mm');
      readln; //dieses 'readln' muss weg!!!

  until Durchmesser=500;
  readln; //dieses 'readln' hinzugefügt werden!!!
  readln;
end.

Für die Aufgabe dürfen wir allerdings nur Repeat-Until-Schleifen, case-of und if-then-else-Abfragen verwenden. Ach so, dabei handelt es sich um eine Konsolen-Anwendung.




Es wäre toll, wenn ihr mir helfen könntet.



mfG coly546

Larsi 10. Mär 2008 16:00

Re: Schleifen-Problem
 
[OT]Also zu deiner If- Schleife: www.if-schleife.de [OT]
Ich würde das ganz ganz ganz ganz schnell zu If Abfragen machen sonst bekommst du gleich 1000 Nachrichten von dominösen Leuten die Bier von dier haben wollen^^

DeddyH 10. Mär 2008 16:04

Re: Schleifen-Problem
 
[OT] Ich hab nix gesehen :mrgreen: .[/OT]
Zu dem Problem: ich habe gerade Feierabend und schaue mir das nachher zu Hause mal genauer an, falls bis dahin niemand eine Lösung postet.

jfheins 10. Mär 2008 16:05

Re: Schleifen-Problem
 
Nur mal so, rein auis Interesse - wo ist denn dein Problem/deine Frage?

Denn ein "Das habe ich bis jetzt programmiert und komme leider nicht weiter:" hilft leider nicht sehr bei der Eingrenzung des Problems ;)

coly546 10. Mär 2008 16:09

Re: Schleifen-Problem
 
Also das Problem liegt darin das er mir nur 2 von 20 Zeilen "ausspuckt" und ich nicht weiß wie ich das ändern kann.
Das Programm soll ja eine Liste von 300-500mm ausgeben, jenes tut das
allerdings nur bis 320...

s-off 10. Mär 2008 16:34

Re: Schleifen-Problem
 
Hallo,

entferne mal das 'readln' innerhalb der Schleife, dann läuft es durch.

Ansonsten bekommst Du die weiteren Wert durch drücken der [ENTER]-Taste.

coly546 10. Mär 2008 16:41

Re: Schleifen-Problem
 
Dankeschön!

Bei den Programm was wir heute schreiben mussten, hatten wir das 'readln' in der Schleife drin...so das ich annahm das jenes hier auch rein gehört.
Jetzt muss es 2*mal nach der Schleife geschrieben werden...

Ein bisschen peinlich ist es mir ja schon, aber wenn ich darauf nun mal leider nicht gekommen bin. :(


Herzlichsten Dank an alle Helfer :bounce2:

s-off 10. Mär 2008 16:50

Re: Schleifen-Problem
 
Zitat:

Zitat von coly546
Ein bisschen peinlich ist es mir ja schon, aber wenn ich darauf nun mal leider nicht gekommen bin.

Hmm?
Das muss Dir doch nicht peinlich sein :!:

Ich kenne mich mit Konsolenanwendungen überhaupt nicht aus, und habe die 'Lösung' auch nur durch den Debugger herausgefunden.

Ich glaube, dass das 'readln' am Ende nur deshalb steht, damit sich die Konsole nicht schliesst.

DeddyH 10. Mär 2008 16:54

Re: Schleifen-Problem
 
Eine kleine Anmerkung noch: wenn Du den Durchmesser initial auf 300 setzt, ist das Programm auch für Außenstehende leichter zu verstehen.
Delphi-Quellcode:
  Durchmesser:=300;
{ unnötig
  Radius:=0;
  Seite:=0;
  Alpha:=0;
  Manteldurchmesser:=0;}

  repeat
      Radius:=Durchmesser/2;
      Seite:=sqrt(Hoehe*Hoehe+Radius*Radius);
      Alpha:=360*Radius/Seite;
      Manteldurchmesser:=2*Seite;

      writeln(' ',Durchmesser:5:2,' mm         ',Alpha:5:2,' grd     ',Manteldurchmesser:5:2,' mm');
      Durchmesser:=Durchmesser+10; //erst jetzt erhöhen

  until Durchmesser > 500;//nun muss natürlich auf größer abgefragt werden
[edit] Noch eine Anmerkung: Die Zuweisungen vor der Schleife (bis auf Durchmesser) kannst Du Dir sparen, da diese ja in der Schleife bei jedem Durchlauf gesetzt werden. [/edit]

coly546 10. Mär 2008 16:59

Re: Schleifen-Problem
 
Tut mir leid, aber ich dacht es macht mehr Sinn wenn wenigstens die erste Zeile bei der Ausgabe, mit 300mm stimmt.
Trotzdem vielen dank für deine Tipps :)


liebe Grüße

//Edit:

Danke für diesen zusätzlichen Tipp!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz