Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Algorithmus... bitte um Hilfe!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.10.2003, 16:05 Uhr
~Robb
Gast


Hallöchen,

wäre echt nett wenn Ihr mir helfen könntet. Folgendes Problem:

Ich habe ein Programm entwickelt das auf dem Bildschirm eine Art Lauflicht erzeugt.
Der Algorithmus des Programms ist jedoch sehr primitiv, ja, eigentlich kann man nicht von einen Algorithmus sprechen.

Hier das Programm:




C++:
#include <stdio.h>
#include <curses.h>

#define TEMPO 5000000
/************************************************************************/
void main(void)
{
  unsigned long int i;

initscr();                           /* Initialisiert das Terminal     */
cbreak();                            /* Zeichen sofort weiterreichen   */
noecho();                            /* Kein Echo bei getch()          */
//echo();                            ||MLC||
nonl();                              /* Echo bei getch()               */
intrflush(stdscr, FALSE);
keypad(stdscr, TRUE);       /* Keine neue Zeile bei Return    */
nodelay(stdscr, TRUE);      /* Ziffernblock aktivieren.                */

  do
  {
    move(8,8);
    printw("     O     O     O     O     O     O     O     O     O     O");
    refresh();
    for (i = 1; i <= TEMPO; i++);
    
    move(8,8);
    printw("    O     O     O     O     O     O     O     O     O     O ");
    refresh();
    for (i = 1; i <= TEMPO; i++);
    
    move(8,8);
    printw("   O     O     O     O     O     O     O     O     O     O  ");
    refresh();
    for (i = 1; i <= TEMPO; i++);
    
    move(8,8);
    printw("  O     O     O     O     O     O     O     O     O     O   ");
    refresh();
    for (i = 1; i <= TEMPO; i++);
    
    move(8,8);
    printw(" O     O     O     O     O     O     O     O     O     O    ");
    refresh();
    for (i = 1; i <= TEMPO; i++);
    
    move(8,8);
    printw("O     O     O     O     O     O     O     O     O     O     ");
    refresh();
    for (i = 1; i <= TEMPO; i++);

  }while( getch() == ERR );   /* nicht blockierender Aufruf von getch()  */
  endwin();                   /* ERR = Rueckgabew. für Fehler in ncurses*/
}
/* Normalen Modus wieder herstellen       */




Nun muss ich das Programm verbessern indem ich einen es neu programmiere, diesmal mit Algorithmus! Als Anregung bekam ich folgendes:

- Holen Sie die Anfangsdaten aus einem Array oder einer Struktur.
- Geben Sie die Ziffer Null inerhalb einer Schleife an den richtigen Stellen auf dem Schirm aus.


Wäre echt nett wenn IHR mir weiterhelfen könntet,

VIELEN DANK!!!

Gruss Robb
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.10.2003, 09:49 Uhr
virtual
Sexiest Bit alive
(Operator)


Hört sich nach Hausaufgabe an. Werden nur gegen Bezahlung oder eigenen Ansatz gemacht.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.10.2003, 10:00 Uhr
geissbock




Zitat:
~Robb postete
- Holen Sie die Anfangsdaten aus einem Array oder einer Struktur.
- Geben Sie die Ziffer Null inerhalb einer Schleife an den richtigen Stellen auf dem Schirm aus.




das sind garantiert hausaufgaben!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.10.2003, 10:08 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


frag mich übrigens was


C++:
for (i = 1; i <= TEMPO; i++);



bringen soll
ein guter compiler optimiert einem das weg und zwar nach


C++:
i = TEMPO;



ich denke du solltest sleep() o.ä. verwenden
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.10.2003, 20:59 Uhr
Anfänger00




Zitat:
FloSoft postete
frag mich übrigens was


C++:
for (i = 1; i <= TEMPO; i++);



bringen soll
ein guter compiler optimiert einem das weg und zwar nach


C++:
i = TEMPO;



ich denke du solltest sleep() o.ä. verwenden



Bist du da auch wircklich sicher?
Ich hab das mal ausprobiert und das haut bei mir nicht!

Das hieße ja dann: solange i gleich TEMPO ist tue dies...
(i ist aber (noch)nicht TEMPO also:break)

Wäre ja sonst auch unlogisch einen <=-Operator einzuführen,oder?

Dieser Post wurde am 29.10.2003 um 21:00 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.10.2003, 21:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
Robb hat lauter leere Schleifen, die optimiert dir normalerweiße ein compiler weg! (jedenfalls wenn man optimierung aktiviert hat, weiß nicht ob es der gcc von selbst macht)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.10.2003, 22:29 Uhr
Anfänger00



Ja,da mit den leeren Schleifen hast du Recht.Jetzt sehe ich's auch!
Das soll bewirken,das i gleich tempo ist,aha und der macht das mit ner schleife,das find ich komisch!

Dieser Post wurde am 29.10.2003 um 22:30 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.10.2003, 22:36 Uhr
0xdeadbeef
Gott
(Operator)


Ich denke, das soll sowas wie ein hausgemachtes sleep sein. Machs besser so:

C++:
#include <unistd.h>

/*...*/

usleep(anzahl_millisekunden);


Ansonsten gehts dabei ja im wesentlichen darum, wieviele Leerzeichen vor der eigentlichen Sequenz ausgegeben werden sollen, und das ist ne einfache for-Schleife. Aber wie gesagt, es sieht nach Hausaufgabe aus. Probiers erstmal selbst, und wenn du nen Ansatz hast, helfen wir dir gerne.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.10.2003, 22:40 Uhr
Anfänger00



Ach klar,"TEMPO" is trotzdem doof
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: