Zum Inhalt springen

probleme mit for schleife


voldemort

Empfohlene Beiträge

hallo zusammen,

wir haben gestern im unterricht angefangen mit for schleifen in c zu programmieren. einige übungen mit berechnungen waren in so weit kein problem. nun haben wir für zu hause noch aufgaben aufbekommen bei denen ich nun nicht wirklich weiter weiß.

es gibt zwei aufgaben in denen wir folgende muster am bildschirm ausgeben sollen

x

xx

xxx

xxxx

xxxxx

xxxxxx

xxxxxxx

xxxxxxxx

x

xx

xxxx

xxxxxx

xxxxxxxxx

xxxxxxxxxxx

ich hätte bitte nun gerne keine kompletten codes, sondern tipps zum lösungsweg. ;) das problem hab ich aber nur damit was ich in der for-schleife eingeben soll. vielleicht denke ich einfach nur zu kompliziert und die lösung ist einfach.

ein danke im vorraus

voldemort

Link zu diesem Kommentar
Auf anderen Seiten teilen

vielen dank für die antwort. ich konnte nun nachvollziehen was du meinst, aber weiß nun nicht wie ich das umsetzen soll.

ich muss es ja so programmieren das das programm mit einem x beginnt und den rest ja durch berechnung und schleife bis zu einem gewissen punkt bringt.

zur veranschaulichung mal eine übung die wir im unterricht programmiert haben:

int j;

j = 1;

for (i=0; j<=550; i=i+1 ,j=i+j)

{

printf ("%d ",j);

}

damit wurde der zahlenwert

1

2 (1+1)

4 (2+2)

7 (4+3)

11 (7+4) ausgegeben.

um ein x hinbekommen müsste ich ja nun statt int char benutzen,oder?

oder muss ich hier nun doch irgendwie mit beides programmieren,da ich bzw die schleife die anzahl der x'e +1 pro zeile berechnen muss

voldemort

Link zu diesem Kommentar
Auf anderen Seiten teilen

was bedeutet verschachteln und macht das dann hier sinn?

wie ihr bestimmt merkt bin ich anfänger und befinde mich grad im ersten semester. also alles neuland für mich :)

ich bin nun mal so weit

char a, b;

a='x' , b=1;

for(a='x';b<=???;......);

anregungen?

Bearbeitet von voldemort
Link zu diesem Kommentar
Auf anderen Seiten teilen

wie ihr bestimmt merkt bin ich anfänger und befinde mich grad im ersten semester.

Da Du studierst, solltest Du schon etwas mehr können, als nur eine For-Schleife. Von Dir wird in der Aufgabe verlangt, dass Du einen Transfer leisten sollst. Im Grunde habe ich Dir schon einen fast fertigen Algorithmus geliefert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also so weit bin ich schon mal

char a, b, c;

a= 'X';

b= 'X';

c= 'X';

for (a='X';b>='X'; b=c+a)

{

printf ("%c"\n,B);

}

es wird mir ein X angezeigt. was müsste nun unter "b >="stehen damit mir XXXXXXXXX als letzte zeile angezeigt wird. ich hab es nun mal versucht mit 'x''x''X''X''X''X'' und 'XXXXX'

hat jemand tipps?

Link zu diesem Kommentar
Auf anderen Seiten teilen

den artikel über for-schleifen hab ich grad nochmal durchgelesen, aber den unterschied zwischen arithmetischen operationen und string- bzw char-operationen kenn ich (noch) nicht. muss ich mich mal auf die suche machen.

aber ich glaube der char befehl ist eh komplett fehll am platz da ich ja rechnen möchte. da eher doch int. ich dachte ich könnte die x'e im for befehl wiederholen, aber das ist ja wohl ein böser fehler, da man das ja im eigentlichen programm macht.

richtig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

aber ich glaube der char befehl ist eh komplett fehll am platz da ich ja rechnen möchte. da eher doch int. ich dachte ich könnte die x'e im for befehl wiederholen, aber das ist ja wohl ein böser fehler, da man das ja im eigentlichen programm macht.

Du kommst auf den richtigen Weg. For-Schleifen werden auch "Zählschleifen" genannt und dann lies doch nochmal mein erstes Posting (#2) und das erste von Myschkin (#4)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, ich misch mich hier auch mal ein. Musste auch kurz überlegen, wie sowas ging, hatten das glaub aber auch schonmal und es fiel mir deshalb schnell ein. Was ich dir sage, basiert auf c++-Wissen, deshalb kann sein, dass kleinigkeiten anders sind, ist aber hauptsächlich nur die Syntax.

Du musst mindestens 2 for-Schleifen verschachteln, das bedeutet, du rufst in der einen Schleife die andere auf.


for(...;...;...)

{


for(...;...;...)

{



}

}

Damit kannst du jetzt 2 Aktionen so oft hintereinander ausführen, wie du sie brauchst. In deinem Fall wäre das mit der einen Schleife die Zeilen, mit der anderen Schleife die Zeichen auszufüren, um das muster zu bekommen, musst du halt mit Variablen arbeiten, die du hochzählst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hallo und danke,

mit der verschachtelten for-schleife bin ich grad am experimentieren.

das scheint ne tolle aufgabe zu sein, weil man uns nicht gesagt hatte wie man nun die zeilen angibt.

ich bin in der lage ein x, oder 8 x in einer reihe anzugeben bring es aber nicht fertig das er mir mein muster errechnet.

hier mein jetziger code:

int a,b;

for (a=1;a<=8; a=a+1)

{

for (b=0;b<=a;b=a+B);

}

{

printf ("X");

}

printf ("\n");

sind nun beide schleifen schrott, oder ist eine ok?

wieso muss ich nun hinter der zweiten for schleife ein semik. setzen? ohne startet das programm nicht

grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

int a,b;

for (a=1;a<=8; a=a+1)

{

for (b=0;b<=a;b=a+;

}


{

printf ("X");

}

printf ("\n");[/code]




das is net wirklich richtig. 



[code] for (a=1;a<=8; a=a+1) { for (b=0;b<=a;b=a+B) { printf ("X"); } printf ("\n"); }

das was du mit dem semikoln meinst ist weil du es falsch verschachtelt hast. ein Semikolon beendet immer eine anweisung deshalb geht es mit.

Ein Tipp von mir. Gewöhn dir am besten von anfang an einen sauberen Quellcode an. Das heist nicht Bei Schleifen alles gerade untereinander Sondern mit z.b. Tab´s zu arbeiten. Hilft später ungemein und umso früher man damit anfängt umso einfacher ist es.

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke, werde versuchen deinen rat zukünftig folge zu leisten ;)

nachdem das semikolon weg ist hab ich nun 8 reihen und in jede reihe sind zwei x, aber das habt ihr wohl schon anhand des codes erahnt :)

was mich nun interessiert: wie und woher weiß ich in welcher schleife ich

zeile und anzahl mache?

for (initialisierung;logische abfrage;zähler erhöhen bzw erniedrigen)

über google hab ich nun leider nichts erklärendes darüber gefunden

Link zu diesem Kommentar
Auf anderen Seiten teilen

so, ich glaube es ist vollbracht


int a, b;
for (a=1;a<=8; a=a+1)
{
for (b=1;b<=a;b=1+
{
printf ("X");
}
printf ("\n");
}
[/PHP]

nur leider hab ich nun den kompletten überblick verloren was ich da gemacht habe und warum es so funktioniert.

kann mir das evtl einer bitte so erklären das ich es verstehe?

Link zu diesem Kommentar
Auf anderen Seiten teilen

also was ich als erstes sehe, ist, dass du deine geschweiften Klammern nicht ganz korrekt gesetzt hast. Sollte eher so aussehen.


int a,b;

for (a=1;a<=8; a=a+1)

{

for (b=0;b<=a;b=a+;

{



printf ("X");

}

printf ("\n");

}

[/code]

Kann natürlich auch sein, dass du dich verschrieben hast, falls dus abgetippt hast.

Der Grund dafür, dass du nicht das Muster hin bekommst, liegt an deinen Parametern:

1. solltest du in der inneren Schleife entweder b=1 setzen oder b<<a als zweiten Eintrag

2. musst du b unabhängig von a hochzählen, denn, nehmen wir an, a=5, hast du im

ersten durchlauf b=0, dann wird a Addiert, also hast du b=5, er macht noch einen

Stern und steigt dann aus, weil dann b=10 wird und 10>5 ist.

EDIT:

war wohl etwas langsam, naja, hast noch ne andere Erklärung ++ bedeutet um 1 hochzählen.

Bearbeitet von oxygen
Link zu diesem Kommentar
Auf anderen Seiten teilen

was bedeutet denn das unsigned int? [...]

hast du nun mit absicht ein paar werte verändert und warum steht bei dir

dann ++zeile bzw ++zeichen?

Es bringt hier nicht, wenn Du wenn man Dir jeden Befehl sprichwörtlich auseinander nehmen muss. Du solltest Dir entsprechende C/C++ Lektüre besorgen und parallel zum Unterricht verwenden. Du musst eben einmal überlegen was eine Schleife macht und was passiert, wenn man diese schachtelt.

Dein Problem als C++ Code:

#include <iostream>


int main ( int argc, char *argv[] ) {


    for (unsigned int pyramiden=0; pyramiden < 2; ++pyramiden) {


        for (unsigned int zeile=0; zeile < 8; ++zeile) {


            for (unsigned int zeichen=0; zeichen < zeile+1; ++zeichen)

                std::cout << "X";


            std::cout << std::endl;

        }


        std::cout << std::endl;

    }


    return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich weiß ja nun nicht ob das was von bedeutung hat, aber wir sollen erst mal nur mit c programmieren. später dann gehen wir erst ins c++. vielleicht kommen hier nun ein paar sachen durcheinander.

auf die idee mit den lektüren bin ich auch schon gekommen und hatte mir gestern zwei bestellt.

nur das problem ist,daß wir mit dem programmieren sollen was wir kennengelernt haben und deswegen bin ich hier und da mit neuen begriffen wahrscheinllich ein bisschen überfordert, aber vielleicht kann es auch sein das sie aus dem c++ bereich kommen. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

nur das problem ist,daß wir mit dem programmieren sollen was wir kennengelernt haben und deswegen bin ich hier und da mit neuen begriffen wahrscheinllich ein bisschen überfordert, aber vielleicht kann es auch sein das sie aus dem c++ bereich kommen. ;)

weder "unsigned" noch der "++" Operator sind C++. Wobei "std::" schon C++ ist. Aber es sollte kein Problem sein, die Ausgabe auch nach C zu portieren

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...