Problem mit C Programmierung



  • Hallo!
    Ich habe folgende Aufgabe zu lösen.
    Schreiben Sie ein C-Programm, das auf dem Bildschirm folgende Muster erstellt. Die Größe n soll variabel sein und eingelesen werden.

    zb n=3 n=4

    # #
    # # # # # #
    # # # # # # # # # #
    # # # # # # # # # #
    # # # # # #
    # # #

    Mein Problem besteht dahingehen, dass ich denke das dieses Problem über eine For Schleife gelöst werden muss, ich aber keine Ahnung habe wie ich das machen muss. 😞

    wäre wirklich nett wenn mir hier einer helfen könnte... bin leider noch nicht weit.

    #include <stdio.h>

    int main()
    {
    int n;
    printf("value of n= ");
    fflush(stdout);
    scan("%d",&n);



  • mist sehe grade das das mit dem Muster nicht geklappt hat.

    also bei n=3 müsste es so aussehen ..

    #
    __#
    #
    #
    #
    #
    ###
    __###
    ____#

    musst die unter striche einfügen damit er das muster anzeigt!



  • hi

    Ich würde mir mal ein C Buch zurhand nehmen ,und lehrnen und lehrnen und lehrnen , dan wirst du plötzlich merken das dise kake die du da fragst überflüssig wird.
    Für was ist n=3 zum henker nochmal !!! Du hast nicht mal eine forschleife wie soll das gehen. Einfach alles bullshit sorry ! Lehrne die Programmiersprach C von anfang an mit einem guten buch ! und nicht einfach bruchstücke as dem net ,die dir sowiso nichts bringen.So wie ich das sehe verstehst du nichts von C ,sorry.Ein gutes Buch das wird dich weiter bringen !Dan wird einmal mit der Zeit dein Problem zu Kinderspiel !.



  • @lb:
    Merke: Erst das Satzende-/trennzeichen, dann das Leerzeichen! Sorry, aber da krieg ich ja beim Lesen den Krampf, den du wahrscheinlich auch beim Schreiben gehabt hast... 😃

    @kindlpat:
    Zeig mir mal die Definition von scan(). 🙄 Tut mir leid, aber der Code, den du hier präsentierst ist nicht nur unvollständig, sondern auch bestimmt nicht kompilierbar. Eigeninitiative lässt sich da einfach nicht erkennen.

    Trotzdem ein kleiner Rat: wenn du Probleme beim Formulieren deiner for-Schleife hast, versuch es doch mal mit einer anderen Schleifenart (while?), falls dir das leichter fällt. Überlege dir einfach, was auf dem Bildschirm passieren soll und welche Funktionsaufrufe und welchen Ablauf du dafür brauchst. Das kannst du dir erstmal für eine Zeile überlegen. Hast du das erfolgreich umngesetzt, machst du dasselbe nochmal für die zweite Zeile. Und im Anschluss überlegst du dir einfach, was nötig ist, um von Zeile 1 zu Zeile 2 zu kommen.



  • 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.
    🙂


Log in to reply