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

Sortowanie rosnące i malejące

Ostatnio zmodyfikowano 2014-05-11 23:42
Autor Wiadomość
skymaja
Temat założony przez niniejszego użytkownika
» 2014-05-11 21:39:16
Bez tego się nie kompiluje - mam komunikat "[tablica] was not declared"
I dlaczego to jest niepoprawne? Tak nas uczyli i we wszystkich dotychczasowych zadaniach w ten sposób tworzyłam tablicę.
P-109754
pekfos
» 2014-05-11 21:50:26
Bez tego się nie kompiluje - mam komunikat "[tablica] was not declared"
Bo tablicę przekazujesz pod nazwą tab, a nie tablica.

I dlaczego to jest niepoprawne?
Rozmiar tablicy musi być stały i znany w czasie kompilacji. Tablice o nieznanym rozmiarze są niepoprawne, ale mogą działać (nie muszą). To sprawa niestandardowych rozszerzeń w kompilatorach. Osoba, która uczy, że tak się tworzy tablice, nie wie o czym mówi.. Gdy nie zna się rozmiaru, tablicę tworzy się przez new, lub używa kontenera std::vector<>.
P-109756
skymaja
Temat założony przez niniejszego użytkownika
» 2014-05-11 22:20:52
Rozmiar jest znany, albo ja coś źle rozumiem... 2n+1 to jest chyba właśnie jej rozmiar i n jest podawane na standardowym wejściu.


Nie wiem nadal jak rozwiązać problem liczb ujemnych. Jak to zrobić, żeby mieć w tablicy liczby od -n do n, jeśli pętle mogą być od 0?

Zrobiłam w ten sposób:
C/C++
for( int i = 1; i <= n; i++ ) {
    tablica[ i ] = - i;
}
for( int i = 0; i <= n; i++ ) {
    tablica[ i ] = i;
}

ale jak potem zrobie tak:
C/C++
for( int j = 0; j < 2 * n; j++ ) {
    cout << tablica[ j ] << endl;
}
to widać, że nie mam w tablicy liczb od -n do 0.

P-109763
docentpp
» 2014-05-11 23:17:56
A teraz :-)

C/C++
int n = 10;
int tab[ 2 * n + 1 ];

for( int i = 0; i < 2 * n + 1; i++ )
     tab[ i ] =- n + i;

P-109770
ArgonZapan
» 2014-05-11 23:29:32
Napisz dokładnie, słowo w słowo jak brzmi to zadanie.

2n+1 - jest nieznaną odgórnie wartością bo n może mieć rożną wartość, np 3, 5 ,7
95 - to jest znana odgórnie wartość i można ją przydzielić do tablicy statycznej.
P-109771
skymaja
Temat założony przez niniejszego użytkownika
» 2014-05-11 23:42:41
docentpp już rozwiązał problem :)

wklejam poprawne zadanie, może się komuś przyda
C/C++
#include <iostream>

using namespace std;

void sortuj( int * tablica, int n, int sort ) {
   
    if( sort == 1 ) {
        for( int i = 0; i < 2 * n; i++ ) {
            for( int j = 0; j < 2 * n; j++ ) {
                if( tablica[ j ] > tablica[ j + 1 ] ) {
                    swap( tablica[ j ], tablica[ j + 1 ] );
                }
            }
        }
    }
   
    else if( sort == 2 ) {
        for( int i = 0; i < 2 * n; i++ ) {
            for( int j = 0; j < 2 * n; j++ ) {
                if( tablica[ j ] < tablica[ j + 1 ] ) {
                    swap( tablica[ j + 1 ], tablica[ j ] );
                }
            }
        }
    }
   
}

int main() {
    int n;
    cout << "podaj n" << endl;
    cin >> n;
    int tablica[ 2 * n + 1 ];
   
    for( int i = 0; i < 2 * n + 1; i++ ) {
        tablica[ i ] = - n + i;
    }
   
    cout << "posortowane rosnaco" << endl;
    sortuj( tablica, n, 1 );
    for( int j = 0; j < 2 * n + 1; j++ ) {
        cout << tablica[ j ] << endl;
    }
    cout << "posortowane malejaco" << endl;
    sortuj( tablica, n, 2 );
    for( int j = 0; j < 2 * n + 1; j++ ) {
        cout << tablica[ j ] << endl;
    }
    return 0;
}

dzięki wszystkim za pomoc :)
P-109772
1 « 2 »
Poprzednia strona Strona 2 z 2