Einige Fragen zu notepad++



  • Rotkiv schrieb:

    Link, nächstes mal selber suchen...

    Danke, hat aber leider nicht wirklich viel geholfen.
    Aber gut ich werden dann heute die Nacht nutzen google auszubeuten 🙂



  • /* hello */
    
    #include <stdio.h>
    
    int main ( void )
    {
        int x;
        int y;
    
        printf("Bitte geben sie eine Zahl für x ein!\n",x);
            scanf( %d, &x );
        printf("Bitte geben sie eine Zahl für y ein!\n",y);
            scanf( %d ,&y );
    }  // warum hier Klammer zu? soll hier main enden?
    {  // diese Klammer soll was bewirken?
        while (x!=y);  // was möchtest du mit dieser Zeile erreichen?
            if(x>y);   // in dieser Zeile ist ein Zeichen zu viel?
                printf(" Jo X ist größer du sack\n");
            else
                printf(" Jo Y ist größer du sack\n");
    
            }  // ?
    
    {  // was soll die Klammer hier?
        return 0;
    }
    

    Ich hoffe mal das ich noch wach genug für die Kommentare war 🙄

    MfG f.-th.



  • f.-th. schrieb:

    /* hello */
    
    #include <stdio.h>
    
    int main ( void )
    {
        int x;
        int y;
       
        printf("Bitte geben sie eine Zahl für x ein!\n",x);
            scanf( %d, &x );
        printf("Bitte geben sie eine Zahl für y ein!\n",y);
            scanf( %d ,&y );
    }  // warum hier Klammer zu? soll hier main enden?
    {  // diese Klammer soll was bewirken?
        while (x!=y);  // was möchtest du mit dieser Zeile erreichen?
            if(x>y);   // in dieser Zeile ist ein Zeichen zu viel?
                printf(" Jo X ist größer du sack\n");
            else
                printf(" Jo Y ist größer du sack\n");
       
            }  // ?
    
    {  // was soll die Klammer hier?
        return 0;
    }
    

    Ich hoffe mal das ich noch wach genug für die Kommentare war 🙄

    MfG f.-th.

    Die Kommentare waren mal nice danke 🙂 wie schon gesagt mache ich das seit kurzem und nach einer 9 Wöchigen Sommerferien pause und ohne iwas zu lernen etc fällt ein bisschen weg 😃 das war noch der rest der mir noch im hinterkopf hing und wollte das sofort testen 😃

    /* hello */ 
    
    #include <stdio.h>
    
    int main ( void )
    {
    	int x;
    	int y;
    
    	printf("Bitte geben sie eine Zahl für x ein!\n",x);
    		scanf(" %d", &x );
    	printf("Bitte geben sie eine Zahl für y ein!\n",y);
    		scanf(" %d" ,&y );
    
    	while (x!=y)
    		if(x>y);
    			printf(" Jo X ist größer du sack\n");
    		else
    			printf(" Jo Y ist größer du sack\n");
    }	
    
    {
    
    	return 0;
    }
    

    so richtig? Meines wissens dachte ich das die Return funktion in einem eigenem BLock stehen muss.

    PS: mein Problem ist immernoch bestehend das dass Programm immer sofort nach dem start geschlossen wird.

    Gruß
    Slawa



  • Nein, du hast nicht alle Kommentare von f.-th. beachtet, folgendes stimmt noch nicht:

    /* hello */
    
    #include <stdio.h>
    
    int main ( void )
    {
        int x;
        int y;
    
        printf("Bitte geben sie eine Zahl für x ein!\n",x);	// Das x hier ist überflüssig
            scanf(" %d", &x );
        printf("Bitte geben sie eine Zahl für y ein!\n",y);	// Das y hier ist überflüssig
            scanf(" %d" ,&y );
    
        while (x!=y)	// Wozu soll der Schleifenkopf hier gut sein?
            if(x>y);	// Das Semikolon hier ist zwar syntaktisch in Ordnung, aber sicher nicht gewollt
                printf(" Jo X ist größer du sack\n");
            else
                printf(" Jo Y ist größer du sack\n");
    }   
    
    {	// Das return muss im Block der Funktion stehen, zu der es gehört
    
        return 0;
    }
    

    Richtig wäre so:

    #include <stdio.h>
    
    int main ()
    {
    	int x;
    	int y;
    
    	printf("Bitte geben Sie eine Zahl für x ein!\n");
    	scanf(" %d", &x );
    
    	printf("Bitte geben Sie eine Zahl für y ein!\n");
    	scanf(" %d" , &y );
    
    	if (x > y)
    		printf(" Jo X ist größer du Sack\n");
    	else
    		printf(" Jo Y ist größer du Sack\n");
    
    	return 0;
    }
    


  • Jawoll, super vielen dank läuft optimal 🙂

    Die Dos box wird geöffnet und bleibt offen bis ich meine Eingaben getätigt habe, oder einfach schließe.

    Doch eine sache bleibt trotzdem.
    Kann ich das vielleicht irgendwie so einstellen das die box sich nicht selber automatisch schließt. Weil bei mir ist das in Moment so das wenn ich meine zwei eingaben für die Variablen x und y betätig habe, die Box sich sofort schließt, sodass man den Effekt der "If-schleife" nicht erkennen kann.



  • Auch wenn ich vorhin total gepennt habe und mir deinen Quellcode zugegebener Maßen nicht angeschaut habe - weil das "Problem" bzgl der schließenden Console recht bekannt ist, so kannst du genau dies Vorhaben mit den unter meinem Link geposteten Mitteln lösen:
    fflush(stdin);
    getchar();



  • Noobkiller16 schrieb:

    Jawoll, super vielen dank läuft optimal 🙂

    Die Dos box wird geöffnet und bleibt offen bis ich meine Eingaben getätigt habe, oder einfach schließe.

    Doch eine sache bleibt trotzdem.
    Kann ich das vielleicht irgendwie so einstellen das die box sich nicht selber automatisch schließt. Weil bei mir ist das in Moment so das wenn ich meine zwei eingaben für die Variablen x und y betätig habe, die Box sich sofort schließt, sodass man den Effekt der "If-schleife" nicht erkennen kann.

    Die DOS Box schließt sich, weil dein Programm zu ende ist. Das ist völlig normal, richtig und wäre anders falsch. Warum? Wenn jedes Programm, das sich beendet, ein Fenster offen lässt, dann viel Spaß, wenn man sowas in einem Batch laufen lassen würde.

    Das MSVS hat da zwei Tasten:

    F5: Debugger startet, und das Fenster wird geschlossen, weil man davon ausgeht, das man beim Debuggen einen Breakpoint setzt (welcer das Programm pausiert).

    STRG+F5: Das Fenster wird NICHT geschlossen, sondern offen gelassen. Weil das Programm nicht durch einen Breakpoint pausiert werden kann.

    Also, starte deine Programme mit STRG+F5, wenn du die letzten Ausgaben sehen willst.



  • Rotkiv schrieb:

    Auch wenn ich vorhin total gepennt habe und mir deinen Quellcode zugegebener Maßen nicht angeschaut habe - weil das "Problem" bzgl der schließenden Console recht bekannt ist, so kannst du genau dies Vorhaben mit den unter meinem Link geposteten Mitteln lösen:
    fflush(stdin);
    getchar();

    Ouh tut mir Leid dann war der Link ja wirklich mehr als Hilfrei *schäm*
    ich muss mehr an meiner Auffassungsgabe arbeiten!
    Danke nochmal für die nette Hilfe ihr habt mir sehr geholfen.

    Gruß
    Slawa



  • Artchi schrieb:

    Die DOS Box schließt sich, weil dein Programm zu ende ist. Das ist völlig normal, richtig und wäre anders falsch. Warum? Wenn jedes Programm, das sich beendet, ein Fenster offen lässt, dann viel Spaß, wenn man sowas in einem Batch laufen lassen würde.

    Das MSVS hat da zwei Tasten:

    F5: Debugger startet, und das Fenster wird geschlossen, weil man davon ausgeht, das man beim Debuggen einen Breakpoint setzt (welcer das Programm pausiert).

    STRG+F5: Das Fenster wird NICHT geschlossen, sondern offen gelassen. Weil das Programm nicht durch einen Breakpoint pausiert werden kann.

    Also, starte deine Programme mit STRG+F5, wenn du die letzten Ausgaben sehen willst.

    Hay Super habe deine Variante erst n tick später gelesen 🙂
    Trozdem danke, ich werde mir beides merken 🙂

    Gruß
    Slawa



  • Noobkiller16 schrieb:

    Trozdem danke, ich werde mir beides merken 🙂

    Nicht nötig.
    Konsoleanwendungen sollen am Ende nicht pausieren.
    Und fflush(stdin); ist nicht ganz unumstritten, fürchte ich.



  • volkard schrieb:

    Und fflush(stdin); ist nicht ganz unumstritten, fürchte ich.

    wieso?
    Oder besser gesagt was ist genau der befehl von fflush(stdin)? Muss ja sicherlich einen ungewollten nebeneffekt haben wenn es so umstritten ist.
    (Bin in moment nicht dazu gekommen im Internet nachzuschauen weil ich die ganze Zeit am rumspielen bin mit open source müll suchen 😛 )



  • Dann warte ich mal ab, bis Du Zeit hast.



  • volkard schrieb:

    Dann warte ich mal ab, bis Du Zeit hast.

    Naja es ist 23:42 und ich habe Ferien
    Zeit habe ich also ohne ende 😉





  • nman schrieb:

    Google, "stdflush stdin". Erster Treffer: http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1052863818&id=1043284351

    danke, aber den Artikel habe ich schon gelesen. Nur leider nicht wirklich was verstanden, da mir das Fachchinesisch "Noch" nicht liegt.
    Habe logischerweise weitergesucht doch die Erörterung blieb stehts gleich.^^



  • Noobkiller16 schrieb:

    Muss ja sicherlich einen ungewollten nebeneffekt haben wenn es so umstritten ist.

    Kurzfassung: Nein, hat es nicht - aber es hat auch nicht den erwarteten/erhofften Effekt. Laut Standard funktioniert fflush() nur mit Ausgabe-FILE's (z.B. stdout oder eine per fopen(...,"w"); geöffnete Datei) und hat für diesen Anwendungszweck auch eine klar definierte Funktion. Was es mit Eingabe-FILE's (wie stdin) macht, wird nicht spezifiziert.
    (das hat MS so zweckentfremdet, daß es ein unter Umständen plausibles, aber nicht portables Ergebnis liefert)

    PS: C++ trennt hier klar zwischen ostream::flush() und istream::ignore().



  • ich habe mich an diese Arbeitsweise gewöhnt, falls das Programm nicht auf anderen Rechnern übertragen werden sollte: Das Programm im Anklickmenü als nicht schließend kennzeichnen, oder eben Konsoleprogramme gleich aus der Konsole heraus kompilieren und starten.

    compiler z.B.: http://bellard.org/tcc/



  • Alles klar dann weis ich bescheid.
    Ich habe hier noch ein kleines Problem.
    Ich wollte gestern noch ein code schreiben, welcher mir die ersten 10 quadratzahlen ausgibt.
    Das Programm startet zwar, aber es kommen immer verschiedene Zahlen und ich erreiche nicht den Effekt den ich eigentlich erzielen wollte.

    #include <stdafx.h>
    #include <stdio.h>
    int main (void)
    {
    	int x;
    		printf("Hier sind die ersten 10 quadratzahlen!\n");
    		printf("%d\n", &x);
    
    		for(x=1;x<10;x=x+1);
    
    		return 0;
    			}
    

    ich habe so ziemlich alles gemacht was ich machen musste.
    Ich habe x einen wert gegeben ( 1 ) dann habe ich gesagt das der wert der variable nicht größer als 10 werden darf, da x der multiplikator ist.
    Dann x+1 damit sich die Variable immer um eins erhöht und am ende den wert mit x initialisiert.



  • Du gibst ja auch die Adresse deiner VAriable aus, da kann nichts draus werden (bei printf() mußt du nicht die Adresse übergeben). Außerdem wäre es eine gute Idee, die Ausgabe IN die Schleife zu ziehen:

    for(i=1;i<=10;++i)
      printf("%d", i*i);
    


  • CStoll schrieb:

    Du gibst ja auch die Adresse deiner VAriable aus, da kann nichts draus werden (bei printf() mußt du nicht die Adresse übergeben). Außerdem wäre es eine gute Idee, die Ausgabe IN die Schleife zu ziehen:

    for(i=1;i<=10;++i)
      printf("%d", i*i);
    

    erstmal danke für deine Antwort.
    Jetzt läuft es definitiv stabiler und es kommt einen Konstante Zahl.
    Leider wird nur eine Zahl ausgegeben und zwar 121 und ich wollte die ersten 10 Quadratzahlen haben, also 1*1 Ergebnis 2*2 Ergebnis etc. Und am besten noch einen Abstand zwischen den jeweiligen Zahlen.

    Außerdem habe ich auch noch einen Frage zu VB 2010 Express.
    Immer wenn ich ein Projekt erstelle, dann einen lauffähigen Code schreibe diesen dann durch den Debugger starten lasse, kann ich diesen Code nicht mehr verändern.
    Bzw Veränderungen werden nicht wahrgenommen und der Code wird wie folgt einfach gestartet. Selbst wenn ich den ganze Code im Fenster lösche!
    Deswegen muss ich immer ein komplett neues Projekt erstellen was immer wieder dauert und blöd ist.
    Habt ihr vielleicht eine Möglichkeit einen Code sofort zu löschen ohne das ich dann ein neues Projekt erstellen muss ?


Anmelden zum Antworten