Problem mit C Programmierung



  • hi

    Da habe ich ein guets C Online Book das dir den vollen umfang von C zeigt.
    Du kannst es sogar downloaden.

    http://openbook.galileocomputing.de/c_von_a_bis_z/

    Download:
    http://download.galileo-press.de/openbook/c_von_a_bis_z/galileocomputing_c_von_a_bis_z.zip

    mfg lb



  • hi

    @:_matze

    Davon abgesehen, das ich am essen bin und Blind schreibe, ist es doch ganz gut finde ich. 😃
    Ich glaube für dass reicht es.

    mfg



  • du meinst wohl lernen.

    und du scheinst das problem auch kein stück verstanden zu haben.
    wenn die variable n mit dem wert 3 angegeben wird soll dieses muster wie oben angezeigt entstehen.
    wenn der wert 4 angegeben wird soll das muster zum bsp so aussehen

    ___#
    __###
    _#####
    #######
    _#####
    __###
    ___#

    als lösungsvorlage wurde uns gesagt, solle man doch eine for schleife nehmen. und da liegt ja genau mein problem, dass ich keine ahnung habe wie ich die for schleife schreiben soll.



  • Also mein Problem ist hier, dass ich es einfach nich mit einer for schleife probieren würde. danke matze für den link, der ist wirklich hilfreich.



  • achso und bei scanf() hatte ich das f vergessen, das war ein tippfehler sry.



  • hi

    Sorry wegen meiner Fehler, kann wohl besser Programmieren als Schreiben.
    Natürlich heisst es lernen, aber deswegen musst du nicht vom Thema ablenken. 😃

    Ja wir sollten vieleicht noch wissen wie es dan bei N=5, N=6 usw. aussieht.
    Dan könnte ich dir auch weiterhelfen .Habe einfach zu wenig Informationen für dass was du da machen möchtest.
    Und ob du es mit for(;;), oder while(;;) schleifen löst ist eigentlich völlig egal.

    gr* lb



  • n=5

    _____#
    ____###
    ___#####
    __#######
    _#########
    __#######
    ___#####
    ____###
    _____#

    n=6

    ______#
    _____###
    ____#####
    ___#######
    __#########
    _###########
    __#########
    ___#######
    ____#####
    _____###
    ______#

    er muss für jedes beliebige n das man eingibt das passende rautenmuster anzeigen.
    wobei mir klar ist, wie ich die einzelnen muster ausgebe, ich aber leider nicht darauf komme welchen allgemeinen algorithmus ich anwenden kann.



  • Dein erstes Muster ist ganz anders, da sind Leerzeichen zwischen den Rauten. In Zukunft musst du da genauer werden, aber na ja...

    Überleg doch bitte einfach mal, wo du in den verschiedenen Muster Gesetzmäßigkeiten entdeckst. Dann kommst du auch ganz leicht auf einen Ablauf, den du in einer Schleife (oder mehreren) formulieren kannst.

    Ich mach mal den Anfang:

    wenn n=5, dann

    - muss ich in Zeile 1 5 Leerzeichen drucken, im Anschluss eine Raute
    - muss ich in Zeile 2 4 Leerzeichen drucken, im Anschluss 3 Rauten
    - muss ich in Zeile 3 3 Leerzeichen drucken, im Anschluss 5 Rauten
    ...
    Nach der Hälfte des Musters (immer nach n Durchläufen) muss ich den Ablauf umkehren
    ...

    Fällt dir was auf? Siehst du, was rauf- und was runtergezählt werden muss? Kannst du nun diese klaren Sätze als Programmcode formulieren (wie genau, kannst du dir aussuchen, es muss keine for-Schleife dabei sein, wenn du damit noch Schwierigkeiten hast) und schon mal die erste Hälfte des Musters damit verwirklichen?



  • #include <stdio.h> 
    
    int main() 
    { 
        int n, i, j ,k, m, x; 
        printf("value of n= "); 
    
        scanf("%d",&n);
        printf("\n");    ;
    
        for (i = 1, m = n, x = n; m <= n; x--)
        {
            for (j = 0; j < m; j++)
                printf(" ");
            for (k = i; k; k--)
                printf("#");
            printf("\n");
            if (x > 0) { m--; i += 2; }
            else       { m++; i -= 2; }
        }
    }
    

    😉



  • int main()
    {
        int n, i;
        printf("value of n= ");
    
        scanf("%d",&n);
        printf("\n");
    
        for (i = 1; i<2*n; i++)
        {
            int s = abs (n-i);
            while(s--)
                printf (" ");
            while (s++ < 2*(n-abs(n-i)-1))
                printf ("#");
            printf("\n");
        }
    }
    

    :p



  • Es ist ein wenig C++ drin, aber dafür ist es nicht falsch.

    #include <cstdio>
    #include <algorithm>
    int main()
    {
    	printf("value of n= ");
    	int n;
    	scanf("%d",&n);
    	putchar('\n');
    
    	for (int y=1;y<2*n;++y) {
    		int einrueckung=std::abs(y-n);
    		for (int x=0;x<=einrueckung;++x)
    			putchar('_');
    		for (int x=0;x<2*(n-einrueckung)-1;++x)
    			putchar('#');
    		putchar('\n');
    	}
    }
    


  • volkard schrieb:

    Es ist ein wenig C++ drin

    dann lösch doch das blöde std vor dem abs weg. in c++ geht's, glaub ich, sogar auch ohne.
    🙂



  • ;fricky schrieb:

    volkard schrieb:

    Es ist ein wenig C++ drin

    dann lösch doch das blöde std vor dem abs weg. in c++ geht's, glaub ich, sogar auch ohne.
    🙂

    hast recht. das weglassen des blöden std ist mir aus versehen passiert, weil ich im C-Forum gerade bin.

    #include <cstdio>
    #include <algorithm>
    int main()
    {
    	std::printf("value of n= ");
    	int n;
    	std::scanf("%d",&n);
    	std::putchar('\n');
    
    	for (int y=1;y<2*n;++y) {
    		int einrueckung=std::abs(y-n);
    		for (int x=0;x<=einrueckung;++x)
    			std::putchar('_');
    		for (int x=0;x<2*(n-einrueckung)-1;++x)
    			std::putchar('#');
    		std::putchar('\n');
    	}
    }
    

    Man kann sich denken, wie das in C aussähe.



  • der wahre c++ könner verwendet etwa:

    #ifdef __cplusplus
    using namespace std;
    #endif
    

    ^^um die tasten zu schonen. sowas ähnliches sieht man in jedem c++ tutorial auf der ersten seite.
    🙂



  • Und schon hagelt's wieder Komplettlösungen, klasse, Lerneffekt garantiert... 🙄

    Zusätzlich zum FAQ-Beitrag "Du brauchst Hilfe?" fordere ich "Du willst helfen?".



  • _matze schrieb:

    Zusätzlich zum FAQ-Beitrag "Du brauchst Hilfe?" fordere ich "Du willst helfen?".

    ^^schreib doch einen.
    🙂



  • _matze schrieb:

    Und schon hagelt's wieder Komplettlösungen, klasse, Lerneffekt garantiert... 🙄

    Ich habe keine Bedenken, daß kindlpat eine Chance gehabt hätte, das hinzukriegen. An dieser Aufgabe war nichts zu lernen. Er muß ein paar Seiten zurückblättern und die einfacheren Schleifen nochmal üben.

    Und bis dahin spicht nichts dagegen, anhand dieser Aufgabenstellung verschiedene Stilrichtungen gegenüberzustellen.



  • volkard schrieb:

    Ich habe keine Bedenken, daß kindlpat eine Chance gehabt hätte, das hinzukriegen. An dieser Aufgabe war nichts zu lernen. Er muß ein paar Seiten zurückblättern und die einfacheren Schleifen nochmal üben.

    ausserdem wird er sich die geposteten vorschläge anschauen und wenn er sie verstanden hat, hat er ganz nebenbei auch was gelernt.
    🙂



  • ;fricky schrieb:

    ausserdem wird er sich die geposteten vorschläge anschauen und wenn er sie verstanden hat, hat er ganz nebenbei auch was gelernt.
    🙂

    Bestenfalls. Ich habe von ihm keine eigene Zeile Code zu sehen bekommen und seine Einlassung, die for- Schleife nicht zu verstehen, deutet darauf hin, daß er sich gar nichts selbst erarbeiten mag (kann auch ein Mißverständnis sein und alle waren wieder mal zu schnell zur Hand).

    Ob es pädagogisch sinnvoll ist, solche "Lernenden" mit einer "C&P- Lösung" zu versorgen, kann man ganz klar mit "nein" beantworten, da geh' ich mit _matze absolut konform.

    Allerdings verstehe ich auch den Reiz, den solche "Fingerübungen" auf die versierteren Forumsbesucher ausüben, die sich dann den "fastest & most tricky"- Wettbewerb liefern.

    Irgendwo sollte man schon sagen, daß der OP wenigstens ein paar Zeilen vorlegen soll, bevor man ihm die Tastatur entreißt und mal zeigt, wie zu coden ist, besser wäre es, ihn zu einer eigenen Lösung zu führen.



  • pointercrash() schrieb:

    Ob es pädagogisch sinnvoll ist, solche "Lernenden" mit einer "C&P- Lösung" zu versorgen, kann man ganz klar mit "nein" beantworten, da geh' ich mit _matze absolut konform.

    Aha. Beweise das bitte.


Anmelden zum Antworten