[ M_CWAL @ 05.03.2016. 19:00 ] @
Ćao.
Ovako. Voljela bih ako neko može da mi pomogne sa ovim zadatkom. Ja stvarno ne znam da ga riješim.
Doduše, nedavno sam počela da programiram, pa još ne znam sve cake.

Evo tekst zadatka:

Write a program to prompt the user to enter an integer. The program should then determine whether the digits
in the number are perfectly descending, ascending or none.

examples:

986321 - perfectly descending digits in a number
1579 - perfectly ascending digits in a number
15792 - none

Hvala najiskrenije ko god mi pokuša pomoć. :)
[ jablan @ 05.03.2016. 21:38 ] @
Dokle si stigla? Imaš li neku ideju?
[ M_CWAL @ 05.03.2016. 21:54 ] @
Pa ideja mi je bila da prvo prebrojim koliko ima cifara uneseni broj i taj dio mi je dobar, a druga polovica zadatka mi nije tačna.
Nemam ideju kako bih mogla dalje..

Code:

#include <iostream>
using namespace std;
int main () {

    cout << "Enter a number: ";
    int num, br(0);
    cin >> num;

    while(num > 0) {
        num = num / 10;
        br = br + 1;
    }

    cout << "Broj cifara je: " << br << endl;

    int arr[10] = {br};
    for(int i = 0; i < br-1; i++) {
        for(int j = i+1; j < br; j++){

            if(arr[i] < arr[j]) {     // arr[i] < arr[j]  
                cout << "strogo rastuci niz" << endl;
            }
            else if(arr[i] > arr[j]){    //  arr[i] < arr[j]  
                cout << "Strojo opadajuci niz" << endl;
            }
            else {
                cout << "None.";
            }
        }
    }

    return 0;
}


[Ovu poruku je menjao Mihajlo Cvetanović dana 07.03.2016. u 12:48 GMT+1]
[ Mihajlo Cvetanović @ 07.03.2016. 12:10 ] @
Ne treba ti dvostruka petlja. U prvoj while petlji samo poredi tekući broj sa prethodnim, i uvedi dve bool promenljive koje kažu da li je u prethodnim iteracijama tekući broj bio manji ili veći od njemu prethodnog. Neka se te dve bool promenljive zovu ascending i descending i pre while petlje su postavljene na false. U prvoj iteraciji ne treba da radiš ništa, i to je specijalan slučaj, jer u prvoj iteraciji još ne postoji "prethodni" broj.

U svakoj iteraciji, ako je trenutni broj veći od prethodnog postavi ascending na true. Ako je trenutni broj manji od prethodnog postavi descending na true. Ništa se ni u kom slučaju ne postavlja na false. Ako se u nekom koraku desi da su obe bool promenljive true onda možeš slobodno da izađeš iz petlje.

Po izlasku iz petlje ako su obe promeljive true onda je to mešani slučaj. U suprotnom je slučaj ono što je jedino true. Nešto mora da bude true ako u nizu cifara postoje bar dve cifre različite.

Ono što mene buni je šta treba napisati recimo za slučaj 111? To zadatkom nije definisano, pa može samo da se nagađa.
[ M_CWAL @ 07.03.2016. 21:50 ] @
Hvala ti Mihajlo. Baš si super objasnio sve.
Uradila sam ovaj zadatak kasnije na drugi način, al' i ovaj je isto jako dobar.
Slučaj 111 bi bio "None" - jer i ta opcija je bila ponuđena.
Ascending, descending ili none.
[ dusans @ 08.03.2016. 07:30 ] @
Citat:
Mihajlo Cvetanović:
Neka se te dve bool promenljive zovu ascending i descending i pre while petlje su postavljene na false. U prvoj iteraciji ne treba da radiš ništa, i to je specijalan slučaj, jer u prvoj iteraciji još ne postoji "prethodni" broj.

U svakoj iteraciji, ako je trenutni broj veći od prethodnog postavi ascending na true. Ako je trenutni broj manji od prethodnog postavi descending na true.


Ovo neće da radi kako treba, osim ako rezultat false posmatraš i tumačiš obrnuto - kao ispunjen uslov.
Inače, ako hoćeš prirodnije rešenje - treba da te dve promenljive da staviš na true (lažna pretpostavka)
a u petlji da ih setuješ na false (pobiješ pretpostavku) ako prethodnik nije veći/manji od trenutnog.