Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zahlen im Großformat ausgeben

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
03.04.2011, 12:42 Uhr
~Home Azz
Gast


Moin zusammen,

wie kann ich bei C++ Zahlen im Großformat auf dem Bildschirm ausgegeben, bei denen die Bausteine die Ziffern selbst sind?

Bsp. ich gebe 2 ein und er soll mir ausspucken:

Code:
22
2  2
  2
2
2222




Oder bei 4

Code:
4
4 4
4444
  4
  4


Wäre für Hilfe sehr dankbar :)

MfG Homaz

Edit: Code-Tags eingfügt

Dieser Post wurde am 03.04.2011 um 17:12 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.04.2011, 13:12 Uhr
öni



ich glaube so eine Funktion gibt es nicht. Vielleicht findest du im Internet eine solche vorgefertigte Funktion. Ansonsten musst du selbst eine schreiben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.04.2011, 14:59 Uhr
0xdeadbeef
Gott
(Operator)


Ich hab hier noch so was rumliegen. Wenn ich mich nicht irre, ist das aus Code gewachsen, den virtual vor langer Zeit zum Lösen eines Rätsels benutzt hatte - ich hab im Wesentlichen die Schrift auf mehr als nur Großbuchstaben erweitert.

Wie dem auch sei:

C++:
#include <ctype.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>

#ifdef _WIN32
#  define NOMINMAX
#  include <windows.h>
#else
#  include <fcntl.h>
#  include <sys/ioctl.h>
#  include <unistd.h>
#endif

static size_t get_term_columns(void) {
  size_t cols = 80;

#ifdef _WIN32
  HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
  CONSOLE_SCREEN_BUFFER_INFO info;

  if(GetConsoleScreenBufferInfo(h, &info)) {
    cols = info.dwSize.X;
  }
#else
  char const *col_env = getenv("COLUMNS");

  if(!col_env || sscanf(col_env, "%lu", &cols) != 1) {
    struct winsize wsz;
    if(!ioctl(STDOUT_FILENO, TIOCGWINSZ, &wsz)) {
      cols = wsz.ws_col;
    }
  }
#endif

  return cols;
}

static size_t size_t_max(size_t x, size_t y) {
  return x > y ? x : y;
}

static void print_phrase(char const *s) {
  static char const font[][97] = {
   /* !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*/
    "@DJ@DSBDHB@@@@@PNDNNH_L_NN@@H@BNNNONO__NQDPQAQQNONON_QQQQQ_NAND@D@A@P@L@ADPAF@@@@@@@D@@@@@@HDB@",
    "@DJJNSEDDDJD@@@PQFQQLABPQQ@@D@DQQQQQQAAQQDPIA[QQQQQQDQQQQQPBAHJ@H@A@P@B@A@@AD@@@@@@@D@@@@@@DDD@",
    "@D@_AHE@DDND@@@HYDPPJAAHQQDDB_HPYQQAQAAAQDPEAUSQQQQADQQQJJHBBHQ@@NON^NB^OFXIDKGNO^MNNQQQQQ_DDDV",
    "@D@JNDB@DD__@_@DUDHLIOODN^@@A@PHU_OAQOOA_DPCAQUQOQONDQQQDDDBDH@@@PQQQQOQQDPEDUIQQQRADQQQJQHBDHM",
    "@D@JPBU@DDND@@@BSDDP_PQDQPDDB_HD]QQAQAAYQDPEAQYQAUQPDQQUJDBBHH@@@^QAQOBQQDPCDUIQQQBNDQQUDQDDDD@",
    "@@@_NYI@DDJD@@@AQDBQHQQDQH@BD@D@AQQQQAAQQDPIAQQQAIQQDQJ[QDABPH@@@QQQQAB^QDPEDUIQO^BPDYJUJ^BDDD@",
    "@D@JDYV@HB@@D@DANN_NHNNDNF@@H@BDNQONO_ANQDQQ_QQNAVQNDNDQQD_NPN@_@^ON^NBPQNRINUINAPGNLVDJQP_HDB@",
    "@@@@@@@@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@N@@@@@@@@@@@@@@@@@@@@@@@@@@@@N@@L@@@@@AP@@@@@@@N@@@@@"
  };
  static size_t const font_x = 6;
  static size_t const font_y = 8;

  /* lpl == letters per line. Zeilenumbrüche werden sehr rudimentär forciert;
   * vernünftige Silbentrennung wäre mir viel zu viel Aufwand. */

  size_t i, j, lpl = size_t_max(get_term_columns() / 6, 1);
  /* "line" hier im Sinne von nach lpl umgebrochenen Zeilen des Eingabetextes */
  char const *pos_line;
  char const *pos_letter;

  for(pos_letter = pos_line = s; *pos_letter; pos_line += lpl) {
    for(i = 0; i < font_y; ++i) {
      for(pos_letter = pos_line; *pos_letter && (pos_letter - pos_line) < lpl; ++pos_letter) {
    char c = isprint(*pos_letter) ? *pos_letter : '?';

    for(j = 0; j < font_x; ++j) {
      putchar((font[i][c - ' '] >> j & 1) ? *pos_letter : ' ');
    }
      }
      putchar('\n');
    }
  }
}

int main(int argc, char *argv[]) {
  char text[] =
    " !\"#$%&'()*+,-./0123456789:;<=>?@"
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`"
    "abcdefghijklmnopqrstuvwxyz{|}~";

  if(argc == 1) {
    print_phrase(text);
  } else {
    size_t i;
    for(i = 1; i < argc; ++i) {
      print_phrase(argv[i]);
    }
  }

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.04.2011, 21:19 Uhr
~Home Azz
Gast


Ich hab nun ein programm geschrieben bei dem große zahlen mit zahlen als bausteinen ausgegeben werden, diese sollen jedoch von links nach rechts... und bei eigabe negativer zalen von rechts nach links erscheinen

In meinem programm erscheinen sie aber von oben nach unten... oder bei negativen zahlen von unten nach oben.

Wie kann ich das ändern?
 
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: