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

Jeden blad na ok sto prob

Ostatnio zmodyfikowano 2013-05-19 20:27
Autor Wiadomość
pekfos
» 2013-05-19 19:43:18
Jesteś tego pewien?
http://en.wikipedia.org/wiki/Selection_sort (przykład w C)
P-83334
usmiech
Temat założony przez niniejszego użytkownika
» 2013-05-19 20:09:44
C/C++
void selectionSort( int list[], int length )
{
    int index;
    int smallestIndex;
    int location;
    int temp;
    for( index = 0; index < length - 1; index++ )
    {
        //Step a
        smallestIndex = index;
        for( location = index + 1; location < length; location++ )
        if( list[ location ] < list[ smallestIndex ] )
             smallestIndex = location;
        //Step b
        temp = list[ smallestIndex ];
        list[ smallestIndex ] = list[ index ];
        list[ index ] = temp;
    }
}
//C++ Programing ...., D.S. Malik..... moge podac kod z innych ksiazek.... ja sie nie //kloce, chce poznac problem i dzieki za pomoc :-)
// a odnosnie wikipedii to tam wcale nie jest inaczej... swap jest taki sam :)
P-83335
pekfos
» 2013-05-19 20:16:54
Ten kod już jest poprawny.
C/C++
smallestIndex = index;
for( location = index + 1; location < length; location++ )
// { // to dodałeś
if( list[ location ] < list[ smallestIndex ] ) //Wcześniej tylko ten if był w pętli
     smallestIndex = location;
//Step b
temp = list[ smallestIndex ];
list[ smallestIndex ] = list[ index ];
list[ index ] = temp;
// }
P-83337
usmiech
Temat założony przez niniejszego użytkownika
» 2013-05-19 20:19:53
Rozumiem.... dziekuje pekfos :-) ....niby tylko klamerka ..;-)
Chcialem , zeby ladniej kod wygladal hahhahahahahahahaa
P-83338
usmiech
Temat założony przez niniejszego użytkownika
» 2013-05-19 20:27:12
Problem zlikwidowany, dziekuje pekfos i ison :)
poprawiony kod

C/C++
#include "stdafx.h"

#include <iostream>

using namespace std;
int sumaDigits( int tablica );
void selectionSort( int tablica[], int rozmiar );
void selectionSortDigits( int tablica[], int rozmiar );
void selectionSortDigitsNajmniejszyNumer( int tablica[], int rozmiar );

/**************************************************************************************/

int main()
{
    const int tablica_rozmiar = 5;
    int tablica[ tablica_rozmiar ];
   
    cout << "Wprowadz " << tablica_rozmiar << " liczb/y/ : \n\n";
    for( int i = 0; i < tablica_rozmiar; ++i )
    {
        cout << "Podaj liczbe #[" << i << "]: ";
        while( !( cin >> tablica[ i ] ) )
        {
            cout << "\nPrzykro mi... ale oczekiwana byla liczba."
            << "  Sprobuj jeszcze raz!\n" << endl;
            cin.clear();
            cin.ignore( 10000, '\n' );
            cout << "Podaj liczbe #[" << i << "]: ";
        }
    }
   
    cout << "\nWprowadzone przez Ciebie liczby to: \n";
   
    for( int i = 0; i < tablica_rozmiar; ++i )
    {
        cout << tablica[ i ] << ", ";
    }
    cout << endl;
   
    selectionSort( tablica, tablica_rozmiar );
   
    cout << "\nPosortowana tablica od liczby najmniejszej do najwiekszej to: \n";
   
    for( int i = 0; i < tablica_rozmiar; ++i )
    {
        cout << tablica[ i ] << ", ";
    }
    cout << endl;
   
    selectionSortDigits( tablica, tablica_rozmiar );
   
    cout << "\nPosortowana tablica od najmniejszej sumy  skladnikow liczb to: \n";
   
    for( int i = 0; i < tablica_rozmiar; ++i )
    {
        cout << tablica[ i ] << ", ";
    }
   
    cout << endl;
   
    cout << "\nLiczba/y/ z najmniejsza suma jej skladnikow to: \n";
    selectionSortDigitsNajmniejszyNumer( tablica, tablica_rozmiar );
   
   
    cout << endl;
   
    system( "pause" );
    return 0;
}

/********************************************************************************************/

int sumaDigits( int tablica )
{
    int suma = 0;
    while( tablica > 0 )
    {
        suma += tablica % 10;
        tablica /= 10;
    }
    return suma;
}
/*************************************************/
void selectionSort( int tablica[], int rozmiar )
{
    int index;
    int najmniejszyIndex;
    int location;
    int temp;
    for( index = 0; index < rozmiar - 1; index++ )
    {
        najmniejszyIndex = index;
       
        for( location = index + 1; location < rozmiar; location++ )
       
        if( tablica[ location ] < tablica[ najmniejszyIndex ] )
             najmniejszyIndex = location;
       
        temp = tablica[ najmniejszyIndex ];
        tablica[ najmniejszyIndex ] = tablica[ index ];
        tablica[ index ] = temp;
       
    }
}
/**************************************************/
void selectionSortDigits( int tablica[], int rozmiar )
{
    int index;
    int najmniejszyIndex;
    int location;
    int temp;
    for( index = 0; index < rozmiar - 1; index++ )
    {
       
        najmniejszyIndex = index;
       
        for( location = index + 1; location < rozmiar; location++ )
       
        if( sumaDigits( tablica[ location ] ) < sumaDigits( tablica[ najmniejszyIndex ] ) )
             najmniejszyIndex = location;
       
        temp = tablica[ najmniejszyIndex ];
        tablica[ najmniejszyIndex ] = tablica[ index ];
        tablica[ index ] = temp;
       
    }
}
/******************************************************/
void selectionSortDigitsNajmniejszyNumer( int tablica[], int rozmiar )
{
    int minIndex = 0;
    int najmniejszyNumer = 0;
   
    for( int index = 0; index < rozmiar; ++index )
    {
        if( sumaDigits( tablica[ minIndex ] ) > sumaDigits( tablica[ index ] ) )
        {
            minIndex = index;
            tablica[ najmniejszyNumer ] = tablica[ index ];
        }
    }
    for( int i = 0; i < rozmiar; ++i )
    {
        if( sumaDigits( tablica[ i ] ) <= sumaDigits( tablica[ najmniejszyNumer ] ) )
        {
            cout << tablica[ i ] << ", ";
        }
    }
}
P-83339
1 « 2 »
Poprzednia strona Strona 2 z 2