losowanie 2 liczb

0

mam do napiasani aprogram ktory:
staruje z pkt 0 i do tego pkt dodajemy liczbe albo 1 albo -1 i tak np 16 razy.
Tzn:
dodaje do 0 np 1 -> jeden krok zapis do pliku
do tej jedynki znowu wyloswal program 1 czyli 2-> czyli 2 krok zrobil ;zapis
do 2 wylosowal -1 czyli 1 -> czyli to jest 3 krok i zapis..i tak 16 razy np
Jestem poczatkujacy w c++
Z tego co wiem to na pewno pętla
for do 16 razy
tylko jak zrobic zeby on dodawal tylko 1 lub -1 tzn losowal i dodawal do tego pkt poczatkowego czyli tu 0.
Pozdrawiam

0

Pseudokod:

int wart = 0;
for (int i = 1; i <= 16; i++) {
  int znak = wylosujZnakLiczby(); // czyli 1 albo -1
  wart += znak;
  plik << wart << endl;
}
0

Wylosuj jedną cyfry z przedziału od 0 do 1.

Jeśli 0 to dodajesz -1
jeśli 1 to dodajesz 1

do zmiennej oczywiście która przechowywać będzie tą liczbę którą będziesz wypisywał.

0

Jeżeli dobrze zrozumiałem kolegę, to problem leży w sposobie ograniczeni alosowania do 0 lub 1, tak?

srand(time(0));
int losowa = (rand() % 2) - 1;
int liczba = losowa ? 1 : -1;

Działa to tak, że losujesz jakąs duża liczę za pomocą funkcji rand(). Następnie na tej wylosowanej liczbie wykonujesz resztę z dzielenia przez 2, czyli dostajesz albo 0 albo 1. W drugiej linii jest operator warunkowy. Sprawdza on wartość logiczną tego co otrzymałeś w poprzednim kroku. Jak jest prawdziwa (1) to daje jedynke, jak fałszywa (0) to daje minus jeden. A pozniej to juz tylko sumowanie.


Opolski Portal Programistyczny
http://programowanie.opole.pl

0
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;


int main()
{
    int liczba=0;
    int liczba_losowana;

    cout<<"Liczba wynosi: "<<liczba<<endl;

    srand(time(NULL));

    int krok=0;

    do
    {
        liczba_losowana=(rand()% 2+1);

        if(liczba_losowana==1)
        {
            liczba++;
            cout<<"Dodawanie"<<endl;
        }
        else
        {
            liczba--;
            cout<<"Odejmowanie"<<endl;
        }

        cout<<"Liczba wynosi: "<<liczba<<endl;

        krok++;


    }while (krok<16);




}

O coś takiego chodziło ?

Losowanie jest od 1 do 2.
1 - dodawanie
2 - odejmowanie

1 użytkowników online, w tym zalogowanych: 0, gości: 1