Newsgroup: it.comp.lang.c++
Titolo: Fondamenti 2... Un'aiuto!! ;)

Ciao a Tutti!!
Dovrei realizzare un "progettino" per l'esame di Fondamenti
2...
Deve essere implementato in C++ (quindi sfruttando l'OOP) e
dovrebbe, possibilmente, fare uso di qualche struttura dati
tipo pile, code, etc...
Per il resto non c'e' nessun vincolo!! ;)
Quindi mi chiedevo... se avevate qualcosa.. magari di gia'
fatto (visto che l'esame e' prossimo e ne devo preparare
altri 2 :))))) ) , o se avevate qualche "buon"
suggerimento...;)
Grazie in anticipo a chiunque mi dara' una mano...
Ciao,
   Silvio

...


Implementa un Display virtuale;
Considera un display ( per applicazioni embedded ) ad esempio 4righe x 40
colonne;
il display virtuale che si vuole implementare é un diplay generale, non
vincolato al 4x40 ma rXc, con la possibilità di mostrare più pagine;
class  CDisplay
{
  public:
  CDisplay( short  n_pag, short  n_row, short n_col );
  ~CDisplay( void );
  Write( short n_pag, short  n_row, short n_col, BYTE  mode, char *str );
  WriteLine( short n_pag, short  n_row, BYTE  mode, char *str );
};
mi pare un progettino SEMPLICE e molto utile ... serve anche a me !!
ciao


>Implementa un Display virtuale;
Cavolo!! :)
Grazie per l'idea...:)))
Ma non hai nulla di piu' facile? :)))
Magari che hai gia' implementato tu..;)
Ciao,
   Silvio

...


Questo é un programmello di prova ... divertiti !!
/* ************************************************************************
*
*
*
* Display.cpp
*
*
*
*
*
*
*
* Autore:  Ing.   Matteo  MAGLIO
*
*
*
*
*
*
*
* ************************************************************************
*/
#include  <conio.h>
#include  <stdio.h>
#include  <string.h>
#include  <windows.h>
/* ------------------------------------------------------------------------
*/
#define  LIGHTGREEN       10
#define  LIGHTRED         12
#define  YELLOW           14
#define  WHITE            15
/* ------------------------------------------------------------------------
*/
static  HANDLE    hStdOut;
/* ------------------------------------------------------------------------
*/
void  ConsoleGotoXY( int x, int y )
{
  COORD  coord = { x, y };
  if( INVALID_HANDLE_VALUE == hStdOut )
  {
    return;
  }
  SetConsoleCursorPosition( hStdOut , coord );
}  /*    */
/* ------------------------------------------------------------------------
*/
void  SetTextBkg( int  color )
{
  CONSOLE_SCREEN_BUFFER_INFO  csbInfo;
  if(  GetConsoleScreenBufferInfo( hStdOut, &csbInfo ) )
  {
  }
  SetConsoleTextAttribute( hStdOut, color<<4 );
}  /*    */
/* ------------------------------------------------------------------------
*/
void  SetTextColor( int  color )
{
  CONSOLE_SCREEN_BUFFER_INFO  csbInfo;
  if(  GetConsoleScreenBufferInfo( hStdOut, &csbInfo ) )
  {
  }
  SetConsoleTextAttribute( hStdOut, color );
}  /*    */
/* ------------------------------------------------------------------------
*/
BOOL  InitConsoleGotoXY( void )
{
  if( INVALID_HANDLE_VALUE == (hStdOut =
GetStdHandle( STD_OUTPUT_HANDLE )) )
  {
    return( FALSE );
  }
  SetTextColor( LIGHTGREEN );
  return( TRUE );
}  /*    */
/* ------------------------------------------------------------------------
*/
#define  MAX_COL   40
#define  MAX_ROW    4
#define  MAX_PAG    6
class  CDisplay
{
  char   ch_clear;
  char   b[ MAX_ROW*(MAX_COL+1)*MAX_PAG ];
  public:
  CDisplay( char  ch_fill  );
~CDisplay( void );
  void  Write( short  n_row, short  n_col, char  mode, char  *str, short
n_pag = 1 );
  void  Paint( short  n_pag = 1 );
};
/* ------------------------------------------------------------------------
*/
void  CDisplay::Write( short  n_row, short  n_col,
                       char   mode,  char  *str,   short  n_pag )
{
  int  idx;
  idx = strlen( str );
  /*
  if( idx > ( (sh_MaxRow - 1 - n_row) * (sh_MaxCol - 1 - n_col) ) )
  {
    return;
  }
  */
  if( (n_pag < 0) || (n_col < 0) || (n_row < 0) )
  {
    return;
  }
  memcpy( &b[ n_row*(MAX_COL + 1) + n_col + (MAX_ROW*(MAX_COL+1)*n_pag)],
str, idx );
}  /*    */
/* ------------------------------------------------------------------------
*/
void  CDisplay::Paint( short  n_pag )
{
  int   row = 2;
  int   idx,i_base;
  for( idx = 0; idx < MAX_ROW;  )
  {
    b[ ++idx*(MAX_COL+1) + (MAX_ROW*(MAX_COL+1)*n_pag)] = 0;
  }
  idx = 0;
  i_base = (MAX_ROW*(MAX_COL+1)*n_pag);
  ConsoleGotoXY( 1, row++ ); printf( "
1234567890123456789012345678901234567890" );
  ConsoleGotoXY( 1, row++ ); printf( " %s", &b[ idx++*(MAX_COL+1) + 1 +
i_base ] );
  ConsoleGotoXY( 1, row++ ); printf( " %s", &b[ idx++*(MAX_COL+1) + 1 +
i_base ] );
  ConsoleGotoXY( 1, row++ ); printf( " %s", &b[ idx++*(MAX_COL+1) + 1 +
i_base ] );
  ConsoleGotoXY( 1, row++ ); printf( " %s", &b[ idx++*(MAX_COL+1) + 1 +
i_base ] );
  ConsoleGotoXY( 1, row++ ); printf( "
1234567890123456789012345678901234567890" );
}  /*    */
/* ------------------------------------------------------------------------
*/
CDisplay::CDisplay( char  ch_fill  )
{
  InitConsoleGotoXY();
  ch_clear  = ch_fill;
  memset( b, ch_clear, MAX_ROW*(MAX_COL+1)*MAX_PAG );
}  /*    */
/* ------------------------------------------------------------------------
*/
CDisplay::~CDisplay( void )
{
}  /*    */
/* ------------------------------------------------------------------------
*/
main()
{
  CDisplay  MyDisplay( ' ' );
  MyDisplay.Write( 0, 5,  'C', "Pag. 0", 0 );
  MyDisplay.Write( 1, 6,  'C', "Pag. 1", 1 );
  MyDisplay.Write( 2, 7,  'C', "Pag. 2", 2 );
  MyDisplay.Write( 3, 8,  'C', "Pag. 3", 3 );
  MyDisplay.Write( 0, 9,  'C', "Pag. 4", 4 );
  MyDisplay.Write( 1, 10, 'C', "Pag. 5", 5 );
  MyDisplay.Paint( 0 );
  getch();
  MyDisplay.Paint( 1 );
  getch();
  MyDisplay.Paint( 2 );
  getch();
  MyDisplay.Paint( 3 );
  getch();
  MyDisplay.Paint( 4 );
  getch();
  MyDisplay.Paint( 5 );
  getch();
  return 0;
}  /*  */
/* ------------------------------------------------------------------------
*/
/* -------------------------------- END -----------------------------------
*/
/* ------------------------------------------------------------------------
*/


>Questo é un programmello di prova ... divertiti !!
Non so come ringraziarti...;) Sia per l'interessamento che per l'aiuto...:))
Ma il mio prog.. dovrebbe girare sotto Linux...;)))

...
