WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 13.07.2008, 12:19   #1
Mr.Spock
Newbie
 
Registriert seit: 13.07.2008
Alter: 34
Beiträge: 2


Standard borland pascal problem =D

hallo leute,
ich hab da ein kleines problem,
ich bin noch anfänger im programmieren allgemein und wollte mal ein stadt-land-fluss game in borland pascal schreiben,
der berechnet die ergebnisse nämlich nicht so wie ich es will =),
der folgende code beinhaltet die berechnung der punktzahl beider spieler bei einer disziplin ,z.B. Stadt.

Code:
case q of ' ': begin
               if a=' '
               then begin end
               else begin n:=n+20; end;
               end
        else  begin
              if a=' '
              then begin m:=m+20; end
              else
              begin
              if q=a then begin m:=m+5;
                                n:=n+5;
                          end
                 else begin m:=m+10;
                            n:=n+10;
                          end;
              end;
              end;
end;
folgende logik soll dahinterstehen:
es handelt sich ja um eine case anweisung mit 2 grundmöglichkeiten, die erste ist wenn Spieler 1 nichts eingegeben hat [' '], die folge hab ich verzweigt nämlich wenn Spieler 2 auch nichts eingeben hat passiert gar nichts, also werden keine punkte vergeben, tritt der andere Fall ein, dass Spieler 2 etwas geschrieben hat bekommt er 20 Punkte (so is das doch bei Stadt Land Fluss oder? )
jetzt sind wir schon bei 2 grundmöglichkeit der case verzweigung , das else bedeutet ja, dass Spieler was geschrieben hat, die folge is dann auch wieder verzweigt, nämlich wenn dann Spieler 2 nix geschieben hat kriegt er 20 punkte, andernfalls (wenn beide was geschrieben haben) dann 1. wenn die wörter gleich sind bekommt jeder 5 punkte; 2. wenn sie sich unterscheiden 10 punkte.
nach diesem system hab ich auch alle anderen disziplinen (Land, Fluss,...) ausrechnen lassen

so das wars der erläuterung die ihr wahrscheinlich sowieso nicht braucht
aber trotzdem zeigt das program bei jedem spielvorgang 60 punkte für beide Spieler an :/
kann mir irgendwer helfen und mir tipps geben, is zwar jetzt kein weltbewegendes problem aber wär trotzdem nett
Mr.Spock ist offline   Mit Zitat antworten
Alt 14.07.2008, 08:34   #2
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

Verwende aussagekräftige Variablennamen, dann lässt sich hier vielleicht auch was machen

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 14.07.2008, 10:11   #3
geoliver
Newbie
 
Registriert seit: 11.03.2004
Beiträge: 4


Standard

laß mal die unnötigen begin und ends weg. Dann wirds übersichtlicher
z.B:

case q of ' ' : if a <> ' ' then n:=n+20;
else ..... usw
geoliver ist offline   Mit Zitat antworten
Alt 14.07.2008, 12:55   #4
CornedBee
Jr. Member
 
Registriert seit: 05.09.2002
Alter: 41
Beiträge: 24


CornedBee eine Nachricht über ICQ schicken
Standard

Für 2 Fälle sollte außerdem kein Case verwendet werden.
____________________________________
All the buzzt.
Logic is futile.

\"Der freie Fall ist nicht weiter schlimm - die Landung ist es.\"
CornedBee ist offline   Mit Zitat antworten
Alt 14.07.2008, 17:08   #5
SuperDef
Newbie
 
Registriert seit: 14.07.2008
Alter: 49
Beiträge: 1


Standard

Hallo Mr.Spock,

ich versuche mal, dir weiterzuhelfen.

Wenn ich das richtig deute verwendest du folgende Variablen:

q -> Eingabe Spieler 1 -> Typ: string(?)
a -> Eingabe Spieler 2 -> Typ: string(?)
m -> Punkte Spieler 1 -> Typ: word (?)
n -> Punkte Spieler 2 -> Typ: word (?)

dann könnte dein Programm so aussehen:

Code:
if (q=a) then 
  if (q<>'') then begin 
                    m:=m+5; 
                    n:=n+5; 
                  end;

{Wenn die Eingaben beider Spieler gleich sind und nicht leer sind 
dann bekommt jeder Spieler 5 Punkte}


if (q<>a) then begin
{Wenn die Eingaben unterschiedlich sind, dann...}

               if (q='') then n:=n+20;
               {wenn Spieler 1 nichts eingibt bekommt Spieler2 20 Punkte}

               if (a='') then m:=m+20;
               {wenn Spieler 2 nichts eingibt bekommt Spieler1 20 Punkte}

               if ((q<>'') and (a<>'')) then begin
                                             m:=m+10;
                                             n:=n+10;
                                             end;
               {wenn beide Spieler etwas eingegeben haben bekommen beide
                10 Punkte}
               end;
Ich hoffe, dir damit weitergeholfen zu haben. Da du noch Anfänger bist habe ich versucht, den Code möglichst einfach und logisch zu gestalten. Es ginge natürlich auch noch eleganter und kompakter

SuperDef
SuperDef ist offline   Mit Zitat antworten
Alt 14.07.2008, 21:55   #6
Mr.Spock
Newbie
 
Registriert seit: 13.07.2008
Alter: 34
Beiträge: 2


Standard

Hallo SuperDef,
zunächst einmal vielen Dank für deine Hilfe, dein Programvorschlag hat geklappt!!

Zitat:
Wenn ich das richtig deute verwendest du folgende Variablen:

q -> Eingabe Spieler 1 -> Typ: string(?)
a -> Eingabe Spieler 2 -> Typ: string(?)
m -> Punkte Spieler 1 -> Typ: word (?)
n -> Punkte Spieler 2 -> Typ: word (?)
ja, genau, nur das m und n bei mir vom Typ integer sind, aber ich denk mal das macht nicht den Unterschied.
Aber trotzdem würde ich gerne wissen, warum das bei mir nicht ging, lag es daran, das man für die Unterscheidung von 2 Fällen nicht case nehmen sollte, wie CornedBee es gesagt hat? Außerdem musste ich dort die Eingaben der beiden Spieler als Char definieren, weil er bei string eine Fehlermeldung ausspukte, vielleicht lags daran. Zu allen Überfluss hab ich eben bermerkt, dass ich an einer anderen Stelle des Programs die Variablen der beiden Spieler vertauscht hab xD
Naja jetzt hab ich es ja richtig,
also nochmals vielen dank an alle!!
Mr.Spock ist offline   Mit Zitat antworten
Alt 14.07.2008, 23:52   #7
Sesa_Mina
Schwarzfußfrettchen
 
Registriert seit: 28.01.2001
Beiträge: 2.071


Standard

m, n, a, q...

Ein Tip von mir:

Benenne Variablen möglichst eindeutig.

Also z.B.
strSpieler_1_Input
strSpieler_2_Input
intSpieler_1_Punkte
intSpieler_2_Punkte

Dann kennst dich auch noch in 6 Monaten aus was was is.

Mag zwar mehr Tipparbeit sein aber es lohnt sich.
____________________________________
Wann die kan Almdudler ham... \"Es gibt nur einen Weg zur Lunge, und der muss geteert werden, damit der Krebs nicht stolpert!\"
http://www.dream.at/gizmo/bunny.gif
Image is © 2001 Merle
Sterndalsäg.. ähh... jäger
Sesa_Mina ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:43 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag