ASCII ausgabe!!



  • gelöscht



  • Schlaftänzer schrieb:

    hmm... funktioniert auch nicht. Gibt immernoch die 32 anstatt ein Leerzeichen aus. Stimmt die Formatierung eventuell nicht?

    das ist tatsächlich mekrwürdig. Vielleicht probierst du es so:

    if (e == 4)                         /*schreibt Leerzeichen wenn e = 4 ist*/
        {
          matrix[b][i] = ' ';
          mvprintw(x,y," "); 
          refresh();
        }
    


  • gelöscht



  • Statt

    for(j = 0; j <= 35; j++)              /*schreibt Bildschirm mit Einsen und Nullen voll*/ 
      { 
      for(i = 0; i <= 99; i++)
    

    benutze

    for(j = 0; j <= LINES; j++)              /*schreibt Bildschirm mit Einsen und Nullen voll*/ 
      { 
      for(i = 0; i <= COLS; i++)
    


  • mvprintw(x,y,"%c",matrix[j][0]);
    ...
    mvprintw(x,y,"%c",matrix[j][0]);
    

    Sind deine Matrixeinträge Zahlen oder Zeichen?

    asd



  • Ich meinte natürlich

    mvprintw(x,y,"%c",matrix[j][0]);
    
    mvprintw(x,y,"%d",matrix[j][0]);
    

    asd



  • asd schrieb:

    Ich meinte natürlich

    mvprintw(x,y,"%c",matrix[j][0]);
    
    mvprintw(x,y,"%d",matrix[j][0]);
    

    asd

    siehe oben, es sind ints. Aber das ist kein Problem, dafür gibt es das %c.



  • supertux schrieb:

    siehe oben, es sind ints. Aber das ist kein Problem, dafür gibt es das %c.

    Das meinte ich nicht.
    Schlaftänzer benutzt an der stelle wo das Leerzeichen eingefügt werden soll %c.
    Direkt danach beim verschieben der Spalte benutzt er aber %d.

    Daher meine Frage ob die Matrixeinträge als Buchstaben oder Zahlen gemeint sind.
    asd



  • Die Matrix soll Nullen, Einsen und ab und zu Leerzeichen ausgeben, wie im Quelltext beschrieben.

    Schlaftänzer



  • yeah...danke asd!!

    do
      {
      y1 = rand() % 99;
      y2 = rand() % 99;
      y3 = rand() % 99;
      c = 1;
      for(n = 0; n <= 30; n++)
        {
        if (c == 1)
          y = y1;
        if (c == 2)
          y == y2;
        if (c == 3)
        {
          y = y3;
          c = 0;
        }
        x = 0;
        zeichen2 = rand() % 2;    /*schreibt 0 oder 1 in Zeile 0 und Spalten 1-99*/
        matrix[b][i] = zeichen2;
        mvprintw(x,y, "%d",matrix[b][i]);
        refresh();
        e = rand() % 15;
        if (e == 4)                         /*schreibt Leerzeichen wenn e = 4*/
        {
          matrix[b][0] = zeichen3;
          mvprintw(x,y,"%c",matrix[b][0]);
          refresh();
        }
        for(j = 35; j >= 0; j--)            /*verschiebt Spalte nach unten*/
          {
          l = j - 1;
          x = j;
          if (j == 0)
          l = 0;
          matrix[j][0] = matrix[l][0];
          if (matrix[l][0] == 32)
            mvprintw(x,y,"%c",matrix[j][0]);
          else
            mvprintw(x,y,"%d",matrix[j][0]);
          refresh();
          }
        for(k = 0; k <= 5000000; k++);
        c++;
        }
      }while(getch() == ERR);
    

    Schlaftänzer



  • @Schlaftänzer:

    mach statt

    if (matrix[l][0] == 32)
    
    if (matrix[l][0] == ' ')
    

    1. ==32 ist nicht portabel. Zwar ist es auf den meisten Architekturen ' ' == 32, muss aber nicht sein.
    2. ein == ' ' erhöht die Lesbarkeit des Codes, besonders hilfreich, wenn man debuggen muss oder Fragen im Forum stellt.


Anmelden zum Antworten