Napisać program, który wczytuje od użytkownika liczbę oznaczającą, ile należy wylosować liczb z zakresu od -100 do 100. Następnie dokonuje obliczeń stosunku wylosowanych liczb dodatnich (bez zera) do liczb ujemnych oraz najmniejszej i największej znalezionej liczby. Wynikiem działania programu powinna być informacja na temat wszystkich trzech wartości. Ponadto, program powinien zapisać do tablicy liczbyParzyste (rozmiar tablicy na stałe 201) wszystkie liczby parzyste wylosowane, a pozostałe puste miejsce uzupełnić zerami.



Odpowiedź :

Odpowiedź:

Wyjaśnienie:

Zobacz obrazek Jarzyna00
REGNAD

Odpowiedź:

#include <iostream>

#include <stdlib.h>

#include <time.h>

using namespace std;

int main(int argc, char const *argv[])

{

   srand(time(NULL)); //odświeżanie seeda liczb pseudolosowych, aby z każdą kompilacją losowało nam inne liczby

   int n;

   cout << "Podaj liczbe oznaczajaca, ile nalezy wylosowac liczb z zakresu od -100 do 100" << endl;

   cin >> n;

   int *arrayWithRandomNumbers = new int [n];

 //tworzymy tabele o pojemności takiej jak wcześniej określiliśmy

   for (int i = 0; i < n; i++) //uzupełniamy tablicę losowo wylosowanymi liczbami z zakresu -100 do 100;

   {

       arrayWithRandomNumbers[i] = -100 + rand() % (100 - (-100) + 1); //min + rand() % ( max - min + 1 ) algorytm do wypisywania losowych liczb z tego zakresu

   }

   int countPositives = 0; //tworzymy licznik który będzie nam przechowywał ilość liczb dodatnich

   int countNegatives = 0; //tworzymy licznik który będzie nam przechowywał ilość liczb ujemnych

   for (int i = 0; i < n; i++) //jeszcze raz iterujemy się po tablicy aby policzyć ilość liczb negatywnych i pozytywnych

   {

       if (arrayWithRandomNumbers[i] > 0)

       {

           countPositives++; // zwiększamy licznik pozytywnych gry któraś z liczb jest większa od zera

       }

       if (arrayWithRandomNumbers[i] < 0)

       {

           countNegatives++; // zwiększamy licznik pozytywnych gry któraś z liczb jest mniejsza od zera

       }

   }

   double positivesToNegatives; //tworzymy zmienną double do przechowywania stosunku, ponieważ będzie ona ułamkiem najprawdopodobniej

   if (countNegatives != 0) //robimy warunek żeby dzielnik nie był zerem

   {

       positivesToNegatives = 1.0 * countPositives / countNegatives; //liczymy stosunek castując inta na doubla (dlatego jest mnożenie razy 1)

   }

   else

   {

       positivesToNegatives = 0;

   }

   //szukanie minimum i maximum

   int min = arrayWithRandomNumbers[0]; //przypisujemy wstępnie, że minumum to będzie pierwsza wartość z tablicy

   int max = arrayWithRandomNumbers[0]; //przypisujemy wstępnie, że maximum to będzie pierwsza wartość z tablicy

   for (int i = 0; i < n; i++) //iterowanie po tablicy, aby znaleźć najmniejszą

   {

       if (min > arrayWithRandomNumbers[i]) //sprawdzamy czy pierwsza z liczb jest mniejsza niż liczby w tablicy

       {

           min = arrayWithRandomNumbers[i]; //jeśli z jakaś z liczb w tablicy jest mniejsza niż minimalna, to minimalną jest ta liczba

       }

       if (max < arrayWithRandomNumbers[i]) //sprawdzamy czy pierwsza z liczb jest większa niż liczby w tablicy

       {

           max = arrayWithRandomNumbers[i]; //jeśli z jakaś z liczb w tablicy jest większa niż maksymalna, to maksymalną jest ta liczba

       }

   }

   double maxToMin = 1.0 * max / min; //liczymy stosunek w doublu, nie musimy sprawdzać czy nie jest 0, bo ma 0 w tablicy;

   //zapełnianie tablicy liczby parzyste

  const int length = 201;        //przypisanie wielkości tablicy to zmiennej

   int evenNumbers[length]; // deklaracja tablicy liczb parzystych o stałej zadanej wartości

   for (int i = 0; i < length; i++) //iterujemy się po tablicy liczb parzystych którą chcemy uzupełnić

   {

       if (i < n) // uzupełniamy ją liczbami z tablicy liczb losowych

       {

           if (arrayWithRandomNumbers[i] % 2 == 0) //sprawdzamy czy losowa liczba jest parzysta

           {                                                

               evenNumbers[i] = arrayWithRandomNumbers[i]; // jeśli jest, to wpisujemy ją do tablicy liczb parzystych

           }

           else

           {

               evenNumbers[i] = 0; // jeśli nie jest, to uzupełniamy to miejsce zerem

           }

       }

       else // wszystkie pozostałe miejsca uzupełniamy zerami

       {

           evenNumbers[i] = 0;

       }

   }

   //wyświetlanie

   cout << "Losowe liczby z przedzialu -100 do 100 zapisane do tablicy to: " << endl;

   for (int i = 0; i < n; i++)

   {

       cout << arrayWithRandomNumbers[i] << endl;

   }

   cout << "Ilosc liczb wiekszych od zera wynosi: " << endl;

   cout << countPositives << endl;

   cout << "Ilosc liczb mniejszych od zera wynosi: " << endl;

   cout << countNegatives << endl;

   cout << "Stosunek liczb pozytywnych wynosi: " << endl;

   cout << positivesToNegatives << endl;

   cout << "Najmniejsza z wylosowanych liczb to: " << endl;

   cout << min << endl;

   cout << "Najwieksza z wylosowanych liczb to: " << endl;

   cout << max << endl;

   cout << "Stosunek liczby najwiekszej do najmniejszej to: " << endl;

   cout << maxToMin << endl;

   cout << "Zawartosc tablicy liczb parzystych" << endl;

   for (int i = 0; i < length; i++)

   {

       cout << evenNumbers[i] << endl;

   }

   return 0;

}

Wyjaśnienie:

Masz wyjaśnienie w komentarzach po //