Seite 6 von 7
Verfasst: Freitag 1. Mai 2009, 11:56
von dynasty-warriors
@ dill !
wolltest du nicht eine lösung posten??
Verfasst: Freitag 1. Mai 2009, 12:02
von gkuhl
@Dill: So sieht das aus.
@dynasty-warriors: Wie du Schleifen benutzt, hast du sicherlich in der Schule gerlernt. Ansonsten kann man das auch
HIER nachlesen.
Verfasst: Freitag 1. Mai 2009, 12:09
von BlackJack
@dynasty-warriors: Vorab mal was zur Aufgabenstellung: Wie die Flaggen aussehen sollen, kann man nur raten, weil das Bild am Anfang nicht angezeigt wird. Dazu muss man auf der Moodle-Site angemeldet sein, von der Das Bild kommen sollte. Du bist von den Mitlesenden hier wahrscheinlich der Einzige, der weiss wie's aussieht.
Was sind denn die Unterschiede zwischen ``for`` und ``while`` und wann setzt man welchen Schleifentyp ein? Das solltest Du mittlerweile im Unterricht gelernt haben, oder Du kannst es durch eine Recherche im Netz herausfinden. Eine entsprechende Frage auf Deutsch formuliert und bei Google eingegeben erbrachte unter den ersten Fünf Treffern eine sehr gute Beschreibung in einem Buch über C#.
Verfasst: Freitag 1. Mai 2009, 12:21
von dynasty-warriors
also die zielflagge ist zu schwer, dann mach ich das einfache! nämlich das:
schwarz weiß!
1= schwarz
0=weiß
111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
so sollte es ungefähr aussehen!
die pixel= 50x80
also so was habe ich gemacht:
Code: Alles auswählen
print "P1" # P1 schreiben für Schwarzweißgrafik
anzahl_x = 20 # setze Anzahl der Spalten
anzahl_y = 10 # setze Anzahl der Zeilen
print anzahl_x,
print anzahl_y # Gib Zeilen und Spalten aus, wie in PBM-Dateien gefordert
lauf_x = 0 # Definiere Zaehlvariablen für Spalten
lauf_y = 0 # ... und Zeilen
while lauf_y < anzahl_y: # Schleife zum Schreiben der Zeilen
lauf_x = 0 # nach dem Schreiben einer Zeile lauf_x wieder auf 0 setzen
while lauf_x < anzahl_x: # Schleife zum Spalten schreiben
print "0", # 0 ohne Zeilenumbruch schreiben
lauf_x = lauf_x + 1 # Zaehler um 1 erhoehen
print # Zeilenumbruch schreiben, da nach einer schwarzen noch eine weiße Zeile kommen soll
lauf_x = 0 # Zaehlvariable wieder auf 0 setzen
while lauf_x < anzahl_x: # noch eine Zeile schreiben, diesmal mit schwarzen Pixeln
print "1", # 1 ohne Zeilenumbruch schreiben
lauf_x = lauf_x + 1 # Zaehler für Spalten um 1 erhöhen
print # Zeilenumbruch ausgeben
lauf_y = lauf_y + 2 # Da nun zwei Zeilen geschrieben wurden (eine weiße, eine schwarze)
# muss die Zaehlvariable fuer die Zeilen um ZWEI erhoeht werden.
das ergebnis ist
P1
20 10
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>>>
aber das will ich nicht, sondern das obere![/quote]
Verfasst: Freitag 1. Mai 2009, 12:43
von lunar
Ich bewundere aufrichtig eure Geduld.
Verfasst: Freitag 1. Mai 2009, 12:44
von Bernhard
dynasty-warriors hat geschrieben:
111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
Juhuu, Du hast es getan! Du hast die Flagge von Hand geschrieben! Dill wird stolz auf Dich sein. Und jetzt überleg, was Du da getan hast: Du hast erst viermal eine Reihe einsen geschrieben und dann was anderes gemacht. Jetzt mach ein Programm, dass viermal hintereinander eine Reihe von Einsen schreibt. Der Rest ergibt sich dann wie von selbst....
Gruß,
Bernhard
Verfasst: Freitag 1. Mai 2009, 12:45
von dynasty-warriors
ok ich versuch es mall ansatz weiße es jetzt gleich zu machen,und werde es gleich posten! könnt ihr mir dann weiterhelfen?
Verfasst: Freitag 1. Mai 2009, 12:48
von Dill
die spannung steigt ins unermessliche...
leider muss ich jetzt weg. =)
Verfasst: Freitag 1. Mai 2009, 12:49
von Bernhard
...wir heben Dir den Thread hier auf, dann kannst Du später nachlesen, ob er mit einer Schleife vier Zeilen hintereinander das gleiche ausgeben kann...
Verfasst: Freitag 1. Mai 2009, 12:55
von dynasty-warriors
Code: Alles auswählen
print "P1"
anzahl_x = 50
anzahl_y = 80
print anzahl_x,
print anzahl_y
ok es ist peinlich, bin nur bis hier hin gekommen!! also weiter weiß ich nicht mehr, aber vorhin irgendwelche schleifen getestet, aber das war alles nur schwachsinnn!
also welche schleifen und wie geht es weiter?
Verfasst: Freitag 1. Mai 2009, 12:59
von Bernhard
Ok, das ist doch schon mal was. Das beweist, dass die Behauptung, Du hättest das oben stehende Programm mit den while-Schleifen und den Laufvariablen lauf_x und lauf_y selbst gemacht, eine Lüge war.
-sorry, falsches Sprachniveau-
Du oben gesagt, Programm von Du. Nix stimmt. Hat anderer geprogrammiet. Du offensischtlisch nix selbst gemaht
Ich bin weg. Ciao!
Verfasst: Freitag 1. Mai 2009, 13:10
von BlackJack
So sieht's in Haskell aus:
Code: Alles auswählen
header w h = "P1\n" ++ show w ++ " " ++ show h
block w h c = replicate h $ replicate w c
body w h = concatMap (block w (h `div` 2)) "10"
bwFlag w h = header w h : body w h
main = putStrLn $ unlines $ bwFlag 50 80
Ähnlichkeiten mit der Python-Lösung mit den Iteratoren sind nicht ganz zufällig.
@dynasty-warriors: Es geht damit weiter, dass Du Dich darüber informierst, was es in Python für zwei Schleifenarten gibt, wie die funktionieren, und wann man welche Art einsetzt. Letzteres ist im Grunde unabhängig von der Programmiersprache.
Verfasst: Freitag 1. Mai 2009, 13:15
von numerix
gkuhl hat geschrieben:@dynasty-warriors: Wie du Schleifen benutzt, hast du sicherlich in der Schule gerlernt. Ansonsten kann man das auch
HIER nachlesen.
Oooooh, gkuhl, was erwartest du?
Nach eigener Aussge hat dyna-war doch erst ein halbes Jahr Python in der Schule. Wie soll er da Schleifen kennen?
Und: Du hast auf das Original-Tutorial verlinkt - das ist doch auf Englisch!!!!
Verfasst: Freitag 1. Mai 2009, 13:15
von dynasty-warriors
Verfasst: Freitag 1. Mai 2009, 13:22
von Leonidas
Haben wir schon eine C-Lösung?
Code: Alles auswählen
#include <stdio.h>
#define WIDTH 50
#define HEIGHT 80
int main(void)
{
int w, h;
char to_print = '1';
for (h = 0; h < HEIGHT; h++)
{
if (h == HEIGHT/2)
to_print = '0';
for (w = 0; w < WIDTH; w++)
putchar(to_print);
putchar('\n');
}
return 0;
}
Verfasst: Freitag 1. Mai 2009, 13:23
von Leonidas
dynasty-warriors hat geschrieben:meine frage war, wie ich weiter machen sollte!!! welche schleife wär empfehlenswert?
BlackJack hat dir doch gesagt, was man machen muss, um eine Antwort auf diese Frage zu bekommen
Verfasst: Freitag 1. Mai 2009, 13:26
von numerix
BlackJack, machst du noch eine Forth-Lösung? Das ist immer so nett anzusehen.
Wollte ich schon als Teenager lernen, ist leider bis heute nie was draus geworden ...
Verfasst: Freitag 1. Mai 2009, 13:56
von dynasty-warriors
Verfasst: Freitag 1. Mai 2009, 14:01
von Bernhard
BlackJack hat geschrieben:... Lag vielleicht auch daran, das sich dynasty-warriors zurück zog, nachdem mindestens eine Komplett-Lösung gepostet wurde. Mag nicht mal jemand eine Lösung posten, damit das nervige gebettel aufhört!?
Es ist aber auch gemein, wenn die Lehrer nach einem halben Jahr so schwere Aufgaben stellen und die Antwort vorher nicht richtig erklären. Dabei scheint die Sonne und der Lehrer genießt den ersten Mai.
Probier mal das hier, damit Ruhe rein kommt:
Code: Alles auswählen
#Programm beginnt hier
print "P1"
anzahl_x = 80
anzahl_y = 50
print anzahl_x,
print anzahl_y
while anzahl_x==80: # Aussere while-Schleife
print ("1"*74+"\n")*26,
while anzahl_y==50:
print ("0"*74+"\n")*26 #Innere while-Schleife
break
break
#Programm endet hier
Ach ja, und falls der Lehrer merkt, dass das Programm abgeschrieben und nicht selbst geschrieben ist, dann druckt Dir vorher lieber diesen Thread aus. Damit kannst Du ihm immerhin beweisen, dass Du nicht zu faul warst und Dir viel Mühe gegeben hast, eine Lösung zu präsentieren.
Verfasst: Freitag 1. Mai 2009, 14:07
von dynasty-warriors
lol! irgendwie habe ich das gefühl, wenn einer im forum beleidigt bzw. fertig gemacht wurde, dann erst die lösung bekommen wird!
p.s. ich konnte mir auswählen, welche flagge ich mache, und ich habe das schachbrett gemacht, und zwar komplett und richtig
und @ bernhard vielen dank, aber ich kann es nicht abgeben, da ich so was noch nicht gelernt habe!
Code: Alles auswählen
print ("1"*74+"\n")*26,
while anzahl_y==50:
print ("0"*74+"\n")*26 #Innere while-Schleife
break
break
[/quote]