Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 2.337 pregleda

Najnovija ↓

[Zadatak] Natalitet 23.04.2009. u 11:37 · pre 213 meseci
izmenjeno 2 puta, poslednji put eSsss 23.04.2009. u 13:14
  1. eSsss23.04.2009. u 13:14zapis iz teksta poruke
  2. X Files23.04.2009. u 11:55zapis iz teksta poruke
#1
Poz svima.Pokusavam da uradim jedan zadatak, nije mi problem napisati kod kada bih znao kako tacno to funkcionise.Na ulazu programa imam da unesem broj stanovnika neke drzave. Zatim u procentima[%] koliko svakog dana umire stanovnika i u brojkama koliko se radja. I treba da izracunam za koliko dana ce ta drzava ostati bez stanovnika.E ja nailazim na problem da broj stanovnika nikako nece otici ispod nule.

Code:
#include <iostream>
using namespace std;

int main()
{

    unsigned long n;
    unsigned p,m,d=0,s;;


    cout << "Unesite koliko trenutno drzava ima stanovnika: ";
    cin >> n;

    cout << "Koliko svakog dana umire stanovnika [%]: ";
    cin >> p;

    cout << "Koliko se dnevno rodi beba: ";
    cin >> m;

    for(int i = 0; n > 0; i++)
    {
        s = (p*n)/100;      //koliko dnevno umire stanovnika
        n -= s;                //umanjujemo broj stanovnika za broj mrtvih
        n += m;              //uvecavamo broj stanovnika za broj novorodjenih
        d++;                  //dani
    }    

    cout << "\nStanovnika:" << n;
    cout << "\tDana:" << d;

    system("PAUSE");
    return 0;
}


E sad ja npr. unesem da 10% umire svaki dan a 5 se radja.I u jednom trenutku ce doci da je broj novorodjeni i umrlih isti (jer se broj stanovnika smanjuje pa ce mi 10% od ukupnog iznositi 5) i dobijam beskonacnu petlju.Da li bi neko mogao da mi pomogne na koji nacin da ovo odradim?

Hvala i poz.
Re: [Zadatak] Natalitet 23.04.2009. u 11:52 · pre 213 meseci #2
Za pocetak je vrlo bitno da celobrojne vrednosti pretvoris (kastujes) u nove float ili double, i kao takve prosledis petlji. U suprotnom, dzaba deljenje i procenti.
Re: [Zadatak] Natalitet 23.04.2009. u 13:11 · pre 213 meseci #3
To uopste nisam primetio, izmenicemo...ali to mi u sustini ne resava problem.
Jedino da za isto pijavljivanje nataliteta (n) u for petlji, stavim break ? Ali mi to bas i nije neko resenje.
Re: [Zadatak] Natalitet 23.04.2009. u 13:26 · pre 213 meseci #4
Mislio sam na deo:
s = (p*n)/100;

Koji bi verovatno trebao biti /netestirano/:
f_s = ((float)p*(float)n)/100.; // < f_s je float


Zatim, bi trebalo utvrditi da li sa ceil() zaokruzivati broj umrlih na veci procenat, jer covek je ili mrtav ili ziv, tj ako je umrlo 1.2 neka to bude 2 umrla.

U tvom kodu bi to bilo mozda:
n -= (int)ceil(f_s); //umanjujemo broj stanovnika za broj mrtvih

Dalje, dok god postoji ova linija :
n += m; //uvecavamo broj stanovnika za broj novorodjenih
... pri cemu je m>0, mislim da nema sanse da bude ispunjen uslov za izlazak iz petlje:
for(int i = 0; n > 0; i++)

(uzgred, promenljiva "d" ti ne treba, jer je to zapravo "i")


Zato bi trebalo semanticki smisliti koji je zapravo stvarni uslov za izlazak iz petlje (npr, ne moze se iz nicega roditi beba niti jedna osoba moze roditi 66 beba), a to mora biti neka korelacija izmedju "m" i "f_s".

Pogledacu, pa se javljam ako bude bilo potrebe.
Re: [Zadatak] Natalitet 23.04.2009. u 13:28 · pre 213 meseci #5
Eh da, nije lose u ovoj fazi trazenja uzroka staviti ispis test trenutnih vrednosti: ukupnog broja stanovnika, broja umrlih i sl, kao i:
cin.ignore()
...na kraju petlje da se moze pratiti.
Re: [Zadatak] Natalitet 23.04.2009. u 14:01 · pre 213 meseci #6
Prepravio sam sve o cemu si mi napisao...Ono d mi je ostalo do while petlje posto sam prvo isao preko nje.

Code:
    for(i = 0; n > 0; i++)
    {
        s =(int) ceil(((float)p*(float)n)/100);
        n -= s;
        n += m;
        if(s == m) break;
        cout << "\nStanovnika:" << n;
        cout << "\tDana:" << i;
    }    

           cout << "\nStanovnika:" << n;
    cout << "\tDana:" << i;


Jednio da onda kada mi se broj umrlih i novorodjenih izjednaci da stavim neke konstantne vrednosti za s i m (da s bude vece) i jednu while petlju pa da izgura do kraja?

Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme