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

Sortowanie zmiennych

Ostatnio zmodyfikowano 2016-01-15 17:56
Autor Wiadomość
draco892
Temat założony przez niniejszego użytkownika
Sortowanie zmiennych
» 2016-01-12 22:44:03
Witam forumowiczów, poniżej kod źródłowy mojego programu. Problem polega na tym, że nie umiem posortować zmiennych c,d,e,f,g,h rosnąco, próbowałem już metodą bąbelkową i nie wyszło.
C/C++
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>

int i, j, c, d, e, f, g, h, r, n;
int a[ 1000 ];

main()
{
    srand( time( NULL ) );
    printf( "Podaj liczbe symulacji rzutu kostka(max1000) n=" );
    scanf( "%d", & n );
    n--;
    for( i = 0; i <= n; i++ )
    {
        a[ i ] = rand() % 6 + 1;
        printf( "%d ", a[ i ] );
    }
   
    c = d = e = f = g = h = 0;
    for( i = 0; i <= n; i++ )
   
         if( a[ i ] == 1 ) c++;
    else
         if( a[ i ] == 2 ) d++;
    else
         if( a[ i ] == 3 ) e++;
    else
         if( a[ i ] == 4 ) f++;
    else
         if( a[ i ] == 5 ) g++;
    else
         if( a[ i ] == 6 ) h++;
   
    {
       
        printf( "Ilosc jedynek: %d\n", c );
        printf( "Ilosc dwojek: %d\n", d );
        printf( "Ilosc trojek: %d\n", e );
        printf( "Ilosc czworek: %d\n", f );
        printf( "Ilosc piatek: %d\n", g );
        printf( "Ilosc szostek: %d\n", h );
    }
   
    system( "pause" );
    return 0;
}
Będę wdzięczny za pomoc.
P-143414
DejaVu
» 2016-01-12 22:45:38
P-143416
draco892
Temat założony przez niniejszego użytkownika
Do DejaVu
» 2016-01-12 22:50:38
Dzięki, już widziałem ten link, chodzi o to, że nie potrafię zastosować metody bąbelkowej do tych danych.
P-143418
michal11
» 2016-01-13 00:02:07
Ale ty chcesz posortować tablicę a czy policzyć ile jest w niej poszczególnych liczb ?
P-143421
draco892
Temat założony przez niniejszego użytkownika
Do michal11
» 2016-01-13 11:22:39
Obecnie program losuje liczby z przedziału od 1 do 6 i pokazuje ile jest jedynek, dwójek itd. za pomocą zmiennych c,d,e,f,g,h, potrzebuję posortować zmienne rosnąco, czyli żeby program pokazywał, że np. Liczba trójek<liczba jedynek<liczba szostek itd.
P-143428
darko202
» 2016-01-13 11:30:18
czyli potrzebujesz użyć na tej tablicy któregoś z algorytmów sortujących

http://www.algorytm.org​/algorytmy-sortowania/
P-143430
mateczek
» 2016-01-13 12:09:21
w c++ się skompiluje ale w C nie ogarniam choć starałem się na strukturach !!!
C/C++
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<iostream>

int i, j, c, d, e, f, g, h, r, n;
int a[ 1000 ];
struct element {
    int wynik;
    int licznikTrafien;
};

element tablicaTrafien[ 6 ] { { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 } };

main()
{
    srand( time( NULL ) );
    printf( "Podaj liczbe symulacji rzutu kostka(max1000) n=" );
    scanf( "%d", & n );
    n--;
    for( i = 0; i <= n; i++ )
    {
        a[ i ] = rand() % 6 + 1;
        printf( "%d ", a[ i ] );
    }
   
    for( i = 0; i <= n; i++ )
   
         if( a[ i ] == 1 ) tablicaTrafien[ 0 ].licznikTrafien++;
    else
         if( a[ i ] == 2 ) tablicaTrafien[ 1 ].licznikTrafien++;
    else
         if( a[ i ] == 3 ) tablicaTrafien[ 2 ].licznikTrafien++;
    else
         if( a[ i ] == 4 ) tablicaTrafien[ 3 ].licznikTrafien++;
    else
         if( a[ i ] == 5 ) tablicaTrafien[ 4 ].licznikTrafien++;
    else
         if( a[ i ] == 6 ) tablicaTrafien[ 5 ].licznikTrafien++;
   
    {
        //Sortowanie bombelkowe
        for( int i = 0; i < 6; i++ ) {
            for( int j = 0; j < 6 - 1; j++ ) {
                if( tablicaTrafien[ j ].licznikTrafien > tablicaTrafien[ j + 1 ].licznikTrafien ) {
                    element temp = tablicaTrafien[ j ];
                    tablicaTrafien[ j ] = tablicaTrafien[ j + 1 ];
                    tablicaTrafien[ j + 1 ] = temp;
                }
            }
        }
        //wyświetlanie posortowanej tablicy!!!
        //starałem się tak jak można w C ale printf nie ogarniam :P !!!
        for( int i = 0; i < 6; i++ ) {
            std::cout << "liczb " << tablicaTrafien[ i ].wynik << " wylosowano " << tablicaTrafien[ i ].licznikTrafien << "razy" << std::endl;
        }
       
    }
   
    system( "pause" );
    return 0;

wynik działania programu

http://zapodaj.net/images​/ef2487cb62c57.png
P-143432
mateczek
» 2016-01-13 12:25:14
if else nie są potrzebne można pominąć
C/C++
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<iostream>

int i, j, c, d, e, f, g, h, r, n;
int a[ 1000 ];
struct element {
    int wynik;
    int licznikTrafien;
};

element tablicaTrafien[ 6 ] { { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 } };

main()
{
    srand( time( NULL ) );
    printf( "Podaj liczbe symulacji rzutu kostka(max1000) n=" );
    scanf( "%d", & n );
    n--;
    for( i = 0; i <= n; i++ )
    {
        a[ i ] = rand() % 6 + 1;
        printf( "%d ", a[ i ] );
    }
    //ify nie są potrzebne !!!
    for( i = 0; i <= n; i++ ) tablicaTrafien[ a[ i ] - 1 ].licznikTrafien++; // to można skrócić
    //Sortowanie bombelkowe
    for( int i = 0; i < 6; i++ ) {
        for( int j = 0; j < 6 - 1; j++ ) {
            if( tablicaTrafien[ j ].licznikTrafien > tablicaTrafien[ j + 1 ].licznikTrafien ) {
                element temp = tablicaTrafien[ j ];
                tablicaTrafien[ j ] = tablicaTrafien[ j + 1 ];
                tablicaTrafien[ j + 1 ] = temp;
            }
        }
    }
    std::cout << std::endl;
    //wyświetlanie posortowanej tablicy !!!
    for( int i = 0; i < 6; i++ ) {
        std::cout << "liczb " << tablicaTrafien[ i ].wynik << " wylosowano " <<
        tablicaTrafien[ i ].licznikTrafien << "razy" << std::endl;
    }
   
}
P-143433
« 1 » 2
  Strona 1 z 2 Następna strona