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

[C] Problem ze zmianą miejsc elementów z użyciem alokowania dynamicznego

Ostatnio zmodyfikowano 2016-03-15 11:14
Autor Wiadomość
jkoan
Temat założony przez niniejszego użytkownika
[C] Problem ze zmianą miejsc elementów z użyciem alokowania dynamicznego
» 2016-03-15 00:40:26
Witam.
Mam problem z zamianą elementów w tablicy alokowanej dynamicznie. Przy próbie kompilowania programu w Visual Studio 2010 otrzymuję błąd:
error C2106: '=' : left operand must be l-value
 <-- slowo[j+1] = slowo[j];

Proszę o pomoc jak zmienić porządek, nie wykonując żadnych nowych alokacji zmiennych dynamicznych, a jedynie zamieniając adres w komórkach tablicy wskaźników.

C/C++
FILE * plik = wczytaj_plik( "Podaj nazwe pliku (z roszczerzeniem) do wczytania:\n", "r" );
char( * slowo )[ DLUGOSC_NAZWY_NAPISU + 1 ];
char ** tab = NULL;

slowo =( char( * )[ DLUGOSC_NAZWY_NAPISU + 1 ] ) malloc( N * sizeof * slowo );

for( int i = 0; i < N; i++ )
{
    fscanf_s( plik, "%s", & slowo[ i ], DLUGOSC_NAZWY_NAPISU );
    if( feof( plik ) )
    {
        break;
    }
}

for( int i = 0; i < N; ++i )
{
    printf( "%s \n", slowo[ i ] );
}

//zamiana liczb
for( int i = 0; i < N - 1; i++ )
{
    for( int j = 0; j < N - 1 - i; j++ )
    {
        if( i + 1 < N )
        {
            if(( slowo[ j + 1 ] ) % 2 == 0 ) &&(( slowo[ j ] ) % 2 == 1 ) )
            {
                //zamiana
                slowo[ j + 1 ] = slowo[ j ];
            }
        }
    }
}
P-146023
darko202
» 2016-03-15 11:14:24
prawdopodobnie błąd wynika to z problemu sposobu przepisywania c-stringów
Od tego są funkcje jak strcpy()
http://www.cplusplus.com​/reference/clibrary/cstring​/strcpy/

spróbuj zamiast
slowo[ j + 1 ] = slowo[ j ];

strcpy(slowo[ j + 1 ],slowo[ j ]);
P-146027
« 1 »
  Strona 1 z 1