Najmniejsza i najwieksza liczba wylosowana z przedzialu od 1-100

Odpowiedz Nowy wątek
2018-11-09 01:18
0

Prosze o pomoc, program wyswietla maxymalna liczbe, dlaczego nie chce mi wyswietlic najmniejszej liczby z posrod 5 wylosowanych? z gory dzieki.

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <math.h>
 
using namespace std;
 
int mn, mx, suma=0,liczba,srednia;
int main()
{
    cout << "WItaj, z 5 wylosowanych liczb z przedzialu 1-100 program podaje najmniejsza," << endl;
    cout << "najwieksza oraz oblicza ich srednia" << endl;
 
    srand(time(NULL));
 
    for( int i=1;i<=5;i++)
    {
 
        liczba=rand()%99+1;
        cout<<liczba<<",";
        suma=suma+liczba;
 
        if(liczba>mx)
        {mx=liczba;}
 
        if(liczba<mn)
        {mn=liczba;}
 
    }
 
    cout<<"Suma tych liczb to: "<<suma<<endl;
    srednia=suma/5;
    cout<<"srednia tych liczb to: "<< srednia<<endl;
    cout<<"Maximum to:"<<mx<<" a minimum to :"<<mn <<" .";
 
    return 0;
}
edytowany 1x, ostatnio: furious programming, 2018-11-09 01:51

Pozostało 580 znaków

2018-11-09 01:37
4

int mn

globalna zmienna typu int, czyli masz zero initialization -> ustawia mn na 0

liczba=rand()%99+1;

rand() co prawda zwraca inta, ale od 0 do RAND_MAX

if(liczba<mn)

skoro liczba jest od 1 do 99, a mn jest 0, ten warunek nigdy się nie spełni

Rozwiązanie:
inicializuj mn np std::numeric_limits<int>::max()

EDIT
Tak na przyszłość: pogódź się z debuggerem ;)

edytowany 6x, ostatnio: stryku, 2018-11-09 08:05

Pozostało 580 znaków

2018-11-09 03:30
0

Dzieki wielkie za pomoc :)

Pozostało 580 znaków

2018-11-09 08:43
liczba=rand()%99+1;

Ten kod nie losuje wartości 1 - 100.


Nie pisz na priv. Zadaj dobre pytanie na forum.

Pozostało 580 znaków

2018-11-09 22:11
0

Faktycznie, dzieki ze zwrociles uwage, chyba powinno byc: liczba=rand()%100+1.

Pozostało 580 znaków

2018-11-09 22:44
Odpowiedz
Liczba odpowiedzi na stronę

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