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

sort nie działa

Ostatnio zmodyfikowano 2011-02-05 03:26
Autor Wiadomość
McAffey
Temat założony przez niniejszego użytkownika
sort nie działa
» 2011-02-04 21:02:37
Witam. Piszę jakiś tam program, który na końcu sortuje to co tam wyliczył. Problem w tym, że funkcja sort mi nie działa. Wyodrębniłem z kodu tylko część związaną z tym sortowaniem :
C/C++
#include <iostream>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;

int main()
{
    vector < int > zmienna;
    zmienna.push_back( 0 );
   
    zmienna[ 0 ] = 2;
   
    zmienna[ 1 ] = 3;
   
    zmienna[ 2 ] = 1;
   
    zmienna[ 3 ] = 0;
   
    zmienna[ 4 ] = 2;
   
    sort( zmienna.begin(), zmienna.end() );
   
    cout << zmienna[ 0 ] << endl << endl;
   
    cout << zmienna[ 1 ] << endl << endl;
   
    cout << zmienna[ 2 ] << endl << endl;
   
    cout << zmienna[ 3 ] << endl << endl;
   
    cout << zmienna[ 4 ] << endl;
   
    cout << endl; system( "PAUSE" );
    return 0;
}

I to wypisuje mi wartości tych zmiennych w takiej samej (a powinno w posortowanej) kolejności :
2

3

1

0

2

Dodam, że jak przypisywanie wykonałem za pomocą funkcji
push_back();
 to posortowało się dobrze, sęk w tym, że w tym głównym programie przypisywanie muszę wykonać tak jak w ww kodzie, ponieważ wygląda to tam tak:
C/C++
for( int i = 0 i < n; i++ )
{
    zmienna[ x ] = zmienna[ x ] + c[ i ];
}

insert();
 też odpada, ponieważ on za każdym razem powiększa tablicę, a to uniemożliwia poprawne działanie mojego programu. Potraficie coś poradzić na ten problem ? Z góry dziękuję i pozdrawiam ;)
P-27810
DejaVu
» 2011-02-04 21:10:11
Piszesz poza zakresem tablicy - ciesz się że program w kosmos nie wyleciał. Jest metoda taka jak reserve, za pomocą której określasz ile ma być minimum dostępnych elementów w tablicy.
P-27811
dmx81
» 2011-02-04 21:48:01
dokladnie, wektor masz o rozmiarze 1 po pierwszej operacji push_back(), a pozniej odwolujesz sie do jego "kolejnych elementow", ktore de facto do niego nie naleza - czyli piszac zmienna.begin() i zmienna.end() pewnie operujesz na jednoelementowym wektorze - sprobuj zamiast
C/C++
zmienna[ liczba1 ] = liczba2
//pisac
zmienna.push_back( liczba2 );
 dla kazdej pozycji wektora
P-27812
malan
» 2011-02-04 21:58:42
C/C++
int n;
std::vector < int > numbers;

std::cin >> n;
numbers.resize( n );

//...pętelka...
P-27816
McAffey
Temat założony przez niniejszego użytkownika
» 2011-02-04 22:27:43
Dzięki, już sobie poradziłem. Ponieważ tamta pętla którą pokazałem w pierwszym poście jest jeszcze w jednej pętli, to zrobiłem tak, że w tej drugiej pętli dałem
zmienna.push_back( 0 );
 i wtedy za każdym razem jak wracało do pętli z pierwszego postu to już wtedy wektor miał odpowiednią ilość elementów. Dzięki wielkie za pomoc ;) Pozdrawiam
P-27823
dmx81
» 2011-02-04 22:27:50
jak kolega wyzej, nie wiem dlaczego nie zapisalo sie to, co edytowalem :( czasem sie zdarza, ze dam na edytuj, pozniej na wyslij (czy na zapisz, nie pamietam) - pokazuje mi sie podglad wiadomosci u gory - powyzej okna edycji tekstu, a pozniej nie ma mojej poprawionej wiadomosci, tylko ta pierwsza

a pisze, bo  pisalem o tym, ze jesli z gory zna sie ilosc elementow, to mozna wektor.resize(rozmiar), a pozniej odwolac sie juz tak jak piszesz, ze musisz, czyli przez wektor  -> bo bez tego, moj post powyzej wyglada nijak:P bo napisales, ze uzywales juz push_back, nie wazne z reszta juz, napisz, czy te rozwiazania ci pomogly
P-27824
McAffey
Temat założony przez niniejszego użytkownika
» 2011-02-05 01:05:24
Ale hece, musiałeś mieć okno pisania nowej wiadomości otwarte a ja w między czasie zamknąłem temat i wyszło, że napisałeś do zamkniętego, bo jak zamknąłem, to jeszcze zobaczyłem czy czyjejś wiadomości nie uciąłem, teraz coś jeszcze sprawdzałem w tym temacie a on wciąż był zamknięty a pojawił się twój post, albo jakiś moderator jeszcze go otwierał albo Panie Piotrze, nowy boog znaleziony ;)
P-27825
McAffey
Temat założony przez niniejszego użytkownika
» 2011-02-05 01:05:42
test

edit: Zgadza się, otworzyłem w nowej karcie "Napisz nową wiadomość" a na tej zamknąłem temat, upewniłem się, że jest zamknięty i na tamtej karcie napisałem "test" i zrobiłem "Zapisz zmiany" i temat się nie otworzył, a post się pojawił. Niewielki błąd, ale może go Pan sobie dopisać do listy TODO ;)
P-27826
« 1 » 2
  Strona 1 z 2 Następna strona