Pytanie do rozwiązania zadania domowego rozdział 44
Ostatnio zmodyfikowano 2019-02-21 21:18
wirusomaniak Temat założony przez niniejszego użytkownika |
Pytanie do rozwiązania zadania domowego rozdział 44 » 2019-02-21 19:29:01 #include <iostream>
int main() { bool pf; int x; int * tablica = nullptr, rozmiar = 2; tablica = new int[ 2 ]; std::cout << "Podawaj liczby, 0 konczy wczytywanie.\n"; while( true ) { x = 0; pf = false; int liczba[ 2 ]; for( int i = 0; i < 2; i++ ) { std::cin >> liczba[ i ]; if( liczba[ i ] == 0 ) { if( x == 1 ) rozmiar--; if( x == 0 ) rozmiar -= 2; pf = true; break; } tablica[ rozmiar -( 2 - i ) ] = liczba[ i ]; x++; } if( pf ) break; if( x == 2 ) { int * nowa = new int[ rozmiar + 2 ]; for( int i = 0; i < rozmiar; ++i ) nowa[ i ] = tablica[ i ]; delete[] tablica; tablica = nowa; rozmiar += 2; } } std::cout << "Te same liczby, ale odwrotnie!\n"; for( int i = rozmiar - 1; i >= 0; --i ) std::cout << tablica[ i ] << ' '; delete[] tablica; } Poproszę o stwierdzenie czy mój kod spełnia założenia postawione w pracy domowej. |
|
pekfos |
» 2019-02-21 19:37:18 Przekombinowane, mnóstwo kodu, w ogóle nie o to chodziło.. Ale wciąż, nowa tablica nie jest tworzona za każdym razem, gdy dodawany jest nowy element. Teoretycznie spełnia założenia. |
|
wirusomaniak Temat założony przez niniejszego użytkownika |
» 2019-02-21 20:04:13 Rozumiem. Dziękuję za analizę. Mógłbyś mnie w takim razie naprowadzić o co chodziło? |
|
pekfos |
» 2019-02-21 20:22:38 Dodałeś nową tablicę, by mieć więcej miejsca na liczby, a do tego nie trzeba dodatkowej tablicy. Wystarczy być bardziej sprytnym z użyciem tablicy, która już jest. |
|
wirusomaniak Temat założony przez niniejszego użytkownika |
» 2019-02-21 20:43:39 Dziękuję. |
|
wirusomaniak Temat założony przez niniejszego użytkownika |
» 2019-02-21 21:07:48 #include <iostream>
int main() { int x = 0; int * tablica = nullptr, rozmiar = 2; tablica = new int[ 2 ]; std::cout << "Podawaj liczby, 0 konczy wczytywanie.\n"; while( true ) { if( x == 2 ) x = 0; int liczba; std::cin >> liczba; if( liczba == 0 ) { if( x == 1 ) rozmiar--; if( x == 0 ) rozmiar -= 2; break; } tablica[ rozmiar -( 2 - x ) ] = liczba; x++; if( x == 2 ) { int * nowa = new int[ rozmiar + 2 ]; for( int i = 0; i < rozmiar; ++i ) nowa[ i ] = tablica[ i ]; delete[] tablica; tablica = nowa; rozmiar += 2; } } std::cout << "Te same liczby, ale odwrotnie!\n"; for( int i = rozmiar - 1; i >= 0; --i ) std::cout << tablica[ i ] << ' '; delete[] tablica; std::cin.get(); std::cin.get(); }
Teraz lepiej? |
|
pekfos |
» 2019-02-21 21:18:17 Wyeliminowałeś niepotrzebną tablicę, ale kod jest wciąż przekombinowany. Taką tablicę opisują 2 wielkości, dla których logika kodu będzie prostsza. rozmiar jest jedną z nich, a x nie jest tą drugą. |
|
« 1 » |