Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dwuwymiarowa tablica string do funkcji

Ostatnio zmodyfikowano 2015-05-24 12:31
Autor Wiadomość
Szustarol
Temat założony przez niniejszego użytkownika
Dwuwymiarowa tablica string do funkcji
» 2015-05-22 17:41:02
Witam, mam kod
C/C++
#include <iostream>
#include <string>
#include <ctime>

using namespace std;

void Fillstring( string & t[][] )
{
   
   
}


int main() {
    string obszar[ 10 ][ 10 ];
    Fillstring( obszar );
   
   
   
}
Niestety przy kompilacji wywala
declaration of 't' as array of references
nie wiem jak temu zapobiec, chcę pracować na normalnej zmiennej.
P-132627
pekfos
» 2015-05-22 18:17:55
Usuń &.
P-132629
Monika90
» 2015-05-22 18:56:04
C/C++
void Fillstring( string t[][ 10 ] )
P-132630
Szustarol
Temat założony przez niniejszego użytkownika
» 2015-05-24 10:58:15
Witam ponownie
Piszę w tym samym temacie ponieważ zagadnienie poniekąd dotyczy poprzedniego problemu
mam taki kod
C/C++
#define ROWS 79
#define COLS 23
#ifdef _WIN32
#define CLEAR "cls"
#else
#define CLEAR "clear"
#endif
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>

using namespace std;


void fillchar( char obszar[][ ROWS ] ) {
    for( int j = 0; j < COLS; j++ ) {
        for( int i = 0; i < ROWS; i++ ) {
            obszar[ j ][ i ] = NULL;
        }
    }
    for( int i = 0; i < ROWS; i++ ) {
        obszar[ 0 ][ i ] = '=';
    }
    for( int i = 0; i < ROWS; i++ ) {
        obszar[ COLS - 1 ][ i ] = '=';
    }
    for( int i = 0; i < COLS; i++ ) {
        obszar[ i ][ 0 ] = '|';
    }
    for( int i = 0; i < COLS; i++ ) {
        obszar[ i ][ ROWS - 1 ] = '|';
    }
    obszar[ 0 ][ 0 ] = '/';
    obszar[ 0 ][ ROWS - 1 ] = '\\';
    obszar[ COLS - 1 ][ 0 ] = '\\';
    obszar[ COLS - 1 ][ ROWS - 1 ] = '/';
}


int main() {
    char obszar[ COLS ][ ROWS ];
    string zawartosc;
    fillchar( obszar );
    do {
        for( int j = 0; j < COLS; j++ ) {
            for( int i = 0; i < ROWS; i++ ) {
                zawartosc += obszar[ j ][ i ];
            }
            zawartosc += "\n";
        }
        cout << zawartosc;
        system( CLEAR );
    } while( 1 );
   
}
Char postanowiłem zamienić na jeden string, ponieważ wypisywanie stringu jest znacznie krótsze, co pozwala na ograniczenie migotania.
Niestety, string jest wypisywany cały czas, nawet gdy jest tam czyszczenie ekranu (ekran nie jest czyszczony, a powinien). Należy nadmienić, że nie działa
to tylko w przypadku wypisywania stringa t.j.
cout << zawartosc;
. Takie coś już np. działa
cout << "a";
 i nie zakłóca
odświeżania ekranu.
P-132691
Monika90
» 2015-05-24 11:59:09
Czyszczenie ekranu działa, ale string zawartosc staje się coraz dłuższy, bo ciągle do niego dodajesz, a nigdy go nie czyścisz. Po wyświetleniu wywołaj zawartosc.clear();



         obszar[ j ][ i ] = NULL;
NULL to zerowy wskaźnik, a nie zerowy znak.
P-132694
Monika90
» 2015-05-24 12:31:22
postanowiłem zamienić na jeden string, ponieważ wypisywanie stringu jest znacznie krótsze, co pozwala na ograniczenie migotania.
Żeby uniknąć migotania powinieneś przestać czyścić ekran. Zamiast tego po prostu przenoś kursor w lewy górny róg ekranu i drukuj stringa - to będzie tzw. podwójne buforowanie.
P-132696
« 1 »
  Strona 1 z 1