'C' Programmierung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von ~R.a.t.M.~, 19. April 2006 .

Schlagworte:
  1. 19. April 2006
    Hi Leute,

    mein Bruder braucht zur Anschauung ein in der Programmiersprache C geschriebenes Programm welches folgendes können sollte:

    1. Initialisierung eines Textes im Hauptprogramm
    2. Ein Unterprogramm das die Eingabe einer Zeitverzögerungskonstante ermöglicht und den Wert ans Hauptprog. zurück gibt
    3. Ein zweites UP, welches die Zeitverzögerung ausführt
    4. Den Text als Laufschrift ausgeben
    5. Ein drittes UP, welches zum richtigen Zeitpunkt aufgerufen wird um die jeweilige linke Spalte, an der der Text vor Ausführung eines Laufschrittes gestanden hat, zu löschen

    Wenn das jemand von euch proggen könnte wäre das mal richtig fett
     
  2. 19. April 2006
    Könnte ich machen, du musst mir nur erklären, wofür man jetzt das dritte UP braucht. An die Stelle, die gelöscht werden soll, muss doch sowieso ein neues Zeichen hin, oder meinst du mit Lauftext, dass der Text sich von links nach rechts über den Bildschirm bewegen soll?
    Soll der Text, der im Hauptprogramm initialisiert wird, vom Benutzer eingegeben werden, oder soll es ein statischer Text sein?
     
  3. 19. April 2006
    Hi,

    also...

    der Text soll von links nach rechts über den Bildschirm wandern.
    Die Sache mit dem 3.UP steht so in der Aufgabenstellung.

    Ach ja und das ganze soll unter Verwendung von Zeigern und ohne globale Variablen geschehen..

    Kannst ja mal schauen obs klappt.

    Auf jeden Fall schonmal DANKE
     
  4. 19. April 2006
    Code:
    #include <stdio.h>
    
    #define LAENGE 40
    
    void deletechar(int number)
    {
     gotoxy(number);
     printf(" ");
    }
    
    int getzeit()
    {
     int i;
     printf("Bitte Zeit eingeben \n");
     i = scanf("%d", &i);
     return i;
    }
    
    void delay(int zeit)
    {
    int i;
    int a = 0;
    for (i=0;i<zeit;i++)
    {
    if (a==0){a=1;}else{a=0;} //Keeping him busy
    }
    
    }
    
    int main(int argc, char **argv)
    {
    int i;
    int zeit;
    char *text = strdup("Lauftext");
    zeit = getzeit();
    for (i = 1; i < LAENGE - strlen(text); i++)
    {
     gotoxy(i, 3);
     delay(zeit);
     deletechar(i);
    }
    free(text);
    return 0;
    }
    
    
    Das solltes eigentlich tun.
    LAENGE ist die Zeilenlänge von deiner Konsole.
    Hängt allerdings von deiner Entwicklungsumgebung ab, welche Funktion jetzt gotoxy ist.
    Unter DOS reicht es, glaub ich, die Datei graph.h zu includen. Du bräuchtest dafür aber einen C-Compiler für DOS. --> http://www.mathematik.uni-bielefeld.de/~kleinew/ckurs/
    Unter Windows kann man sich anscheinend auch seine eigene schreiben --> http://www.webplain.de/foren/read.php?8,15495
    Sind dann allerdings net mehr 3 UP's, sondern 4, daher hab ich erstmal drauf verzichtet ;-)

    Gruß
    Imm0
     
  5. 19. April 2006
    Kompilierung läuft...

    C:\Laufschrift\probe.cpp(10) : error C2065: 'gotoxy' : nichtdeklarierter Bezeichner
    C:\Laufschrift\probe.cpp(39) : warning C4018: '<' : Konflikt zwischen signed und unsigned
    Fehler beim Ausführen von cl.exe.

    Laufschrift.exe - 1 Fehler, 1 Warnung(en)
     
  6. 19. April 2006
    mit welchem compiler hast du das gebaut?
    Wenn mit dem Dos-Kompiler, dann probier mal mit Dev-Cpp, und dann mit dem Gotoxy wie aus dem zweiten Link, den ich gepostet hab. Damit funktioniert's bei mir.

    Gruß
    Imm0
     
  7. 19. April 2006
    habs mit microsoft visual c++ gemacht, den benutzen die auch in der schule...
     
  8. 19. April 2006
    Hast du dir das Sdk auch draufgemacht?

    KLICK

    Wenn nicht dann solltest du das mal draufhauen,sonst kommen immer solche Fehler(bei mir zumindest).
     
  9. 19. April 2006
    Code:
    #include <stdio.h>
    #include <windows.h>
    
    #define LAENGE 40
    
    void gotoxy(short x, short y)
    {
    HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x-1;
    pos.Y=y-1;
    SetConsoleCursorPosition(hCon, pos);
    }
    
    void deletechar(int number)
    {
     gotoxy(number);
     printf(" ");
    }
    
    int getzeit()
    {
     int i;
     printf("Bitte Zeit eingeben \n");
     i = scanf("%d", &i);
     return i;
    }
    
    void delay(int zeit)
    {
    int i;
    int a = 0;
    for (i=0;i<zeit;i++)
    {
    if (a==0){a=1;}else{a=0;} //Keeping him busy
    }
    
    }
    
    int main(int argc, char **argv)
    {
    int i;
    int zeit;
    char *text = strdup("Lauftext");
    zeit = getzeit();
    for (i = 1; i < LAENGE - strlen(text); i++)
    {
     gotoxy(i, 3);
     delay(zeit);
     deletechar(i);
    }
    free(text);
    return 0;
    }
     
    probier's mal so

    Gruß
    Imm0
     
  10. 19. April 2006
    Kompilierung läuft...
    test.cpp
    c:\laufschrif1\test.cpp(17) : error C2660: 'gotoxy' : Funktion akzeptiert keine 1 Parameter
    c:\laufschrif1\test.cpp(46) : warning C4018: '<' : Konflikt zwischen signed und unsigned
    Fehler beim Ausführen von cl.exe.

    Laufschrif1.exe - 1 Fehler, 1 Warnung(en)


    wenn ich dann hier:

    void deletechar(int number)
    {
    gotoxy(number,1);
    printf(" ");
    }

    oder sonstiges hinter "number" einfüge, öffnet sich das Fenster und schließt sofort wieder, auch mit getchar() !!
     
  11. 20. April 2006
    ja, tschuldigung, muss in zeile 17 gotoxy(nummber, 3) sein.
    dann sollte er's ja eigentlich tun.

    EDIT:
    kannst du denn einen wert für die verzögerung eingeben oder schließt er sofort, nachdem du das programm startest?

    gruß
    imm0
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.