Frage zu C Einstieg

Status
Für weitere Antworten geschlossen.
Code:
#include <stdio.h>

int main (void)
{
    int z = 4;        // Maximale Anzahl 0 pro Zeile
      
    for (int i = 0; i < z; i++) {
        for (int x = 0; x <= i; x++) {
        printf("0");
        }
    printf("\n");
    }
  
    for (int i = z-1; i > 0; i--) {
        for (int x = i; x > 0; x--) {
        printf("0");
        }
    printf("\n");
    }
  
    return 0;
}

Das ist jetzt die ganze Lösung für

0
00
000
0000
000
00
0

Wird richtig ausgegeben.
Hab ich das jetzt unnötig umständlich gemach mit dem zweiten Satz innere/äußere Schleife? Hätte man das auch in die erste integrieren können?
 
Falsch ist es nicht, wenn rauskommt, was soll.
Unnötig umständlich, ja würde ich sagen.

Wie sollte es aussehen, wenn du z.B. 11 Zeilen hättest? Sollte es dann auch immer bis max 4 gehen? Sollte es dann bis 6 gehen und dann wieder zurück?

Von der Frage würde ich die Antwort abhängig machen, wie eine bessere Lösung aussehen könnte. Ich persönlich mag ja den Symmetrie-Ansatz, weil dann alles eben von genau einem "Parameter" abhängt: Der Anzahl der Zeilen. Den hast du ja auch gewählt.

Dafür könnte man sich die Frage stellen: Wie lange muss ich denn die Nullen "hochzählen" (also so viele Nullen nehmen wie Zeilen), und wann muss ich wieder runterzählen?
 
  • Gefällt mir
Reaktionen: madmax2010
Bin froh dass ichs irgendwie hinbekommen habe, alle anderen Ansätze mit Symmetrie und Modulo übersteigen meine Auffassungsgabe gerade bzw bin ich noch nicht hinter gestiegen
 
Naja mit Symmetrie meine ich:
Egal wie viele Zeilen du nimmst, die längste ist in der Mitte.

Es kann auch durchaus sein, dass der Aufgabensteller die Lösung genau so "wollte".

Mit Modulo hätte ich auch nicht gearbeitet, dafür gab es für mich keinerlei Grund.
 
andy_0 schrieb:
Der TE muss alle x Schleifendurchläufe seine Ausgabe ändern. Mit dem Operator kann er feststellen, in welchem "Durchlauftyp" er sich befindet, egal wie viele Durchläufe er iteriert.
ich hab es noch nicht verstanden, was soll modulo machen bei sowas trivialen wie "beginne bei 1 und schreibe in jede Zeile eine 0 mehr in die Zeile (resp. genauso viele Nullen wie die Zeilennummer)" - zeig mal biite den Pseudo Code hier, was machst du da so mit dem modulo Operator?
 
Das ist nichtmal die Aufgabe. Es war nur

00
00
00
00

gefordert. Das mit dem aufsteigend, absteigend wollte ich für mich verstanden haben ^^
 
  • Gefällt mir
Reaktionen: tollertyp
@abcddcba: Er meint, dass es vielleicht so aussehen könnte
0
00
000
0000
000
00
0
00
000
0000
000
00
0

Aber: Alleine mit Modulo kommt man da auch nicht weit und ich wüsste nicht mal, ob ich es dafür verwenden würde.

Tatsächlich gehe ich eher davon aus, dass er gedacht hatte, dass man mit dem Modulo quasi die Richtung umkehren kann, und dann durch meine Nachfrage gemerkt hat, dass es gar nicht funktionieren würde.
 
Seine Aussage ist, dass sich die Anzahl an Zeichen eben ändert und nicht konstant bleibt.

Mr tollertyp, Name offenbar gänzlich korrekt, hat ja auch schon festgestellt, dass es anders geht. Es geht aber auch in seinem Beispiel mit einem Modulo, wenn man am Anfang weiß, was die maximale Anzahl von Zeilen sind. Für seine Symmetrie braucht er die Anzahl aber auch.

Aber whatever.

@ TE
Ahh okay. Das klang anders. Einfach immer das selbe ausgeben ist ja trivial.
 
Da es eine Aufgabe von dir war, hier die Richtung, in die ich es machen würde, habe es aber nicht getestet:
Code:
#include <stdio.h>
int main (void)
{
    int z = 4;        // Maximale Anzahl an "0" pro Zeile
    int s = 0;
 
    for (int i = 0; i < 2*z-1; i++) {
        for (int x = 0; x <= s; x++) {
            printf("0");
        }
        printf("\n");
        if (i < z) {
            s++;
        } else {
            s--;
        }
    }
 
    return 0;
}
---
Edit: Muss wohl 2*z-1 sein.
---

Übrigens ist der Kommentar "Maximale Anzahl 0 pro Zeile" unglücklich, so als kleines Feedback :-)

@andy_0: Dann zeig doch dein Modulo... wenn du ohne ihn nachts nicht schlafen kannst. Aber bitte so, dass es auch einen Mehrwert hat.

andy_0 schrieb:
@ TE
Ahh okay. Das klang anders. Einfach immer das selbe ausgeben ist ja trivial.
Hä?
Also es ging von Anfang an darum, 0en auszugeben - nicht mehr, und nicht weniger.
 
Zuletzt bearbeitet:
Ensinger schrieb:
Hallo, ich hab angefangen Informatik zu studieren.
Info 1 läuft bei uns über C.

Du lernst also erst jetzt Programmieren, gleich mit C als erste Programmiersprache?

Das ist so, als würde man mit einem Kind, das gerade Sprechen lernt, gleich noch Lesen und Schreiben üben, aber in Hebräisch und Altgriechisch, weil das die Sprache ist, die man fürs Lesen der biblischen Handschriften braucht. Kann man machen, aber Deutsch, dann eine andere Fremdsprache, dann eine tote Sprache wie Latein sind trotzdem sinnvollere Sprungbretter, bevor man sich voll ins Theologiestudium stürzt.

Wer nie eine Batch-Datei, ein Python-Script oder ein Excel-Makro programmiert hat, wird an C verzweifeln, spätestens wenn es an die Speicherverwaltung geht.
 
Wechsler schrieb:
wird an C verzweifeln wachsen
Man muss halt richtig lernen, wie bei allen anderen Dingen auch. Wer nicht versteht was das was er da schreibt genau macht bzw. machen soll, Fehlermeldungen nicht richtig liest oder Code / Lösungen nur einfach stumpf übernimmt, wird auch mit Python oder Batch nicht weiter kommen.

Mit Python o.ä. ist es natürlich einfacher, weil es viele Fallen nicht gibt und vor allem jetzt mit Python 3.11 auch dort die Fehlermeldungen nochmal besser werden. Ansonsten benötigt man aber doch die gleichen grundlegenden Fähigkeiten.
 
Mache Wirtschaftsinformatik

Wir haben
Info 1 - Rechnerarchitektur, Zahlencodierung und C
Info 2 - Java
Datenbanksysteme 1 - ER-Modelle, SQL usw

Als Wahlfach hab ich dieses Semester noch Data-Analysis mit Python
Das wird eigentlich für BWLer angeboten, also nur die grundlegenden Python Funktionen
 
Ja, liest sich erstmal recht normal, Informatik Basics.

Data Analysis wird eventuell auch mit Orange gemacht und Python ist dann eher dort im kleineren Rahmen eingebettet.

Übrigens, wenn du so wie heute die Lösung selbstständig erarbeitest bzw. man erkennt, dass du auf die Lösung kommst und nicht "Gib Lösung" machst, dann kannst du hier auch weiterhin fragen, soweit ich weiß.
 
@joshim Und was ist jetzt dein Punkt hier für den Thread?
 
  • Gefällt mir
Reaktionen: tollertyp
DaysShadow schrieb:
Man muss halt richtig lernen, wie bei allen anderen Dingen auch. Wer nicht versteht was das was er da schreibt genau macht bzw. machen soll, Fehlermeldungen nicht richtig liest oder Code / Lösungen nur einfach stumpf übernimmt, wird auch mit Python oder Batch nicht weiter kommen.
Lernen muß man schon, aber auch in der Fahrschule gibt man dem Anfänger nicht gleich einen LKW-Anhänger für den CE-Führerschein zum Einparken, sondern fängt erstmal ganz klein an, mit ein paar Tonnen weniger.

DaysShadow schrieb:
Ansonsten benötigt man aber doch die gleichen grundlegenden Fähigkeiten.
Das Niveau der Übungsaufgaben ist Batch-Programmierung oder Shellscript. Also Fahrradfahren. Welcher Tutor gibt denn solche Aufgaben in einer syntaktisch hochkomplexen Sprache für Systemprogrammierung?
 
Wechsler schrieb:
Welcher Tutor gibt denn solche Aufgaben in einer syntaktisch hochkomplexen Sprache für Systemprogrammierung?
Ein Dozent der „Info 1 - Rechnerarchitektur, Zahlencodierung und C“ lehrt, ob’s dir passt oder nicht.

Bist du an C im Grundstudium verzweifelt und hast jetzt ein Trauma oder was ist das Problem? C oder Sprache XYZ ist doch hier gar nicht das Thema gewesen.
 
  • Gefällt mir
Reaktionen: tollertyp
Zu meinen Zeiten konnte man bereits programmieren, wenn man ein Informatikstudium begonnen hat. Der Rest wurde direkt ausgesiebt, bis <25 % übrig waren. Mit Oberstufen-Programmierübungen hat sich niemand an einer Hochschule beschäftigt. Google war noch ein Stanford-Forschungprojekt , also mußte man es richtig können.
 
Wechsler schrieb:
Gab‘s „zu deinen Zeiten“ in Gesprächen, analog in Person versteht sich, gute alte Zeit, auch immer Leute die komplett unsinnig vom eigentlichen Thema abgekommen sind?
 
  • Gefällt mir
Reaktionen: tollertyp
@Wechsler:
Ich hätte gewettet, dass man zu deiner Zeit Informatik noch gar nicht hatte studieren können und dass du dich eigentlich viel lieber noch in Newsgroups unterhälst. Ob man es glaubt oder nicht, Informatik ist nicht Programmieren, und Progammieren ist nicht Informatik. Programmieren ist ein Teilaspekt davon. Und ich behaupte, das wusste man sogar schon zu deiner Zeit.

Und warum haben es damals die studiert, die es "konnten"? Weil sie es konnten. Damals war es eher "Nische" (nicht wertend gemeint, aber Leute, die sich mit so etwas beschäftigt hatten, waren nicht unbedingt die sozial anerkanntesten). Heute sieht das ganz anders aus.
Man könnte sogar abwertend sagen: Sie haben den Weg des geringsten Widerstands gewählt. So ist es bei mir auch. Ich hätte mich bei einem anderen Studiengang sicher mehr reinhängen müssen.

Aber ja, es ist verwerflich etwas zu lernen, was keine Leidenschaft ist. Ich meine gut, wie soll etwas eine Leidenschaft werden, wenn man es nicht lernt? Aber wir schweifen ab.

Ich finde es zwar schön, dass ich mein Hobby zum Beruf gemacht habe, und den Beruf auch deshalb gerne ausübe, gleichzeitig habe ich aber auch ein Hobby mehr oder weniger verloren dadurch. Und kenne andere, denen es ähnlich geht. Jemand sagte mal zu mir "Früher war Software-Entwicklung für mich eine Berufung, heute ist es halt noch ein Beruf". Ich honoriere im Übrigen jeden, der einen Beruf ausübt, den er nicht wirklich gerne macht - mir würde das sehr schwer fallen.

Btw... C und synatkisch hochkomplex... ah ja...
Und um beim Autovergleich zu bleiben: Wenn du fahren lernen willst, beschäftigst du dich auch nicht, was in dem hochkomplexen Fahrzeug so alles passiert, du beschäftigst dich halt mit den Dingen, die für dich am Anfang relevant sind... Gaspedal, Bremse, Lenkung, Blinker, Schaltung, Licht, ...

So, nun genug OT von mir.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben