Náhodné čísla a Bubble Sort – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Náhodné čísla a Bubble Sort – C / C++ – Fórum – Programujte.comNáhodné čísla a Bubble Sort – C / C++ – Fórum – Programujte.com

 

Supersonic
~ Anonymní uživatel
3 příspěvky
9. 2. 2016   #1
-
0
-

Zdravím, mám tuto strukturu programu, která by měla zůstat neměnná:

int* createArray(int length)
{

     // TO-DO
     return newArray;

}


void printArray(int* myArray, int length)
{

     // TO-DO

}


void bubbleSort(int* myArray, int length)
{

     // TO-DO

}


int main()
{

     int length = 10;

     // Vytvorenie nového poľa a naplnenie náhodnými hodnotami 1-100 pomocou metódy createArray
     int* myArray = createArray(length);

     // Výpis nezotriedeného poľa
     printArray(myArray, length);

     // Zotriedenie poľa
     bubbleSort(myArray, length);

     // Výpis zotriedeného poľa
     printArray(myArray, length);

}


Do části " TO-DO" mám doplnitt lastní kód. Metoda createArray(int length) má vracet pointer (ukazatel) na pole, které obsahuje náhodně vygenerované hodnoty integer v rozsahu 1-100. Délku tohto pole určuje hodnota preměnné length. Dále mám implementovat metodu printArray(int* myArray, int length), její úlohou je vypsat na obrazovku všechny hodnoty pole myArray. Nakonec implementujte triedenie bubbleSort v metodě ze szejným názvem a znovu vypsat setřídění.

Bohužel se vypisují už v původním výpisu příliš vysoká čísla (až na několik prvních) a navíc se hodnoty ani nesetřídí správně, nebo se zobrazí 0. Pokud bych měl program vytvořit sám pomocí jednoduchých cyklů, nebyl by problém, ale tady si nevím vůbec rady :-(.

Můj kód:


#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

    int* createArray(int length)
    {
        int newArray[length];
        int i;
        for (i=0; i<=length; i++){
            newArray[i] = 1+(rand()%100);
        }
        return newArray;
    }

    void printArray(int* myArray, int length)
    {
        int i;
        for( i=0; i<length; i++){
            cout << myArray[i] << endl;
        }

    }
    void bubbleSort(int* myArray, int length)
    {
        int i,j;
         for(i = 0; i < length-1; i++){
            for(j = 0; j < length-i-1; j++){
                if (myArray[j+1] < myArray[j]){
                    int cache = myArray[j+1];
                    myArray[j+1]=myArray[j];
                    myArray[j]=cache;
                }
            }
         }
    }


    int main()
    {

         int length = 10;
          srand(time(0));
         // Vytvorenie nového poľa a naplnenie náhodnými hodnotami 1-100 pomocou metódy createArray
         int* myArray = createArray(length);

         // Výpis nezotriedeného poľa
         printArray(myArray, length);

         // Zotriedenie poľa
         bubbleSort(myArray, length);
        cout << "Serazena cisla: " << endl;
         // Výpis zotriedeného poľa
         printArray(myArray, length);

    }
Nahlásit jako SPAM
IP: 217.196.213.–
ondrej39+1
Věrný člen
9. 2. 2016   #2
-
0
-

#1 Supersonic
Tu create array funkci máš blbě. Vracíš pointer na pole, které vytváříš na stacku, toto pole po dokončení funkce createArray zmizí. Potřebuješ v poli createArray to pole alokovat buď pomocí new nebo malloc/calloc (podle toho, jestli jsi v C++ nebo v C, i když vzhledem k použití VLA to bude asi spíš Cčko) a poté vrátit pointer na pole alokované tímto způsobem.

Nahlásit jako SPAM
IP: 79.141.243.–
Inject all the dependencies!
Supersonic
~ Anonymní uživatel
3 příspěvky
9. 2. 2016   #3
-
0
-

#2 ondrej39
Děkuji mockrát!!! Mělo by to být C++, dělám to hold podle toho, jak nás to učí...

Jinak pokud by to někoho v budoucnu náhodou zajímalo, stačilo jen přidat obyčejně toto (nevím proč mě to nenapadlo):

int *newArray = new int[length];

Ještě jednou díky!

Nahlásit jako SPAM
IP: 217.196.213.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 64 hostů

Podobná vlákna

Bubble sort — založil Anonymní uživatel

řazení jako v bubble sort — založil Noneus

Náhodné čísla — založil Grungy

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý