[C++] Sortowanie przez wstawianie

robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Sortowanie przez wstawianie

Post autor: robertos18 »

Jesli chodzi o wylosowanie liczb, a nastepnie posortowanie tych liczb to wszystko rozumiem. Jeżeli chciałbym zainicjowac teraz recznie jakies liczby w tablicy to jak się to robilo? Usuwam voida"losowanie_liczb" i voida"wypisz" i co musze tam wstawić ?

Kod: Zaznacz cały

#include <iostream>
#include<cstdlib>>
#include<ctime>
using namespace std;

void losowanie_liczb(int tablica[],int ile)
{
    srand(time(NULL));
    for(int i=0;i<ile;i++)
    {
        tablica[i]=rand()%20+10;
    }
}
void wypisz(int tablica[],int ile)
{
    for(int i=0;i<ile;i++)
        cout<<i+1<<": "<<tablica[i]<<endl;
        cout<<endl;
}
void Sortowanie( int tablica[], int ile )
{
    int temp, j;

    for( int i = 1; i < ile; i++ )
    {
        temp = tablica[ i ];

        for( j = i - 1; j >= 0 && tablica[ j ] > temp; j-- )
             tablica[ j + 1 ] = tablica[ j ];

        tablica[ j + 1 ] = temp;
    }
}


int main ()

{
int dane[10];
losowanie_liczb(dane,10);
wypisz(dane,10);
Sortowanie(dane,10);
wypisz(dane,10);

    return 0;
}
Ostatnio zmieniony 12 lut 2015, o 20:07 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
pasasap
Użytkownik
Użytkownik
Posty: 83
Rejestracja: 13 wrz 2011, o 19:07
Płeć: Mężczyzna
Podziękował: 33 razy
Pomógł: 5 razy

[C++] Sortowanie przez wstawianie

Post autor: pasasap »

Możesz inicjować w miejscu definicji zmiennej:

Kod: Zaznacz cały

int dane[] = {1,2,6,4,5,7,8,5,4,5};
W ten sposób nie musisz podawać rozmiaru tablicy, kompilator sam określi ten rozmiar. Możesz też podać, ale liczba elementów wtedy musi się zgadzać z rozmiarem lub być mniejsza.
Możesz też się odwoływać do każdego elementu i przypisywać pojedynczo:

Kod: Zaznacz cały

int dane[10];
dane[0]=1;
dane[1]=2;
dane[2]=6;
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Sortowanie przez wstawianie

Post autor: robertos18 »

Zatem mam taki kod:

Kod: Zaznacz cały

#include <iostream>
#include<cstdlib>>
#include<ctime>
using namespace std;

void Sortowanie( int tablica[], int ile )
{
    int temp, j;

    for( int i = 1; i < ile; i++ )
    {
        temp = tablica[ i ];

        for( j = i - 1; j >= 0 && tablica[ j ] > temp; j-- )
             tablica[ j + 1 ] = tablica[ j ];

        tablica[ j + 1 ] = temp;
    }
}


int main ()

{
int dane[]={1,4,6,2,5,0,1,2,5};
sortowanie(dane,10);


    return 0;
}
I nie wiem co zle robie ;/
pasasap
Użytkownik
Użytkownik
Posty: 83
Rejestracja: 13 wrz 2011, o 19:07
Płeć: Mężczyzna
Podziękował: 33 razy
Pomógł: 5 razy

[C++] Sortowanie przez wstawianie

Post autor: pasasap »

Tworzysz tablicę 9-elementową. Policz sobie, ile liczb tam wpisałeś. Potem chcesz sortować tablicę podając jej rozmiar jako 10. W pewnym momencie odwołujesz się do miejsca, do którego program nie ma dostępu. Po prostu wychodzisz poza zakres tablicy. Masz trzy wyjścia:
  • Dodać rozmiar tablicy: int dane[10]={...}; Wtedy, jak podasz mniej liczb, niż wynosi rozmiar tablicy, to pozostała część tablicy jest wypełniana zerami.
  • Dodać jeszcze jedną liczbę do tablicy.
  • Zmniejszyć w wywołaniu funkcji sortowanie() rozmiar tablicy z 10 na 9.
Wybierz jedno z tych rozwiązań. Jedno!
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++] Sortowanie przez wstawianie

Post autor: robertos18 »

No i to sie nazywa prawilna pomoc, dzieki!
ODPOWIEDZ