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

Problem z programem "Mediana"

Ostatnio zmodyfikowano 2015-12-25 11:40
Autor Wiadomość
Mamut
Temat założony przez niniejszego użytkownika
Problem z programem "Mediana"
» 2015-12-25 01:21:46
Witam. Otóż mam tu program i mam pewien problem. Mianowicie program raz działa właściwie raz nie. Czyli raz faktycznie sortuje podane liczby, a raz nie sortuje wcale, albo już w ogóle wstawia jakieś dziwne wartości. Proszę o pomoc w rozwiązaniu problemu.
C/C++
#include <iostream>

using namespace std;

void Sortowanie( int tab[], int size )
{
    int k;
    for( int i = 0; i < size; i++ )
    {
        k = i;
        for( int j = i + 1; j < size; j++ )
        if( tab[ j ] < tab[ k ] )
             k = j;
       
        swap( tab[ k ], tab[ i ] );
    }
}

int main()
{
    int ilosc = 0;
   
    cout << "Ile liczb ma byc w programie? Podaj ilosc: " << endl;
   
    cin >> ilosc;
   
    int * tabl_liczb = new int[ ilosc ]; //dzieki temu zostanie zarezerwowana odpowiednia ilosc liczb w tablicy tabl_liczb
   
    cout << "Wprowadz kolejno liczby, kazda zatwierdzajac klawiszem ENTER: " << endl;
   
    int zmienna = 0;
    for( int i = 0; ilosc > i; i++ )
    {
        cin >> zmienna; //nadanie wartosci liczbom
        tabl_liczb[ i ] = zmienna;
    }
   
    /*  for (int i = 0; i < ilosc; i++)   //sprawdzanie wartosci i ilosci liczb
       {
           cout << "Element nr: "<< i <<" ma wartosc: " <<tabl_liczb[i]<<endl;
       }*/
   
    Sortowanie( tabl_liczb, zmienna );
   
   
    for( int i = 0; i < ilosc; i++ ) //sprawdzanie wartosci i ilosci liczb
    {
        cout << "Element nr: " << i << " ma wartosc: " << tabl_liczb[ i ] << endl;
    }
   
    /* if ((ilosc % 2) == 0)
       {
         int srodkowa;
   
         srodkowa = (ilosc / 2);
   
         int a, b;
   
         tabl_liczb[srodkowa] = a;
         tabl_liczb[srodkowa + 1] = b;
   
         int c;
   
        c = (a + b) / 2;
   
         cout <<c;
       } */
   
   
    return 0;
}

P-142328
1aam2am1
» 2015-12-25 02:23:35
Sortowanie( tabl_liczb, zmienna ); ?
Sortowanie( tabl_liczb, ilosc );
P-142329
Gibas11
» 2015-12-25 06:26:21
1. Tak jak napisał kolega wyżej, przekazujesz zła zmienna jako drugi argument funkcji "Sortowanie", teraz pewność, że algorytm działa możesz mieć wtedy, kiedy ostatnia wprowadzona liczba będzie równa ilości wprowadzonych liczb. Choć oczywiście moga się zdarzyć inne specyficzne przypadki, w których dostaniesz dobry wynik.
2. Nie musisz zerować zmiennych, które i tak zaraz nadpiszesz cinem albo czymś innym. Świetny sposób na oznaczanie przybliżonego zastosowania zmiennych w kodzie. Te zerowane będa do czegoś używane i musza wynosić 0 a inne i tak szybko zostana nadpisane.
P-142331
Mamut
Temat założony przez niniejszego użytkownika
» 2015-12-25 11:40:19
Dziękuję bardzo za pomoc :) W sumie to nie wiem czemu dałem za argument "zmienna" zamiast "ilość", ale już nie ważne, wszystko teraz działa jak należy :)
P-142340
« 1 »
  Strona 1 z 1