Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Code erstellen - aber wie?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 03.08.2016, 16:21    Titel: Code erstellen - aber wie? Antworten mit Zitat

Liebes Forum,
ich bin am verzweifeln. Vielleicht kann mir jemand helfen.
Ich kann kein Basic programmieren benötige aber den Code für folgendes Beispiel um daraus ein Flussdiagramm zu erzeugen.
Nach tagelangem lesen und rumprobieren komme ich einfach nicht weiter und finde den Fehler nicht lächeln

Hier mein Beispiel:
Code:
100 REM -- V   EINER DER VERDAECHTIGEN 1 BIS 4
110 REM -- M    DER MOERDER, V AUS 1 BIS 4, 0 UNBEKANNT
120 REM -- H$   ARRAY DER HAARFARBEN
130 REM -- A$   ARRAY DER AEUSSEREN ERSCHEINUNG
140 REM -- Z$   ARRAY DER ZIMMERNUMMERN
150 REM
160 REM – 1 = COLONEL WOODLEY     2 = MR HOLMAN
170 REM – 3 = MR POPE     4 = SIR RAYMOND
180 REM
190   DIM V (1 to 4) as integer = {1, 2, 3, 4}
191 DIM M (1 to 4) as integer = {1, 2, 3, 4}
192 DIM H(4)As String = {"ROT", "SCHWARZ", "BRAUN", "GRAU","UNBEKANNT"}
193 DIM A(4)As String = {"RUBINRING", "GOLDUHR", "ZWICKER", "AERMEL","UNBEKANNT"}
194 DIM Z(4)As String = {"ZIMMER 10", "ZIMMER 12", "ZIMMER 14", "ZIMMER 16","UNBEKANNT"}
210 REM – UNTERSTELLEN, DASS NICHTS BEKANNT IST
220      LET M = 0
230       FOR V = 1 TO 4
240      LET H$(V) = „UNBEKANNT“
250      LET A$(V) = „UNBEKANNT‘“
260      LET Z$(V) = „UNBEKANNT‘“
270      NEXT V
280 REM
290 REM – BEKANNTE HINWEISE ANGEBEN
300      LET Z$(4) = „ZIMMER 10“
310       LET A$(3) = „GOLDUHR“
320      LET A$(2) = „RUBINRING“
330       LET Z$(2) = “ZIMMER 12”
340 REM
350       LET V = 1
360 REM – VERBLEIBENDE HINWEISE WIEDERHOLT PRUEFEN
370       IF Z$(V) <> “ZIMMER 14“    THEN 390
380          LET H$(V) = “SCHWARZ”
390       IF A$(4) = “UNBEKANNT”    THEN 420
400      IF A$(4) = “ZWICKER”       THEN 420
410          LET A$(1) = “ZWICKER”
420       IF A$(1) = “UNBEKANNT”    THEN 450
430       IF A$(1) = “ZWICKER”       THEN 450
440          LET A$(4) = “ZWICKER”
450       IF A$(V) <> “ZWICKER”       THEN 470
460          LET H$(V) = “BRAUN”
470       IF A$(V) <> “AERMEL”       THEN 490
480          LET H$(V) = “ROT”
490       IF Z$(V) <> “ZIMMER 16”    THEN 510
500          LET A$(V) = “AERMEL”
510       IF Z$(V) <> “ZIMMER 12”    THEN 530
520          LET H$(V) = “GRAU”
530       IF A$(V) <> “GOLDUHR”    THEN 550
540          LET Z$(V) = “ZIMMER 14”
550       IF Z$(V) <> “ZIMMER 10”    THEN 580
560       IF V = 1             THEN 580
570          LET Z$(1) = “ZIMMER 16”
580       IF Z$(V) <> “ZIMMER 16”    THEN 610
590       IF V = 1             THEN 610
600          LET Z$(1) = “ZIMMER 10”
610       IF B$(V) <> “BRAUN”       THEN 650
620       LET M = V
630 REM
640 REM – NAECHSTEN VERDAECHTIGEN PRUEFEN
650       IF V = 4    THEN 680
660       LET V = V + 1
670       GOTO 700
680       LET V = 1
690       GOTO 700
700       IF M = 0 THEN 370
710 REM
720 REM – ZEIGE NAMEN DES MOERDERS AN
730       IF M <> 1 THEN 750
740          PRINT “DER MOERDER IST COLONEL WOODLEY“
750       IF M <> 2 THEN 770
760          PRINT “DER MOERDER IST MR. HOLMAN“
770       IF M <> 3 THEN 790
780          PRINT “DER MOERDER IST MR. POPE“
790       IF M <> 4 THEN 810
800          PRINT “DER MOERDER IST SIR RAYMOND“
810       STOP
820 END


Was mache ich denn falsch? verlegen
Viele Grüße
maxi

Editiert durch Moderator: Ursprünglichen Titel "Hilfe ! zu Code für Anfänger" etwas präzisiert. (Sebastian)


Zuletzt bearbeitet von maxi am 03.08.2016, 17:25, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4212
Wohnort: ~/

BeitragVerfasst am: 03.08.2016, 16:44    Titel: Antworten mit Zitat

Nur mal so ein paar Kleinigkeiten, die mir gerade auffallen (vielleicht sehe ich nachher noch was):
Du verwendest mal H() AS STRING und mal H$(). Ich bin mir nicht sicher, ob die beiden Arrays als identisch angesehen werden; ich vermute aber eher nicht.
Code:
LET H$(V) = „UNBEKANNT“

sollte einen Fehler hervorrufen. Die Anführungszeichen sind einfach nur die doppelten oberen Anführungsstriche (Shift+2).
Code:
LET H$(V) = "UNBEKANNT"   ' so stimmt's

Ähnliches hast du mehrmals im Programm.
Wenn das Programm logische Fehler beinhaltet, kann ich dazu nichts sagen; dazu fehlen mir irgendwie die Entscheidungsregeln, wann welche Werte wie gesetzt werden. Wenn Laufzeitfehler auftreten, wäre es hilfreich, wenn du sie postest; dann sieht man mehr.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 03.08.2016, 17:09    Titel: Antworten mit Zitat

Hallo,

vielen Dank. Ich habe das jetzt nochmal überarbeitet.

Code:
100 REM -- V   EINER DER VERDAECHTIGEN 1 BIS 4
110 REM -- M    DER MOERDER, V AUS 1 BIS 4, 0 UNBEKANNT
120 REM -- H$   ARRAY DER HAARFARBEN
130 REM -- A$   ARRAY DER AEUSSEREN ERSCHEINUNG
140 REM -- Z$   ARRAY DER ZIMMERNUMMERN
150 REM
160 REM – 1 = COLONEL WOODLEY     2 = MR HOLMAN
170 REM – 3 = MR POPE     4 = SIR RAYMOND
180 REM
190 DIM V (1 to 4) as integer = {1, 2, 3, 4}
191 DIM M (1 to 4) as integer = {1, 2, 3, 4}
192 DIM H(4)As String = {"ROT", "SCHWARZ", "BRAUN", "GRAU","UNBEKANNT"}
193 DIM A(4)As String = {"RUBINRING", "GOLDUHR", "ZWICKER", "AERMEL","UNBEKANNT"}
194 DIM Z(4)As String = {"ZIMMER 10", "ZIMMER 12", "ZIMMER 14", "ZIMMER 16","UNBEKANNT"}
210 REM – UNTERSTELLEN, DASS NICHTS BEKANNT IST
220      LET M = 0
230       FOR V = 1 TO 4
240      LET H(V) = "UNBEKANNT"
250      LET A(V) = "UNBEKANNT"
260      LET Z(V) = "UNBEKANNT"
270      NEXT V
280 REM
290 REM – BEKANNTE HINWEISE ANGEBEN
300      LET Z(4) = "ZIMMER 10"
310       LET A(3) = "GOLDUHR"
320      LET A(2) = "RUBINRING"
330       LET Z(2) = "ZIMMER 12"
340 REM
350       LET V = 1
360 REM – VERBLEIBENDE HINWEISE WIEDERHOLT PRUEFEN
370       IF Z(V) <> "ZIMMER 14"    THEN 390
380          LET H(V) = "SCHWARZ"
390       IF A(4) = "UNBEKANNT"    THEN 420
400      IF A(4) = "ZWICKER"       THEN 420
410          LET A(1) = "ZWICKER"
420       IF A(1) = "UNBEKANNT"    THEN 450
430       IF A(1) = "ZWICKER"       THEN 450
440          LET A(4) = "ZWICKER"
450       IF A(V) <> "ZWICKER"       THEN 470
460          LET H(V) = "BRAUN"
470       IF A(V) <> "AERMEL"       THEN 490
480          LET H(V) = "ROT"
490       IF Z(V) <> "ZIMMER 16"    THEN 510
500          LET A(V) = "AERMEL"
510       IF Z(V) <> "ZIMMER 12"    THEN 530
520          LET H(V) = "GRAU"
530       IF A(V) <> "GOLDUHR"    THEN 550
540          LET Z(V) = "ZIMMER 14"
550       IF Z(V) <> "ZIMMER 10"    THEN 580
560       IF V = 1             THEN 580
570          LET Z(1) = "ZIMMER 16"
580       IF Z(V) <> "ZIMMER 16"    THEN 610
590       IF V = 1             THEN 610
600          LET Z(1) = "ZIMMER 10"
610       IF B(V) <> "BRAUN"       THEN 650
620       LET M = V
630 REM
640 REM – NAECHSTEN VERDAECHTIGEN PRUEFEN
650       IF V = 4    THEN 680
660       LET V = V + 1
670       GOTO 700
680       LET V = 1
690       GOTO 700
700       IF M = 0 THEN 370
710 REM
720 REM – ZEIGE NAMEN DES MOERDERS AN
730       IF M <> 1 THEN 750
740          PRINT "DER MOERDER IST COLONEL WOODLEY"
750       IF M <> 2 THEN 770
760          PRINT "DER MOERDER IST MR. HOLMAN"
770       IF M <> 3 THEN 790
780          PRINT "DER MOERDER IST MR. POPE"
790       IF M <> 4 THEN 810
800          PRINT "DER MOERDER IST SIR RAYMOND"
810       STOP
820 END
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RWK



Anmeldungsdatum: 04.07.2011
Beiträge: 44

BeitragVerfasst am: 03.08.2016, 21:55    Titel: Antworten mit Zitat

HeHe....Hallo, guten Abend,

eine schöne Abendbeschäftigung. durchgeknallt




Was soll das Programm denn machen... und warum.... und was ist die Vorgabe

und was soll denn in diesem speziellen Fall als Ergebnis herauskommen?

und was tuts denn bei Dir nicht ?

Fragen über Fragen grinsen

Grüße
Rainer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 04.08.2016, 08:34    Titel: Antworten mit Zitat

Hallo,

es gibt eine Geschichte, aus der bestimmte Informationen zu entnehmen sind. Und aus diesen soll dann in einem Programm bzw. dann in einem Flussdiagramm oder so der Mörder ermittelt werden. lächeln

LG
Maxi
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 04.08.2016, 09:00    Titel: Antworten mit Zitat

Stell mal als Sprache am Anfang des Quelltextes auf
Code:

#lang „fblite“

ein und Kommentiere die Zeilen 190 und 191 aus, diese Arrays verwendest Du ja nur als Variable.
Der Array Bezeichner in Zeile 610 ist falsch, da muss ein H() hin.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4212
Wohnort: ~/

BeitragVerfasst am: 04.08.2016, 09:41    Titel: Antworten mit Zitat

Sagt mal, schreibt ihr eure Quelltexte in Word oder OpenOffice? grinsen
Auch hier gilt
Code:
#lang "fblite"

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 04.08.2016, 10:32    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:

Sagt mal, schreibt ihr eure Quelltexte in Word oder OpenOffice?

Nein, aber (zumindest ich) in LibreOffice grinsen Hab ich ganz vergessen, danke für die Korrektur.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 856
Wohnort: Ruhrpott

BeitragVerfasst am: 04.08.2016, 11:18    Titel: Antworten mit Zitat

Hallo maxi!

Ohne das Programm jetzt näher analysiert zu haben: Wenn du -zusätzlich zu den vorherigen Tips- noch Zeile 610 in
Code:
610       IF H(V) <> "BRAUN"       THEN 650
und Zeile 810 in
Code:
810       Sleep
änderst, läuft es zumindest erst einmal und meldet:
    DER MOERDER IST SIR RAYMOND


Was ich noch nicht ganz verstanden habe: Hast du das Programm selber geschrieben, oder hast du es übernommen und versuchst jetzt herauszufinden, wie es funktioniert?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4212
Wohnort: ~/

BeitragVerfasst am: 04.08.2016, 12:22    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
    DER MOERDER IST SIR RAYMOND

Na toll, jetzt hast du alles verraten. weinen

Ich habe das so verstanden, dass das Programm mehr oder weniger so vorgegeben war, und die Aufgabe besteht jetzt darin, ein Flussdiagramm dazu zu erstellen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 04.08.2016, 12:47    Titel: Antworten mit Zitat

JUHU !!!! Es läuft lächeln

Tausend Dank für eure Hilfe happy

Das Programm war so vorgegeben. Ich soll jetzt mit einem Tool (ist noch auszuwählen) einmal ein Flussdiagramm erzeugen. Und dann noch ein Toll "suchen" mit dem ich genau diese Geschichte (Hinweise und Mörder finden) nachbilden kann mit visueller (grafischer) Programmierung, so dass es für Kinder genutzt werden kann. Ich hatte mir scratch angeschaut, aber mal sehen, ob es damit geht.
Aber jetzt habe ich schon mal den ersten Schritt - Dank eurer Hilfe - geschafft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 856
Wohnort: Ruhrpott

BeitragVerfasst am: 04.08.2016, 13:09    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Na toll, jetzt hast du alles verraten.
Keine Ahnung. Ich kenne ja weder die zugrundeliegende Geschichte noch weiß ich, ob sie korrekt umgesetzt wurde. Die Spannung bleibt also erhalten.

Zitat:
Ich habe das so verstanden, dass das Programm mehr oder weniger so vorgegeben war, und die Aufgabe besteht jetzt darin, ein Flussdiagramm dazu zu erstellen.
Au ha! mit den Augen rollen Beim Lesen des Programms bekomme ich irgendwie Hunger (du weisst schon: Spaghetti...). grinsen

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 04.08.2016, 13:15    Titel: Antworten mit Zitat

Zur Aufklärung lächeln
Dies waren die Hinweise aus der Geschichte:

Anhaltspunkte, die bekannte Faktoren festlegen:
1. Sir Raymond Jasper bewohnte Zimmer 10.
2. Mr. Pope trug eine goldene Taschenuhr.
3. Mr. Holman trug einen Rubinring.
4. Mr. Holman bewohnte Zimmer 12.
Verbleibende Hinweise:
5. Der Mann in Zimmer 14 hatte schwarze Haare.
6. Entweder Colonel Woodley oder Sir Raymond trugen einen Zwicker.
7. Der Mann mit dem Zwicker hatte braune Haare.
8. Der Mann mit zerfransten Ärmeln hatte rote Haare.
9. Der Mann in Zimmer 16 hatte zerfranste Ärmel.
10. Der Mann in Zimmer 12 hatte graue Haare.
11. Der Mann mit der goldenen Uhr bewohnte Zimmer 14.
12. Colonel Woodley bewohnte ein Eckzimmer.
13. Der Mörder hatte braune Haare.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 04.08.2016, 13:36    Titel: Antworten mit Zitat

Elor hat Folgendes geschrieben:
Nein, aber (zumindest ich) in LibreOffice grinsen Hab ich ganz vergessen, danke für die Korrektur.

Färbst du dann auch mangels eingebautem Syntax-Highlighting jedes Schlüsselwort von Hand passend ein? durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 856
Wohnort: Ruhrpott

BeitragVerfasst am: 04.08.2016, 13:37    Titel: Antworten mit Zitat

Dasselbe Programm, in eine ordentliche Struktur gebracht und mit "sprechenden" Variablennamen. So ist es wesentlich leichter zu lesen.
Code:

' – 1 = COLONEL WOODLEY     2 = MR HOLMAN
' – 3 = MR POPE     4 = SIR RAYMOND

Dim Haarfarbe(4)As String = {"ROT", "SCHWARZ", "BRAUN", "GRAU","UNBEKANNT"}
Dim AeussereErscheinung(4)As String = {"RUBINRING", "GOLDUHR", "ZWICKER", "AERMEL","UNBEKANNT"}
Dim Zimmernummer(4)As String = {"ZIMMER 10", "ZIMMER 12", "ZIMMER 14", "ZIMMER 16","UNBEKANNT"}
Dim As Integer Moerder, Verdaechtiger

'UNTERSTELLEN, DASS NICHTS BEKANNT IST
Moerder = 0
For Verdaechtiger = 1 To 4
   Haarfarbe(Verdaechtiger) = "UNBEKANNT"
   AeussereErscheinung(Verdaechtiger) = "UNBEKANNT"
   Zimmernummer(Verdaechtiger) = "UNBEKANNT"
Next Verdaechtiger

'BEKANNTE HINWEISE ANGEBEN
Zimmernummer(4)        = "ZIMMER 10"
AeussereErscheinung(3) = "GOLDUHR"
AeussereErscheinung(2) = "RUBINRING"
Zimmernummer(2)        = "ZIMMER 12"
Verdaechtiger = 1

'VERBLEIBENDE HINWEISE WIEDERHOLT PRUEFEN
Do
   'Der Mann in Zimmer 14 hatte schwarze Haare.
   If Zimmernummer(Verdaechtiger) = "ZIMMER 14"    Then
      Haarfarbe(Verdaechtiger) = "SCHWARZ"
   EndIf

   'Entweder Colonel Woodley oder Sir Raymond trugen einen Zwicker.
   If AeussereErscheinung(4) <> "UNBEKANNT" And _
      AeussereErscheinung(4) <> "ZWICKER"   Then
      AeussereErscheinung(1) = "ZWICKER"
   EndIf

   If AeussereErscheinung(1) <> "UNBEKANNT" And _
      AeussereErscheinung(1) <> "ZWICKER"   Then
      AeussereErscheinung(4) = "ZWICKER"
   EndIf

   'Der Mann mit dem Zwicker hatte braune Haare.
   If AeussereErscheinung(Verdaechtiger) = "ZWICKER" Then
      Haarfarbe(Verdaechtiger) = "BRAUN"
   EndIf

   'Der Mann mit zerfransten Ärmeln hatte rote Haare.
   If AeussereErscheinung(Verdaechtiger) = "AERMEL" Then
      Haarfarbe(Verdaechtiger) = "ROT"
   EndIf

   'Der Mann in Zimmer 16 hatte zerfranste Ärmel.
   If Zimmernummer(Verdaechtiger) = "ZIMMER 16" Then
      AeussereErscheinung(Verdaechtiger) = "AERMEL"
   EndIf

   'Der Mann in Zimmer 12 hatte graue Haare.
   If Zimmernummer(Verdaechtiger) = "ZIMMER 12" Then
      Haarfarbe(Verdaechtiger) = "GRAU"
   EndIf

   'Der Mann mit der goldenen Uhr bewohnte Zimmer 14.
   If AeussereErscheinung(Verdaechtiger) = "GOLDUHR" Then
      Zimmernummer(Verdaechtiger) = "ZIMMER 14"
   EndIf

   'Colonel Woodley bewohnte ein Eckzimmer.
   If Zimmernummer(Verdaechtiger) = "ZIMMER 10" And _
      Verdaechtiger <> 1                        Then
      Zimmernummer(1) = "ZIMMER 16"
   EndIf

   If Zimmernummer(Verdaechtiger) = "ZIMMER 16" And _
      Verdaechtiger <> 1                        Then
      Zimmernummer(1) = "ZIMMER 10"
   EndIf

   'Der Mörder hatte braune Haare.
   If Haarfarbe(Verdaechtiger) = "BRAUN" Then
      Moerder = Verdaechtiger
   EndIf

   'NAECHSTEN VERDAECHTIGEN PRUEFEN
   If Verdaechtiger = 4    Then
      Verdaechtiger = 1
   Else
      Verdaechtiger = Verdaechtiger + 1
   EndIf
Loop While Moerder = 0

'ZEIGE NAMEN DES MOERDERS AN
Select Case Moerder
   Case 1
      Print "DER MOERDER IST COLONEL WOODLEY"
   Case 2
      Print "DER MOERDER IST MR. HOLMAN"
   Case 3
      Print "DER MOERDER IST MR. POPE"
   Case 4
      Print "DER MOERDER IST SIR RAYMOND"
End Select

Sleep


Zur Lösung solcher Logikrätsel "per Hand" benutzt man als Hilfsmittel üblicherweise eine Matrixstruktur, bei der solange Kombinationsmöglichkeiten ausgeschlossen werden, bis nur noch eine übrigbleibt.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 05.08.2016, 14:33    Titel: Antworten mit Zitat

Vielen lieben Dank grindstone !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 856
Wohnort: Ruhrpott

BeitragVerfasst am: 05.08.2016, 15:23    Titel: Antworten mit Zitat

Gern geschehen lächeln

Es gäbe noch einige Details, die sich verbessern liessen, aber da ich befürchte, daß das für dich eher verwirrend als hilfreich wäre, habe ich es gelassen.

maxi hat Folgendes geschrieben:
Ich soll jetzt mit einem Tool (ist noch auszuwählen) einmal ein Flussdiagramm erzeugen.
Wie wäre es mit einem selbstgeschriebenen Tool in freeBasic?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 05.08.2016, 17:07    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Wie wäre es mit einem selbstgeschriebenen Tool in freeBasic?


Haha lächeln Da muss ich erst noch etwas länger üben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 856
Wohnort: Ruhrpott

BeitragVerfasst am: 06.08.2016, 15:28    Titel: Antworten mit Zitat

Ich habe ja nicht gesagt, daß DU das Tool schreiben sollst. zwinkern

Soll das Diagramm das ganze Programm darstellen oder nur das Rätsel?

Gruß
grindstone

EDIT:
Hier mal eine (noch sehr) rudimentäre Alphaversion, nur für einen ersten Eindruck:
Code:
Const pi As Double = Acos(0)*2

Enum
   oval = 1
   rechteck
   raute
End Enum

Type tPunkt
   x As Integer
   y As Integer
End Type

Type tDiagramm
   muster As UByte
   xpos As Integer
   ypos As Integer
   breite As Integer
   hoehe As Integer
   text As String
   farbe As ULong = RGBA(255,255,255,255)
   Declare Property oben As tPunkt
   Declare Property unten As tPunkt
   Declare Property rechts As tPunkt
   Declare Property links As tPunkt
   Declare Sub zeichnen
End Type

Property tDiagramm.oben As tPunkt
   tDiagramm.oben = Type<tPunkt>(xpos + breite / 2, ypos)
End Property

Property tDiagramm.unten As tPunkt
   tDiagramm.unten = Type<tPunkt>(xpos + breite / 2, ypos + hoehe)
End Property

Property tDiagramm.links As tPunkt
   tDiagramm.links = Type<tPunkt>(xpos, ypos + hoehe / 2)
End Property

Property tDiagramm.rechts As tPunkt
   tDiagramm.rechts = Type<tPunkt>(xpos + breite, ypos + hoehe / 2)
End Property

Sub tDiagramm.zeichnen
   Dim As Integer radius = hoehe / 2
   
   Select Case muster
      Case oval
         Line(xpos + radius, ypos)-(xpos + breite - radius, ypos), RGB(255,255,255)
         Line(xpos + radius, ypos + hoehe)-(xpos + breite - radius, ypos + hoehe), RGB(255,255,255)
         Circle (links.x + radius, links.y), radius, farbe, pi/2, pi/2*3
         Circle (rechts.x - radius, rechts.y), radius, farbe,  pi/2*3, pi/2
      Case rechteck
         Line(xpos, ypos)-(xpos + breite, ypos + hoehe), farbe, B
      Case raute
         Line(links.x, links.y)-(oben.x, oben.y), farbe
         Line(oben.x, oben.y)-(rechts.x, rechts.y), farbe
         Line(rechts.x, rechts.y)-(unten.x, unten.y), farbe
         Line(unten.x, unten.y)-(links.x, links.y), farbe
   End Select
   Draw String (oben.x - (Len(text) * 8 / 2),links.y - 4), text, farbe
End Sub

ReDim As tDiagramm diagramm(5)

Declare Sub pfeil(von As tPunkt, bis As tPunkt, xversatz As Integer = 0, yversatz As Integer = 0, farbe As ULong = RGBA(255,255,255,255))

ScreenRes 1000,1000,32

With diagramm(1)
   .muster = oval
   .xpos = 125
   .ypos = 50
   .breite = 100
   .hoehe = 20
   .text = "START"
   .zeichnen
End With

With diagramm(2)
   .muster = raute
   .xpos = 100
   .ypos = 100
   .breite = 150
   .hoehe = 50
   .text = "Zimmer 14?"
   .zeichnen
End With

pfeil(diagramm(1).unten, diagramm(2).oben)

With diagramm(3)
   .muster = rechteck
   .xpos = 100
   .ypos = 180
   .breite = 150
   .hoehe = 50
   .text = "Schwarze Haare"
   .zeichnen
End With

pfeil(diagramm(2).unten, diagramm(3).oben)

With diagramm(4)
   .muster = raute
   .xpos = 100
   .ypos = 260
   .breite = 150
   .hoehe = 50
   .text = "Zwicker?"
   .zeichnen
End With

pfeil(diagramm(3).unten, diagramm(4).oben)
pfeil(diagramm(2).rechts, Type<tPunkt>(diagramm(3).unten.x, diagramm(3).unten.y + 10), 20,0)

Sleep
End

Sub pfeil(von As tPunkt, bis As tPunkt, xversatz As Integer = 0, yversatz As Integer = 0, farbe As ULong = RGBA(255,255,255,255))
   Dim As tPunkt pvon, pbis
   If xversatz Then
      Line(von.x, von.y) - (von.x + xversatz, von.y), farbe
      Line(von.x + xversatz, von.y) - (von.x + xversatz, bis.y), farbe
      pvon = Type<tPunkt>(von.x + xversatz, bis.y)
      pbis = Type<tPunkt>(bis.x, bis.y)
   ElseIf yversatz Then
   
   Else
      pvon = von
      pbis = bis   
   EndIf
   
   Line(pvon.x, pvon.y) - (pbis.x, pbis.y), farbe
   If Abs(pvon.x - pbis.x) < 5 Then 'senkrecht
      If pbis.y > pvon.y Then 'von oben nach unten
         Line(pbis.x, pbis.y) - (pbis.x - 5, pbis.y - 5), farbe
         Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y - 5), farbe
      Else 'von unten nach oben
         Line(pbis.x, pbis.y) - (pbis.x - 5, pbis.y + 5), farbe
         Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y + 5), farbe
      EndIf
   ElseIf pvon.y = pbis.y Then 'waagerecht
      If pbis.x > pvon.x Then 'von links nach rechts
         Line(bis.x, bis.y) - (bis.x - 5, bis.y - 5), farbe
         Line(bis.x, bis.y) - (bis.x - 5, bis.y + 5), farbe
      Else 'von rechts nach links
         Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y - 5), farbe
         Line(pbis.x, pbis.y) - (pbis.x + 5, pbis.y + 5), farbe
      EndIf
   EndIf
End Sub

_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
maxi



Anmeldungsdatum: 03.08.2016
Beiträge: 9

BeitragVerfasst am: 07.08.2016, 11:58    Titel: Antworten mit Zitat

Beeindruckend lächeln

Es soll das ganze Programm abbilden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz