Sortowanie rosnące i malejące
Ostatnio zmodyfikowano 2014-05-11 23:42
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ę. |
|
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<>. |
|
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: 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: for( int j = 0; j < 2 * n; j++ ) { cout << tablica[ j ] << endl; } to widać, że nie mam w tablicy liczb od -n do 0. |
|
docentpp |
» 2014-05-11 23:17:56 A teraz :-) int n = 10; int tab[ 2 * n + 1 ];
for( int i = 0; i < 2 * n + 1; i++ ) tab[ i ] =- n + i;
|
|
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.
|
|
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 #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 :) |
|
1 « 2 » |