Problem mit C Programmierung



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



  • pointercrash() schrieb:

    und seine Einlassung, die for- Schleife nicht zu verstehen, deutet darauf hin, daß er sich gar nichts selbst erarbeiten mag

    schleifen braucht man nicht dazu:

    int n;
    
    void spaces (int r)
    {
      if (r)
        spaces (r-1);
      putchar ('_');
    }
    
    void numsign (int r)
    {
      if (r)
        numsign (r-1);
      putchar ('#');
    }
    
    void line (int i)
    {
      int p;
      spaces (n-i);
      numsign (i*2-2);
      puts("");
    }
    
    void top (int r)
    {
      if (r>1)
        top (r-1);
      line(r);
    }
    
    void bottom (int r)
    {
      line (r-1);
      if (r>2)
        bottom (r-1);
    }
    
    int main()
    {
      printf("value if n= ");
    
      scanf("%d",&n);
      printf("\n");
    
      top (n);
      bottom(n);
    }
    

    🤡



  • volkard schrieb:

    Aha. Beweise das bitte.

    Daß durch reines Abpinseln wenig bis nichts gelernt wird, könnte Dir auch ohne Grundlagen der Pädagogik einleuchten.

    Davon abgesehen habe ich in den 90ern drei Semester lang Controllertechnik in einer Technikerschule gegeben. Die "Och, kannste mir das mal kopieren"-Typen aus dem Praktikum hatten in den Prüfungen immer die höchsten Durchfallraten (auch dank aufgeflogener Unterschleifversuche).

    LXL schrieb:

    schleifen braucht man nicht dazu: 🤡

    Und noch ein quick&tricky- Hack. 😉

    Was kindlpat daraus wohl lernen wird?



  • Die Lösung von LXL ist aber sehr interessant... muss ich mir mal in Ruhe ansehn. 😮



  • Genmutant schrieb:

    Die Lösung von LXL ist aber sehr interessant... muss ich mir mal in Ruhe ansehn.

    der obere teil lässt sich noch etwas runterkürzen:

    // anstatt spaces und numsign
    void character (int r, int c)
    {
      if (r)
        character (r-1, c);
      putchar (c);
    }
    
    ...
    

    🙂



  • pointercrash() schrieb:

    volkard schrieb:

    Aha. Beweise das bitte.

    Daß durch reines Abpinseln wenig bis nichts gelernt wird, könnte Dir auch ohne Grundlagen der Pädagogik einleuchten.

    Es trifft hier nicht zu, daß das einen Unterschied machen würde. Und was hat das bitte mit Pädagogik zu tun?



  • volkard schrieb:

    pointercrash() schrieb:

    volkard schrieb:

    Aha. Beweise das bitte.

    Daß durch reines Abpinseln wenig bis nichts gelernt wird, könnte Dir auch ohne Grundlagen der Pädagogik einleuchten.

    Es trifft hier nicht zu, daß das einen Unterschied machen würde.

    Wie, es macht keinen Unterschied? Ist doch ganz einfach: Wenn er die Lösung selbst herausgefunden hätte (auch mit kleinen Tipps unsererseits), dann hätte er seinem Lehrer morgen problemlos ohne Notizen/Rechner vor der Tafel erklären können, wie man ein solches Problem halt löst. Schließlich hätte er dann viel Zeit darin investiert. Da er nun die Lösung umsonst bekommen hat, ist es relativ wahrscheinlich, dass er die einfach so übernehmen wird und das Verständnis somit ausbleibt. Beim gleichen mündlichen Test würde er durchfallen.



  • volkard schrieb:

    Es trifft hier nicht zu, daß das einen Unterschied machen würde.

    Hääh 😕

    volkard schrieb:

    Und was hat das bitte mit Pädagogik zu tun?

    Allgemeinfeld Erziehungswissenschaft, Unterfeld Didaktik.

    Übrigens hätte ich in Dir den letzten vermutet, der Copy&Paste als ideale Lernmethode für C++ propagierte, auch wenn's hier nur um C ging. Magst Dich mit Gewalt zum Vollhorst machen, was?



  • pointercrash() schrieb:

    volkard schrieb:

    Es trifft hier nicht zu, daß das einen Unterschied machen würde.

    Hääh 😕

    Er hat so oder so nicht viel von den Antworten hier.

    pointercrash() schrieb:

    Übrigens hätte ich in Dir den letzten vermutet, der Copy&Paste als ideale Lernmethode für C++ propagierte, auch wenn's hier nur um C ging. Magst Dich mit Gewalt zum Vollhorst machen, was?

    Ich sage nicht, daß Copy&Paste die ideale Lernmethode wäre. Wie kommst Du denn darauf?

    Ich sage aber, daß es nicht Dein Auftrag ist, jeden C++-Anfänger zu erziehen. Und genau das hast Du vor. Deswegen auch der Fehlgriff mit der Pädagogik statt nur der Didaktik. Ach, meinetwegen, mach nur. Aber mich reinziehen und mir verbieten wollen, Komplettlösingen reinzustellen, das ist dann wohl Quatsch. In diesem Fall hat der Fragesteller von Tips wie "Nimm Schleifen" gar nichts. Ich hätte auch nichts reingestellt, wenn die C-Lösung nicht so häßlich gewesen wäre. Beim Versuch, das zu verstehen, hätte der Fragesteller seine Gesaundheit riskiert.



  • _matze schrieb:

    Ist doch ganz einfach: Wenn er die Lösung selbst herausgefunden hätte (auch mit kleinen Tipps unsererseits), dann hätte er seinem Lehrer morgen problemlos ohne Notizen/Rechner vor der Tafel erklären können, wie man ein solches Problem halt löst. Schließlich hätte er dann viel Zeit darin investiert. Da er nun die Lösung umsonst bekommen hat, ist es relativ wahrscheinlich, dass er die einfach so übernehmen wird und das Verständnis somit ausbleibt.

    wieso? man hat dem OP hier mindestens 3 verschiedene vorschläge präsentiert (den mit dem 'std' zähle ich mal nicht mit). z.b. diese rekursiv-methode könnte erst recht sein interesse an der aufgabe und an der programmierung allgemein anstacheln. dass er nur ein doofer abschreiber ist, der nichts lernen will, ist eine ziemlich freche unterstellung von euch.
    🙂


Anmelden zum Antworten