Zweites Schulprog



  • Hi @ all

    Also in der schule Haben wir folgenden code geschrieben:

    #include "stdafx.h"
    #include "CONIOEX.h"
    #include <conio.h>
    
    int rechnen(int a, int b)
    {
    	int ergebnis = 0;
    	ergebnis = a+b;
    	return ergebnis;
    }
    
    void rahmen()
    {
    	int i = 0;
    
    	textcolor(RED);
    	textbackground(WHITE);
    
    	for(i=1; i<=80; i++)
    	{
    		gotoxy(i,1);
    		printf("x");
    	}
    	for(i=2; i<=24; i++)
    	{
    		gotoxy(80,i);
    		printf("x");
    	}
    	for(i=1; i<=80; i++)
    	{
    		gotoxy(i,25);
    		printf("x");
    	}
    	for(i=24; i>=2; i--)
    	{
    		gotoxy(1,i);
    		printf("x");
    	}
    	gotoxy(1,1);
    }
    
    void drucken()
    {
    	gotoxy(38,12);
    	printf("1+2=%i",rechnen(1,2));
    }
    
    void main()
    {
    	rahmen();
    	drucken();
    	getch();
    
    }
    

    in der function drucken() öffne ich eine weitere function rechnen(1,2).
    Genau das sollen wir aber nicht machen.
    Die function rechnen soll in der main function geöffnet werden.
    aber trotzdem soll das ergebniss in der mitte der seite durch die function drucken() ausgegeben werden.

    Wie kann man sowas machen?
    Wenn ich ergebnis direkt ausgeben will, gibt es einen fehler.

    schreibe ich drucken(int ergebnis) sagt er mir das die function drucken keine 0 parameter akzeptiert.

    Dann habe ich eine weitere Frage.
    Was ist der Unterscheid zwichen
    printf()
    und cout?

    Leider verstehe ich das nicht so ganz.

    Und dann stellt würde ich den rahmen gerne mit verzögerrung zeichen lassen. Also so das man zusehen kann wie er gezeichnet wird.

    Kann mir da vieleicht einer ein stichwort geben nach dem ich googlen kann,
    oder en kleiner bsp.
    z.b. Hallo welt schrieben lassen so das man zusehen kann.

    Thx schon mal an alle die sich die mühe gemacht haben dieses Thema zu lesen.

    Marian

    PS: Wenns das thema nicht so ganz in diesen bereich passt, nicht gleich Kopf abreisen. 🙂 Habe nicht genug ahnung um zu wissen in welchen bereich das geört.

    PSS: Kann man eigendlich den ganzen konsolenhintergrund färben oder nur zeichen hinterlegen?



  • Sqwan schrieb:

    in der function drucken() öffne ich eine weitere function rechnen(1,2).
    Genau das sollen wir aber nicht machen.
    Die function rechnen soll in der main function geöffnet werden.
    aber trotzdem soll das ergebniss in der mitte der seite durch die function drucken() ausgegeben werden.

    Wie kann man sowas machen?
    Wenn ich ergebnis direkt ausgeben will, gibt es einen fehler.

    schreibe ich drucken(int ergebnis) sagt er mir das die function drucken keine 0 parameter akzeptiert.

    Du musst dann auch den entsprechenden Wert übergeben.
    Also ca. so:

    void drucken(int ergebnis)
    {
        gotoxy(38,12);
        printf("1+2=%i", ergebnis);
    }
    
    int main()
    {
        drucken(rechnen(1,2));
    }
    

    Sqwan schrieb:

    Und dann stellt würde ich den rahmen gerne mit verzögerrung zeichen lassen. Also so das man zusehen kann wie er gezeichnet wird.

    Kann mir da vieleicht einer ein stichwort geben nach dem ich googlen kann,
    oder en kleiner bsp.
    z.b. Hallo welt schrieben lassen so das man zusehen kann.

    Dazu gibt es die Funktion Sleep().
    Mit dem Bsp. Hello World sähe das etwa so aus:

    int main()
    {
        std::cout << "H";
        Sleep(100);
        std::cout << "e";
        Sleep(100);
        std::cout << "l";
        Sleep(100);
        std::cout << "l";
        Sleep(100);
        std::cout << "o";
        //usw.
    }
    

    Bei den Schleifen Bracuhst du also einfach nur noch ein Sleep() einfügen. Der Parameter ist die Zeit in Millisekunden, die du warten willst.

    Am besten du ließt dir das mal durch:

    Die meistgestellten Fragen schrieb:

    3. Ich habe den Code 1:1 aus dem Buch abgeschrieben. Wieso funktioniert der nicht?

    Viele Bücher halten sich nicht an den C++-Standard. Die neueren Compiler allerdings halten ihn schon ziemlich genau ein. Daher kann es sein, dass dein Buch/Tutorial etwas benutzt, was dein Compiler nicht unterstützt. Typische Beispiele:

    void main() // oder: main()
    // ersetzen durch:
    int main()
    
    #include <iostream.h>
    // ersetzen durch:
    #include <iostream>
    using namespace std;
    
    #include <stdio.h>
    // ersetzen durch:
    #include <cstdio>
    using namespace std;	// analog dazu: assert.h, ctype.h, locale.h, time.h, math.h und weitere
    

    Wenn man die Zeile "using namespace std;" weglässt, wie man es in Header-Dateien machen sollte, muss man den sog. qualifizierten Namen schreiben, d. h. ein "std::" vor den Namen setzen. Beispiel:

    #include <string>
    
    std::string foo = "bar"
    

    MfG 123456789



  • Thx. Das hat mir schon mal weiter geholfen.

    Jetzt nurnoch eine frage:
    In welche header-datei ist denn Sleep() ?
    Der sagt mir immer:
    error C2065: 'Sleep' : nichtdeklarierter Bezeichner

    vieleicht kann mir da noch mal einer weiter helfen.

    MFG Marian



  • Huch sry ganz vergessen.
    Sleep() müsste in windows.h deklariert sein. Du arbeitest du mit Windows oder?



  • jop thx.

    das hat mir sehr geholfen.
    Jetzt functioniert es.

    windows.h is richtig gewesen.

    hatte es schon mal mit <time.h> und <unistd.h> versucht.
    war dann natürlich falsch.
    ich denke mal unistd is dann für linux...

    Welche frage jetzt noch offen ist.

    Wo ist der unterschied zwichen cout und printf() ?

    MFG und nen riesen thx an 123456789
    Marian



  • Welche frage jetzt noch offen ist.

    Wo ist der unterschied zwichen cout und printf() ?

    printf: C
    cout: C++

    2 verschiedene Sprachen, cout ist C++ und printf C.
    Wenn man einen Compiler hat, der C und C++ compilieren kann, kann man auch beides schreiben, aber am besten man einigt sich auf nur eine Sprache um Konflikten auszuweichen.

    MFG
    DarkShadow



  • Also cih ahbe schon mal meinen lehrer gefragt und der sagte er könne mir das zwar nicht erklären aber cout würde es auch bei c geben.
    Das habe etwas mit strings und streams zutuhen.

    Allerdings haben schon bei meinem ersten thema welche festgestellt das mein lehrer nicht ganz sauber codet.

    Vieleicht kann da nochmal einer was zu sagen.
    Damit ich mal die aussage meines lehrers vergleichen kann.
    Sonst nehme ich das einfach mal so hin dass das verschiedene sprachen sind.



  • hattest du nicht noch gefragt ob man den hintergrund komplett färben kann?
    würd mich auch mal interessieren wie das geht
    aber falls du textfarben brauchst:^^ kannst du die mal ausprobieren

    void textcolor(WORD color)
    {
    SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), color);
    }

    int main()
    {
    for(int n=0; n <= 17; n++)
    {
    textcolor(n);
    cout<<n;
    }
    cin.get(); // weiß nicht welchen compiler du hast...
    return 0;
    }

    vllt wird irgendwann ja noch bei 400 oder so die schrift farblich hinterlegt aber das ist glaub auch nicht ganz das was du suchst^^



  • meine textfarbe habe ich ja schon geändert.
    Und hinterlegen kann ich sie auch.

    Mir passt es nur nicht so ganz das ich 80*25 Lehzeichen weiß hinterlegen muss damit ich den ersten teil der console weis färben kann.

    Hier mal mein bsp wie text farbig gemacht und hinterlegt wird:

    #include <stdafx.h> 
    #include <stdio.h>
    #include "CONIOEX.h"
    #include <conio.h> //Je nach beliebn alle anderen header.
    
    void main(void) // Keinen plan ob man das noch darf
    {
         textcolor(FARBE);
         textbackground(FARBE);
    
         //Jeglicher folgende text ist farblich Formatiert
    
         getch();
    
         //Jetzt stehen noch gotoxy(x,y) und clrscr() zur verfügung
         //gotoxy(x,y) <-- Setzt den kurser an die stelle {x|Y}
         //clrscr() <-- reinigt den bildschirm von jeglichem text
    }
    

    Leider braucht man dann aber auch die conio.c im selben ordner.
    Denke mal das sind Vorkompilierte Header.
    habe ich leider keine ahnung von. haben wir noch nicht besprochen.
    Nur das die mit in den ordner muss.
    Und das man den compiler auf vorkompiliere header stellen muss...

    MFG Marian



  • Sqwan schrieb:

    Also cih ahbe schon mal meinen lehrer gefragt und der sagte er könne mir das zwar nicht erklären aber cout würde es auch bei c geben.
    Das habe etwas mit strings und streams zutuhen.

    Hau ihm den Standard um die Ohren.
    cout ist ein Objekt. C hat keine Objekte. q.e.d. 😉
    printf gibt es natürlich auch in C++, da die C++ Standardbibliothek die von C vollständig enthält. Da printf aber typunsicher ist (lass Dir das am besten erklären wenn Du ne Spur weiter bist), wird cout bevorzugt. Um nicht zu sagen printf ist in C++ ziemlich verpönt.

    Wenn Du allerdings Otto-Normal-Schul-Informatikunterricht bei einem alten Physiker (Mathematiker, ... [beliebig austauschbar]) hast, der das Fach bekommen hat weil er "mit Computern umgehen" kann wundert mich garnichts. Die sehen ihren Unterricht meist als "C/C++-Unterricht" und haben keinen Schimmer was diese beiden Sprachen ausmacht und unterscheidet. Leider.



  • KP was mein lehrer noch alles macht.
    Der hat gesagt der unterschied is das c++ teilweise Objektorientiert ist und c garnicht. Nur Java ist komplett objektorientiert und erzwingt dies auch... sagt er.

    Der unterschied ist dann das C einfach von oben nach unten abgearbeitet wird und c++ nicht.

    Ist das so richtig?



  • Sqwan schrieb:

    Der hat gesagt der unterschied is das c++ teilweise Objektorientiert ist und c garnicht. Nur Java ist komplett objektorientiert und erzwingt dies auch... sagt er.

    Soweit imho richtig. C++ bezeichnet man als Multiparadigmensprache, weil man neben der Objektorientierung auch die prozeduralen Eigenschaften von C nutzen kann, und nebenbei öffnet C++ noch einige andere Türen, sie erlaubt z.B. funktionale Ansätze und Metaprogrammierung mit den allseits beliebten Templates.

    Der unterschied ist dann das C einfach von oben nach unten abgearbeitet wird und c++ nicht.

    Ziemlich platt gesagt. Letztendlich erlauben beide Sprachen viele Modelle. Wenn man in C eine Funktion aufruft wird ja auch gesprungen und nicht nur "von oben nach unten" abgearbeitet.



  • Und nochmal eine frage.

    Ich kann jetzt mit textcolor(WHITE) die textfarbe weis machen.
    Geht das auch für einzelnde textstücke?
    ich will ja nicht immer den ganzen tet farbig machen.

    für WHITE kann man natürlich viele Farben einsetzen...



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Klar:

    textcolor(WHITE);
    cout << "Weißer Text";
    
    textcolor(RED);
    cout << "Wieder rot";
    

    Den Hintergrund komplett in einer Farbe färben ist auch möglich - allerdings nicht direkt mit der conioex soviel ich weiß. Kannst aber die conioex durch die Improved Console (http://ic.c-plusplus.net) ersetzen. Dann ist das kein Problem.

    MfG SideWinder



  • joa. cout ist aber ein objekt.
    objekte gibts in c aber nicht.
    Das heist für mich sind sie gut.
    wenn ich mein prog abgebe aber trotzdem ein fehler.
    Denn objekte dürfen wir nicht benutzen...
    sonst hätte cih das gemacht.

    allerdings kann ich an die stelle ja auch printf() setzen.
    muss die schrift danach halt nur wieder auf den standart setzen sonst wird alles bund.

    Meinen code werde icha ber auch noch mal im c++ bereich posten.
    Da kann man mir vieleicht helfen ihn objekt orientiert zu machen.
    Habe sowas nämlich noch nie gemacht. und kaum ahnung.
    nur gelesen ahbe ich davon mal.
    Da kann mir bestimmt dann nochmal einer bei helfen.

    Gehört dann nur nicht mehr in den C bereich...


Anmelden zum Antworten