Funkcja srand i program przeliczający temperatury

Odpowiedz Nowy wątek
2014-12-30 23:33
0

Witam!

Mam pewien problem i liczę na małą podpowiedź ze strony bardziej doświadczonych użytkowników :)

Mam do napisania program przeliczający temperatury, na zaliczenie. Z samymi operacjami między temperaturami nie miałem zbytnio problemu, jednak przyszedł czas na opcję "losowe przeliczanie temperatur". Mam użyć funkcji 'srand' i nie mam bladego pojęcia jak jej użyć. Próbowałem kombinować, jednak nic mi się na razie nie udaje. Po naciśnięciu na tę opcję ma ukazać się użytkownikowi coś w tym stylu: "0 stopni kelwina to -273,15 stopni celsjusza", jednak bez wpisywania wartości. Po prostu losowo ;) Wrzucam fragment kodu, a losowe wybieranie ma znaleźć się w case'ie o nr '8'.

case 6:
        {
            printf("Temperatura Kelvina: ");
            scanf("%f", &k);
            temp_wej[t]=f;
            temp_wyj[t]=(kel_na_fahr(k,f,c));
            z_temp[t]='K';
            na_temp[t]='F';
            t=t+1;
        }
        break;
 
       case 7:
            {
                printf("Tabela wpisywanych wartosci:\n");
 
                i=0;
                while(i<t)
                {
                printf("Wers: %d) %3.2f stop. %c to %3.2f stop. %c\n",i+1, temp_wej[i],z_temp[i],temp_wyj[i],na_temp[i]);
                i++;
                }
            }
        break;
 
       case 8:
        {
            srand(time(NULL));
 
        }
    } 

Dodam tylko, że opcja nr '6' przelicza temperaturę z Kelwinów na Fahrenheity, a opcja nr '7' wyświetla historię przeliczeń i one działają bez zarzutu :)

Gdyby ktoś rzucił chociaż małą podpowiedzią, to byłoby bardzo miło :)

Pozostało 580 znaków

2014-12-30 23:38
Zimny Samiec
0

srand(time(null)) to robisz sobie raz, bo to ustawia ziarno, a losujesz randem, a reszty tekstu nie rozumiem

Pozostało 580 znaków

2014-12-30 23:47
0

Chcę, żeby po naciśnięciu na klawisz '8' pojawiło mi się losowe przeliczenie temperatury między C i K lub C i F i tak dalej (przeliczam między Celsjusz, Kelvin i Fahrenheit). Nie umiem jednak zrobić tak, aby takie przeliczenie mi się wyświetliło na ekranie.

Case nr '6' to przykład w jaki sposób napisane mam w programie to przeliczanie. Myślałem, że się przyda, więc wkleiłem część mojego programu :)

Pozostało 580 znaków

2014-12-31 00:49
0
srand(time(NULL));

To musisz walnąć na początku programu bo będzie się wywoływać ciąglę po wybraniu opcji 8 a ma tylko raz.
Nie istnieje coś takiego jak losowanie, bo jak niby komputer miałby losować coś ? Dlatego trzeba inaczej sobie poradzić, więc podaje się do srand argument time(NULL) czyli jakąś liczbę uzależnioną od czasu przy jednym uruchomieniu będzie to 5 innym 20 itp... teraz możesz użyć rand() która zwraca liczbę z przedziału 0-36k czy ileś tam i ograniczasz ją operatorem modulo rand()%2 będzie miało wartość albo 0 albo 1 jeśli rand da liczbę 3000 to 3000%2 = 0 innym razem
3001%2 = 1 jeszcze innym 3002%2 = 0.

edytowany 1x, ostatnio: MoorfoxD, 2014-12-31 00:50
Rand with modulo is not uniform - spartanPAGE 2014-12-31 02:12

Pozostało 580 znaków

2014-12-31 02:11
0

<random>

Pozostało 580 znaków

2014-12-31 08:42
0

Ograniczenie zrozumiałem, a czego użyć aby srand zwrócił nam to przeliczenie, ale zgodne ze wzorem w rzeczywistości? Chciałbym uzyskać za pierwszym razem np "0 stop. Cel to 273.15 stop. Kel", a za drugim razem np "10 stop. Kel to -263.15 stop. Cel"? Jest to w ogóle możliwe?

Pozostało 580 znaków

2014-12-31 09:03
1

srand nie zwraca losowych liczb, rand - tak.
Losuj tak: rand()%200 - 100, w ten sposób otrzymasz liczbę z zakresu <-100, 100)


Pozostało 580 znaków

2014-12-31 15:24
0

A czego użyć, zeby zwracała tez symbol temperatury?

Pozostało 580 znaków

2014-12-31 16:17
0

Dopisz np. C czy F w konsoli? :|


Pozostało 580 znaków

2014-12-31 18:13
0

A będzie to przeliczać zgodnie ze wzorem w rzeczywistości?

Pozostało 580 znaków

2014-12-31 18:17
0
szymix12 napisał(a):

A będzie to przeliczać zgodnie ze wzorem w rzeczywistości?

I jeszcze frytki będzie gotować.
Chcesz przeliczyć - przelicz.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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