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

Tablice znakowe[c++]

Ostatnio zmodyfikowano 2014-01-12 13:08
Autor Wiadomość
martenstan
Temat założony przez niniejszego użytkownika
Tablice znakowe[c++]
» 2014-01-11 01:14:57
Witam,Mój problem polega na usunieciu z tablicy znakowej  znaku bez uzycia klasy string.
Załóżmy że chce skopiowac to bez spacji  do drugiej tablicy.
char tablica[50]="      chce a usunac a i spacje  "; aby powstalo "chceausunacaispacje"
char tablica2[50];

robie to tak
C/C++
for( int i = 0; tablica[ i ] != '\0'; i++ )
{
    if( tablica[ i ] != 32 )
         tablica2[ i ] = tablica[ i ];
   
}
wyswietlam tablice 2 i mam jakies dziwne znaki w miejscu co usunąłem ;/ Liczę na pomoc
P-101818
leon_w
» 2014-01-11 11:14:39
Czasami naprawdę pomaga rozpisanie problemu na kartce.
Twój kod mówi: "Kopiuj, jeśli to nie spacja ( czy coś koło tego). Jeśli napotka spacje, nie robi nic (przechodzi do następnego el. tablicy). Więc, jeśli na początku będzie np 3 spacje, w tablicy2 te trzy miejsca będą puste(niezainicjowane), dlatego wychodzą dziwne znaki.
Żeby to naprawić, trzeba ustalić dla drugiej tablicy osobny licznik, ktory zwiększa się tylko wtedy, gdy coś do niej skopiujemy.
P-101823
RazzorFlame
» 2014-01-11 13:17:40
Użyj tablicy dynamicznej, czy to takie trudne?
C/C++
char tab1[ 50 ] = "a b c d e f g h i j k l m n o     ";
unsigned int tab1size = 0;
for( int i = 0; tab1[ i ] != '\0'; i++ )
     if( tab1[ i ] != 32 ) tab1size++; //32 (ASCII) to kod spacji

char * tab2 = new char[ tab1size ];
int j = 0;
for( int i = 0; tab1[ i ] != '\0'; i++ )
{
    if( tab1[ i ] != 32 )
    {
        tab2[ j ] = tab1[ i ];
        j++;
    }
}
Taki mały przykładzik ode mnie.
P-101831
martenstan
Temat założony przez niniejszego użytkownika
» 2014-01-12 13:08:22
Dzięki za pomoc.Zrozumiałem :)
P-101924
« 1 »
  Strona 1 z 1