Turbo Pascal Problem--Deutsche Post Briefberechnung

    • Excellent
      Excellent
      Global
      Dabei seit: 15.09.2006 Beiträge: 351
      Hallo Leute, ich muss ein Programm in Turbo Pascal 7.0 schreiben und brauch ein paar Tipps. Wenn jemand das ganze Programm zum laufen bekommt kriegt 5$.(Abgabetermin^^:Mittwoch 10.Oktober 5:00Uhr).

      Es geht um die Portoberechnung für Briefe.

      Die Deutsche Post kennt 3 Regionen: Deutschland, Europa und die Welt.

      Für Deutschland gilt folgendes:

      Standardbrief bis 20g 0,55 EUR
      Kompaktbrief bis 50 g 0,90 EUR
      Großbrief bis 500 g 1,45 EUR
      Maxibrief bis 1.000 g 2,20 EUR


      Für Europa /Welt gilt:


      Standardbrief International bis 20 g Europa:0,70 EUR Welt:1,70 EUR
      Kompaktbrief international bis 50 g Europa:1,00 EUR Welt:2,00 EUR

      Maxibrief International bis 100g 2,00 EUR 4,00 EUR

      101-500 g 4,50 EUR 8,00 EUR
      501-1.000 g 6,00 EUR 12,00 EUR
      1.001-2.000 g 14,00 EUR 24,00 EUR


      Der Nutzer muss nun zuerst gefragt werden(zumindest hat sich dies wohl als günstig erwiesen) wohin der Brief soll
      am besten mit den antwortmöglichkeiten
      1- Deutschland
      2- Europa
      3- Welt

      Nun muss das gewicht abgefragt werden
      am besten wieder mit den jeweiligen antwortmöglichkeiten die aber zwischen Deutschland/Europa/Welt variieren!!!!

      Der Jackpot wäre dann der Antwortsatz/Ausgabesatz:
      Der [20g/50/500 usw] schwere [Standart/Kompakt/Groß/Maxibrief] Brief nach [Deutschland/Europa/Welt] kostet [....]€

      Schonmal vielen Dank im Voraus für die Hilfe :P

      die links zu dp:
      http://www.deutschepost.de/dpag?tab=1&skin=hi&check=yes&lang=de_DE&xmlFile=link1015319_900424

      http://www.deutschepost.de/dpag?tab=1&skin=hi&check=yes&lang=de_DE&xmlFile=link1015318_832
  • 13 Antworten
    • Itachi
      Itachi
      Bronze
      Dabei seit: 22.09.2006 Beiträge: 3.787
      Und du willst das fertige Programm von jemandem hier?
      Viel Glück :)

      Ich hab etz den Code erwartet mit irgendnem kleinen Bug/Problem.. da hätte man dir helfen können.

      Fang doch erstmal an. Struktogramm malen, Algorithmus für die Briefart-Bestimmung entwerfen (mach das alles in Funktionen), usw.

      Wenn de dann noch Probleme hast.. frag nochmal.
      Oder am besten in nem Turbo Pascal Forum.. da wissen wohl mehr bescheid.
    • TeeZee
      TeeZee
      Bronze
      Dabei seit: 29.08.2006 Beiträge: 2.262
      das wird doch für Info sein, oder?

      Also bei mir in Info lief das damals immer so ab, dass wir immer in Gruppen gearbeitet haben und in jeder Gruppe war halt einer drin, der was konnte und der dass dann gemacht hat. frag den doch mal. Und sonst nerv halt einfach die Leute aus den anderen Gruppen die Ahnung haben. Es gibt so viel besseres in Info zu tun. "Blobby Volley" oder super ist auch "Achtung die Kurve".

      Ich hab sogar mal ein eigenes Spiel geschrieben: "Pferderennen" das ist auch lustig zu mehreren. Bei interesse kann ich das zur verfügung stellen.

      Ich merke gerade ich bin noch richtig stolz auf mein Spiel. Man, das waren lustige Stunden...
    • mabla
      mabla
      Bronze
      Dabei seit: 11.02.2007 Beiträge: 1.526
      Schreib mal was genau das Problem ist. :D
      Ist bei mir zwar schon ne Weile her mit Info, aber vielleicht kann ich ja helfen.

      Bei uns in Info wurde auch immer Blobby Volley und Doom gespielt oder irgendwelche Nachrichten mit Netsend durch die Gegend geschickt.
      Wenn auf dem Rechner Win 2000 drauf ist kannst du die anderen Rechner runterfahren, irgendwann war kein Unterricht mehr möglich. :P
    • norenore
      norenore
      Bronze
      Dabei seit: 02.09.2007 Beiträge: 2.640
      Hi,
      mal was ganz anderes, was mich interessiert: Wie kommt man auf die Idee, in einem Smalltalk Forum einer Pokerschule eine Frage zum Programmieren zu stellen? :P
      Versteh mich nicht falsch, aber ich würde es erstmal in einem Forum probieren, dass sich mit diesem Thema auseinandersetzt. ;)

      Gruß
      David
    • Excellent
      Excellent
      Global
      Dabei seit: 15.09.2006 Beiträge: 351
      program post;
      uses crt;
      var a,b,c:integer;

      begin

      clrscr;

      writeln('Bitte geben sie den Ort an');
      writeln('1) Deutschland');
      writeln('2) Europa');
      writeln('3) Welt');

      readln(a);

      writeln('Bitte geben Sie das Gewicht ein');

      readln(b);

      case b of
      '0'..'20': c:=0.7;
      '21'..'50': c:=1;
      '51'..'100': c:=2;
      else writeln('Ungltiges Gewicht!');
      end;

      writeln('Ein 'b,' Gramm schweres Paket nach 'a,' kostet 'c,' Euro!');

      readln;

      end.

      so das is n anfang aber in die falsche richtung, leute wenn es jemand hinkriegt dass ding zum laufen zu kriegen bekommt er 5$
      bis mittwoch früh(10.oktober 5uhr)


      hey teeZee, bei uns sind alle einzelkämpfer nichts mit gruppen^^
      hey norenore, du siehst doch dass leute hierher finden oder? es is auch im technikforum gepostet,

      also ich arbeite dran
    • Publius
      Publius
      Bronze
      Dabei seit: 26.02.2006 Beiträge: 1.339
      Das ist ja wie die Zündkerze an einer Simson (DDR-Moped) auswechseln - Hab ich auch seit Ewigkeiten nicht mehr gemacht obwohl es kinderleicht geht. Und auch keinen Bock drauf es wieder zu tun. :D :D
      Tipp: Morgen in irgendeine Bibliothek gehen, die es mit dem Aussortieren veralteter Bücher nicht so hat und Buch ausleihen.
      Irgendein simples Programm auswählen, das auch nach dem uralten E-V-A Prinzip (Eingabe, Verarbeitung, Ausgabe) in seiner einfachsten Form arbeitet, auswählen und anpassen.
      Wenn möglich noch ein hübsches Struktogramm malen und vernünftigen Code schreiben; nicht so eine Spagetti-Programmierung. Und schon freut sich der Lehrer. ;)

      @Edit: Google ftw http://www.alexander-graef.de/tp/index.htm
    • emophiliac
      emophiliac
      SuperModerator
      SuperModerator
      Dabei seit: 08.03.2005 Beiträge: 4.536
      bereite doch einfach ein paar arrays vor...
      du hast 3 zielorte
      du hast max 6 gewichtsgruppen

      var preis : array [0..2, 0..5] of real;
      var maxgewicht: array[0..2, 0..5] of integer;
      var ausgabeort: array [0..2] of string;
      var ausgabebriefart: array [0..2, 0..5] of string;

      preise[0, 0] wär dann der preis für deutschland, standardbrief bis 20g
      gewichte enthält die obergrenzen, gewichte[0,0] z.b. den wert 20. dann kannst du mit ner gewichtsangabe angehen, erst den maximalwert annehmen und von oben nach unten das array durchlaufen und feststellen, ob der brief kleiner als die jeweilige obergrenze ist und damit in eine kleinere, preisgünstigere kategorie fällt. damit hast du den zweiten index.

      die beiden anderen arrays fütterst du nur mit den ausgabetexten. ausgabeort z.b. mit (Deutschland, Europa, Welt), am ende fragst du ab, welche zielregion und wie schwer das dings ist, stellst einfach fest, in welche gewichtsgruppe das ding fällt, gibst das alles geschmeidig aus und fertig.
    • uzzle
      uzzle
      Bronze
      Dabei seit: 15.05.2005 Beiträge: 237
      program post;
      uses crt;
      var wahl,region,gewicht:integer;preis:real;ok:boolean;s,h:string;


      function preisermitteln(region:real;gewicht:real;var ok:boolean):real;
      begin
      ok:=true;
      if (region=1) then
      begin
      if gewicht<=20 then
      preisermitteln:=0.55;
      if (gewicht>20) and (gewicht<=50) then
      preisermitteln:=0.90;
      if (gewicht>50) and (gewicht<=500) then
      preisermitteln:=1.45;
      if (gewicht>500) and (gewicht<=1000) then
      preisermitteln:=2.20;
      if gewicht>1000 then ok:=false;
      end;
      if region=2 then
      begin
      if gewicht<=20 then
      preisermitteln:=0.70;
      if (gewicht>20) and (gewicht<=50) then
      preisermitteln:=1.00;
      if (gewicht>50) and (gewicht<=100) then
      preisermitteln:=2.00;
      if (gewicht>100) and (gewicht<=500) then
      preisermitteln:=4.50;
      if (gewicht>500) and (gewicht<=1000) then
      preisermitteln:=6.00;
      if (gewicht>1000) and (gewicht<=2000) then
      preisermitteln:=14.00;
      if gewicht>2000 then ok:=false;
      end;
      if region=3 then
      begin
      if gewicht<=20 then
      preisermitteln:=1.70;
      if (gewicht>20) and (gewicht<=50) then
      preisermitteln:=2.00;
      if (gewicht>50) and (gewicht<=100) then
      preisermitteln:=4.00;
      if (gewicht>100) and (gewicht<=500) then
      preisermitteln:=8.00;
      if (gewicht>500) and (gewicht<=1000) then
      preisermitteln:=12.00;
      if (gewicht>1000) and (gewicht<=2000) then
      preisermitteln:=24.00;
      if gewicht>2000 then ok:=false;
      end;
      if (region<>1) and (region<>2) and (region<>3) then
      ok:=false;
      end;

      begin
      wahl:=0;
      while wahl<>4 do
      begin
      clrscr;
      writeln('Bitte geben Sie den Ort an');
      writeln('1) Deutschland');
      writeln('2) Europa');
      writeln('3) Welt');
      writeln('4) ENDE');
      write('Ihre Wahl: ');
      readln(wahl);
      region:=wahl;
      if wahl<>4 then
      begin
      write('Bitte geben Sie das Gewicht in Gramm ein: ');
      readln(gewicht);
      preis:=preisermitteln(region,gewicht,ok);
      if ok=true then
      begin
      writeln('');
      s:='Ein ';
      str(gewicht,h);
      s:=s+ h;
      s:=s+'g schweres Paket nach Region Nr ';
      str(region,h);
      s:=s+h;
      s:=s+' kostet ';
      str(preis:3:2,h);
      s:=s+h;
      s:=s+' Euro';
      writeln(s);
      end
      else
      begin
      writeln('');
      writeln('Oh nein da ist ein Fehler aufgetreten');
      end;
      readln(h);
      end;
      end;
      end.

      wenn str nicht geht musste inttostr versuchen was bei mir irgendwie nicht wollte... da hat er immer gesagt kenne den befehl nicht :D ist zwar nicht die schönste lösung aber läuft xD
    • larseda
      larseda
      Bronze
      Dabei seit: 06.08.2006 Beiträge: 9.299
      jetzt postet der hier seine info-HA und einer schreibt ihm auch noch ne lösung -.-

      das was du selbst gepostet hast, ist sicher das, was euch eurer lehrer noch inner schule vorgeben hat, damit ihr nen anfang habt.


      finds echt lächerlich und dein spruch mit den 5$ is der blank Hohn.


      naja :rolleyes:


      @uzzle
      schreib mir meinen unibeleg über OOP ? geb dir sogar 10$
    • uzzle
      uzzle
      Bronze
      Dabei seit: 15.05.2005 Beiträge: 237
      so hab die version noch ein bisschen verfeinert :)

      program post;
      uses crt;
      var wahl,region,gewicht:integer;preis:real;s,h:string;


      function preisermitteln(region:real;gewicht:real):real;
      begin
      if (region=1) then
      begin
      if gewicht=1 then
      preisermitteln:=0.55;
      if gewicht=2 then
      preisermitteln:=0.90;
      if gewicht=3 then
      preisermitteln:=1.45;
      if gewicht=4 then
      preisermitteln:=2.20;
      end;
      if region=2 then
      begin
      if gewicht=1 then
      preisermitteln:=0.70;
      if gewicht=2 then
      preisermitteln:=1.00;
      if gewicht=3 then
      preisermitteln:=2.00;
      if gewicht=4 then
      preisermitteln:=4.50;
      if gewicht=5 then
      preisermitteln:=6.00;
      if gewicht=6 then
      preisermitteln:=14.00;
      end;
      if region=3 then
      begin
      if gewicht=1 then
      preisermitteln:=1.70;
      if gewicht=2 then
      preisermitteln:=2.00;
      if gewicht=3 then
      preisermitteln:=4.00;
      if gewicht=4 then
      preisermitteln:=8.00;
      if gewicht=5 then
      preisermitteln:=12.00;
      if gewicht=6 then
      preisermitteln:=24.00;
      end;
      end;

      procedure regionswahl;
      begin
      writeln('Bitte geben Sie den Ort an');
      writeln('1) Deutschland');
      writeln('2) Europa');
      writeln('3) Welt');
      writeln('4) ENDE');
      write('Ihre Wahl: ');
      readln(wahl);
      region:=wahl;
      end;

      procedure gewichtswahl(region:integer);
      begin
      writeln('Bitte wählen Sie das Gewicht: ');
      if region=1 then
      begin
      writeln('1) 0g bis 20g');
      writeln('2) 21g bis 50g');
      writeln('3) 51g bis 500g');
      writeln('4) 5001g bis 1000g');
      end;
      if (region=2) or (region=3) then
      begin
      writeln('1) 0g bis 20g');
      writeln('2) 21g bis 50g');
      writeln('3) 51g bis 100g');
      writeln('4) 101g bis 500g');
      writeln('5) 501g bis 1000g');
      writeln('6) 1001g bis 2000g');
      end;
      write('Ihre Wahl: ');
      readln(gewicht);
      end;

      procedure ausgabe(region:integer;gewicht:integer;preis:real);
      begin
      writeln('');
      s:='Ein';
      if region=1 then
      begin
      if gewicht=1 then
      s:=s+' 0g bis 20g ';
      if gewicht=2 then
      s:=s+' 21g bis 50g ';
      if gewicht=3 then
      s:=s+' 51g bis 500g ';
      if gewicht=4 then
      s:=s+' 501g bis 1000g ';
      end;
      if (region=2) or (region=3) then
      begin
      if gewicht=1 then
      s:=s+' 0g bis 20g ';
      if gewicht=2 then
      s:=s+' 21g bis 50g ';
      if gewicht=3 then
      s:=s+' 51g bis 100g ';
      if gewicht=4 then
      s:=s+' 101g bis 500g ';
      if gewicht=5 then
      s:=s+' 501g bis 1000g ';
      if gewicht=6 then
      s:=s+' 1001g bis 2000g ';
      end;
      s:=s+'schweres Paket';
      if region=1 then
      s:=s+' nach Deutschland';
      if region=2 then
      s:=s+' nach Europa';
      if region=3 then
      s:=s+' in die Welt';
      s:=s+' kostet: ';
      str(preis:3:2,h);
      s:=s+h+' Euro';
      writeln(s);
      write('Press any key');
      readln(h);
      end;

      begin
      wahl:=0;
      while wahl<>4 do
      begin
      clrscr;
      regionswahl;
      if wahl<>4 then
      begin
      gewichtswahl(region);
      preis:=preisermitteln(region,gewicht);
      ausgabe(region,gewicht,preis);
      end;
      end;
      end.


      PS: Uniaufgaben sind mir zu schwer :-P und die 5$ brauch ich auch nicht. kannste irgendwem anders schenken :D
    • Excellent
      Excellent
      Global
      Dabei seit: 15.09.2006 Beiträge: 351
      uzzle du bist der king ;-)

      program post;
      uses crt;
      var wahl,region,gewicht:integer;
      preis:real;
      ok:boolean;
      s: string;
      h: string;

      function preisermitteln(region:real;gewicht:real;var ok:boolean):real;
      begin
      ok:=true;
      if (region=1) then
      begin
      if gewicht<=20 then
      preisermitteln:=0.55;
      if (gewicht>20) and (gewicht<=50) then
      preisermitteln:=0.90;
      if (gewicht>50) and (gewicht<=500) then
      preisermitteln:=1.45;
      if (gewicht>500) and (gewicht<=1000) then
      preisermitteln:=2.20;
      if gewicht>1000 then ok:=false;
      end;
      if region=2 then
      begin
      if gewicht<=20 then
      preisermitteln:=0.70;
      if (gewicht>20) and (gewicht<=50) then
      preisermitteln:=1.00;
      if (gewicht>50) and (gewicht<=100) then
      preisermitteln:=2.00;
      if (gewicht>100) and (gewicht<=500) then
      preisermitteln:=4.50;
      if (gewicht>500) and (gewicht<=1000) then
      preisermitteln:=6.00;
      if (gewicht>1000) and (gewicht<=2000) then
      preisermitteln:=14.00;
      if gewicht>2000 then ok:=false;
      end;
      if region=3 then
      begin
      if gewicht<=20 then
      preisermitteln:=1.70;
      if (gewicht>20) and (gewicht<=50) then
      preisermitteln:=2.00;
      if (gewicht>50) and (gewicht<=100) then
      preisermitteln:=4.00;
      if (gewicht>100) and (gewicht<=500) then
      preisermitteln:=8.00;
      if (gewicht>500) and (gewicht<=1000) then
      preisermitteln:=12.00;
      if (gewicht>1000) and (gewicht<=2000) then
      preisermitteln:=24.00;
      if gewicht>2000 then ok:=false;
      end;
      if (region<>1) and (region<>2) and (region<>3) then
      ok:=false;
      end;

      begin
      wahl:=0;
      while wahl<>4 do
      begin
      clrscr;
      writeln('Bitte geben Sie den Ort an');
      writeln('1) Deutschland');
      writeln('2) Europa');
      writeln('3) Welt');
      writeln('4) ENDE');
      write('Ihre Wahl: ');
      readln(wahl);
      region:=wahl;
      if wahl<>4 then
      begin
      write('Bitte geben Sie das Gewicht in Gramm ein: ');
      readln(gewicht);
      preis:=preisermitteln(region,gewicht,ok);
      if ok=true then
      begin
      writeln('');
      s:='Ein ';
      str(gewicht,h);
      s:=s+ h;
      s:=s+'g schweres Paket nach Region Nr ';
      str(region,h);
      s:=s+h;
      s:=s+' kostet ';
      str(preis:3:2,h);
      s:=s+h;
      s:=s+' Euro';
      writeln(s);
      end
      else
      begin
      writeln('');
      writeln('Oh nein da ist ein Fehler aufgetreten');
      end;
      readln(h);
      end;
      end;
      end.

      hab noch 2 minimalste veränderungen vorgenommen und es läuft!!! :-)
      danke danke danke
      wenn du willst setzen wir uns an nen privatetable und du bekommst 5$

      sag mal machst du dass als herausforderung, macht es dir spaß, arbeitest du in der IT Branche oder was???
      das würde mich echt mal interssieren
    • uzzle
      uzzle
      Bronze
      Dabei seit: 15.05.2005 Beiträge: 237
      das mit den privattablen ist doch verboten ;)
      ich hab das zu einem als "herausvorderung" gemacht. und zum andern aus langeweile :D bin momentan ausbildungsplatzsuchend. hatte in info grundkurs 1+ durchgängig... der lehrer hat die klausurenpunkte immer so aufgeteilt das ich 15punkte hatte und dann hat er geschaut wieviel punkte die anderen haben :D war ziemlich cool.

      find die zweite version bissel schöner von der struktirierung und die ausgabe ist schöner :) da ist wie du wolltest ein 2tes menü wo man dann 0-20 und so auswählen kann
    • romanempire
      romanempire
      Bronze
      Dabei seit: 03.08.2006 Beiträge: 561
      Ich würde das ein wenig kürzer schreiben und die Regionen in einem case behandeln

      if gewicht<=20 then
      preisermitteln:=0.55;
      else if (gewicht<=50) then
      preisermitteln:=0.90;
      else if (gewicht<=500) then
      preisermitteln:=1.45;
      else if (gewicht<=1000) then
      preisermitteln:=2.20;
      else ok:=false;

      evtl. gibts für else if auch sowas wie elif (Pascal hat man vor 20 Jahren gemacht, kenn mich damit nicht so aus)