Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
01.02.15, 01:40
|
#1
|
Anfänger
Registriert seit: Oct 2010
Beiträge: 10
Bedankt: 3
|
C Programmieren
Hallo myGully-Community,
ich hoffe unter euch gibt es paar Leute mit C Kenntnissen.
Ich brauche leider Hilfe und zwar bei Folgender Aufgabe.
Skript:
for(a[1] = 0, i = 2; i <= MAX; i++) a[i] = 1;
for(i = 2; i<=MAX/2; i++)
for(j = 2; j <= MAX/i; j++)
a[i*j] = 0;
Aufgabe:
Geben Sie alle mit dem obigen Codestück berechneten a[k] für 1 <= k <= 30 an.
Meine Frage/n:
Was zur Hölle ist MAX?
Habt Ihr eine Idee zur Lösung oder sogar die Lösung?
Vermutungen:
Das Programm ist zur Berechnung von Primzahlen.
p.s. Mehr Angaben habe ich nicht, keine Deklarationen von i, j, a. Nur mehr Aufgaben, wie z.B. Entwurf eines Flussdiagramms.
Ich würde mich über Ideen, die Lösung MEGA freuen!
MFG
Ich
Edit: Korrektur des Skripts
|
|
|
01.02.15, 12:15
|
#2
|
You just lost the Game
Registriert seit: Dec 2009
Ort: Zum Glück nicht in Bayern
Beiträge: 188
Bedankt: 147
|
Ich habe keine Ahnung von C, aber an sich ist der Code logisch. Bis auf die erste Zeile, da bin ich mit ziemlich sicher, dass es a[i]=1 heißen müsste, denn es macht keinen Sinn die gleiche Variable a[1] 30 mal auf eins zu setzen. (Und statt i - 2, was keinen sinn macht, müsste da i = 2stehen.
Eine Variable, die angibt bis zu welcher Zahl gesucht wird. In deinem Fall wäre MAX=30, da bis 30 gesucht wird.
Zitat:
Habt Ihr eine Idee zur Lösung oder sogar die Lösung?
|
Du hast aber verstanden, was der Code tut, oder?
Er beginnt zu Multiplizieren: 2x2, 2x3, 2x4... Und das Ergebnis ist keine Primzahl und wird mit "0" markiert. Dann fährt er mit 3x2, 3x3, 3x4 und so weiter. (Niemals 1xY weil das kein Vielfaches ist.)
Jedes Element a[i] mit 1 < i < 31 bei dem i eine Primzahl ist, ist 1, der Rest 0.
Und was a[1] ist, darfst du dir selber aus dem Code ablesen.
__________________
Weil es soviel Negativität in der Welt gibt: Ich hoffe, dass jeder der das hier liest einen absolut wundervollen Tag hat!
|
|
|
01.02.15, 14:27
|
#3
|
Erfahrener Newbie
Registriert seit: Nov 2012
Beiträge: 131
Bedankt: 46
|
MAX ist eine Konstante.
|
|
|
01.02.15, 15:49
|
#4
|
Anfänger
Registriert seit: Oct 2010
Beiträge: 10
Bedankt: 3
|
Zitat:
Zitat von Teconas
Bis auf die erste Zeile, da bin ich mit ziemlich sicher, dass es a[i]=1 heißen müsste, denn es macht keinen Sinn die gleiche Variable a[1] 30 mal auf eins zu setzen. (Und statt i - 2, was keinen sinn macht, müsste da i = 2 stehen.
|
Mit i - 2 hast du recht, da habe ich mich irgendwie vertippt. Es müsste wirklich i = 2 heißen. a[1] = 0 steht leider wirklich in der Aufgaben Stellung(Probeklausur des WS 08/09 und in meinen Übungen).
Deine Korrektur erscheint mir aber logischer.
Zitat:
Zitat von Teconas
Du hast aber verstanden, was der Code tut, oder?
Er beginnt zu Multiplizieren: 2x2, 2x3, 2x4... Und das Ergebnis ist keine Primzahl und wird mit "0" markiert. Dann fährt er mit 3x2, 3x3, 3x4 und so weiter. (Niemals 1xY weil das kein Vielfaches ist.)
|
Nein ich hatte es nicht verstanden, deswegen auch meine Fragen.
Mich hat die Variable k und MAX die ganze Zeit verwirrt. Wenn ich aber das k (was auch logischer erscheint) zu i "mache" und das MAX mein Maximum ist, sehe ich die Logik dahinter.
Somit Danke, hast mir sehr geholfen
|
|
|
01.02.15, 16:32
|
#5
|
You just lost the Game
Registriert seit: Dec 2009
Ort: Zum Glück nicht in Bayern
Beiträge: 188
Bedankt: 147
|
Okay, da auf k und MAX deine Frage lag, erkläre ich die nochmal, auch wenn du es vermutlich schon verstanden hast.
Zitat:
Geben Sie alle mit dem obigen Codestück berechneten a[k] für 1 <= k <= 30 an.
|
k ist hier keine Programmvariable. Es ist Mathematisch üblich, ganze Zahlen ohne speziellen Wert einfach als n oder k zu bezeichen. Dieser Satz sagt einfach, dass du a[1 bis 30] berechnen sollst, und hat dem Code gar nichts zu tun.
Wenn du den Programmcode verstanden hast, wirst du bemerken, dass der tatsächliche Wert von MAX irrelavent ist, solange er groß genug ist. Eine Schleife braucht einfach immer eine Abbruchbedingung, das Ergebnis wäre aber identisch, wenn das ganze ewig weiter laufen würde.
Zitat:
a[1] = 0 steht leider wirklich in der Aufgaben Stellung
|
Dann funktioniert der ganze Code nicht. a[i]=1 würde alle Einträge auf 1 setzen, und die Schleifen setzen a[i] wieder auf 0 wenn i keine Primzahl ist. Wenn das wirklich a[1]=1 stehen würde, würde das ganze Programm nicht funktionieren, da kein a[k] 1 wäre. Ich kenne mich mit C nicht aus, aber es kann sein, dass für a[Primzahl] dann gar kein Wert existiert.
Entweder es ist ein Druckfehler, oder ein Denkfehler, aber damit das Programm funktioniert muss es a[i]=1 heißen.
[I]
EDIT: Ich sehe gerade du meintest das andere. In der ersten Zeile steht einmal a[1]=0, das ist richtig, und am Ende einmal a[1]=1. Das muss a =1 heißen.
__________________
Weil es soviel Negativität in der Welt gibt: Ich hoffe, dass jeder der das hier liest einen absolut wundervollen Tag hat!
|
|
|
Folgendes Mitglied bedankte sich bei Teconas:
|
|
02.02.15, 14:50
|
#6
|
Anfänger
Registriert seit: Oct 2010
Beiträge: 10
Bedankt: 3
|
So konnte gestern irgendwie nichts Posten.
Ja du hast wieder recht, habe das skript(s.o.) bearbeitet und eine Lösung entworfen.
|
|
|
03.02.15, 19:24
|
#7
|
Student der Informatik
Registriert seit: Jul 2010
Ort: NRW nähe Münster ;)
Beiträge: 356
Bedankt: 261
|
Na auch am Donnerstag die Klausur bei Weik
Das Ergebnis ist soweit richtig, dass das Programm Primzahlen heraussucht.Das Flussdiagramm sieht auch gut aus.
Jedoch ist alles an dem S***** soweit richtig.
|
|
|
03.02.15, 23:10
|
#8
|
Anfänger
Registriert seit: Oct 2010
Beiträge: 10
Bedankt: 3
|
Schön, dass ich richtig liege.
Du hast recht, dass Skript ist richtig, nur ich Depp kann nicht mal abschreiben. Hab nur deswegen zu viel zeit verschwendet.
Zitat:
Zitat von Matze500
Na auch am Donnerstag die Klausur bei Weik
|
p.s. Viel Glück und bis Donnerstag
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
().
|