• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Deklaracja tablicy z elementami losowymi.

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
+1 głos
30,611 wizyt
pytanie zadane 8 czerwca 2015 w C i C++ przez D0PI430_Z4C2YN4M Nowicjusz (130 p.)

Witam szanowną społeczność. Z góry informuję iż jest to moje pierwsze pytanie w tym serwisie. Jestem uczniem Technikum Informatycznego i mam nadzieję, że z pomocą forum i jego użytkowników będę w stanie skutecznie polepszyć moją (bardzo małą jak narazie) wiedzę na temat programowania w języku C++. Umiem podstawy podstaw.smiley

Dobra to teraz pytanie mianowicie:

Jak zadeklarować tablicę o ilości x elementów (wprowadzonej przez użytkownika) i by wypełniała się ona liczbami losowymi z konkretnego przedziału. <---- Chciałbym kod by móc na jego podstawie się uczyć i zrozumieć mechanikę. Gdyż prawdziwe zadanie jest takie:

Zadeklaruj tablicę o liczbie elementów wprowadzonej przez użytkownika, wypełnioną liczbami losowymi z przedziału 0 do 6. Która będzie wyświetlać liczby podzielne przez 2. Następnie wyświetli ile było tych liczb.

Z góry dziękuję za odpowiedzi :)

 

3 odpowiedzi

0 głosów
odpowiedź 8 czerwca 2015 przez krecik1334 Maniak (58,390 p.)
Odcinek Mirosława Zelenta, który rozjasni wszystkie Twoje wątpliwości w temacie liczb pseudolosowych:

https://www.youtube.com/watch?v=QapjTCGV7GM
komentarz 9 czerwca 2015 przez D0PI430_Z4C2YN4M Nowicjusz (130 p.)
Odcinek już oglądałem ale i tak dziękuję bo to znaczy, że wiem gdzie szukać konkretnej wiedzy :)
0 głosów
odpowiedź 8 czerwca 2015 przez Radfler VIP (101,030 p.)
przywrócone 14 marca 2016 przez Radfler

Masz taki programik z wyjaśnieniami:

#include <iostream>
#include <cstdlib>  // std::srand(), std::rand()
#include <ctime>    // std::time()
using namespace std;

int main() {

    // Tworzenie ziarna losowania (ziarnem będzie czas)
    srand(time(nullptr));

    // Rozmiar tablicy oraz jego pobranie
    int rozmiar; cin >> rozmiar;

    // Tworzenie dynamicznej tablicy
    int *tablica = new int[rozmiar];

    // Wypełnienie jej liczbami z przedziału 0...x-1 (x = 7)
    for(int i=0; i<rozmiar; i++)
        tablica[i] = rand() % 7;

    // Wyświetlenie tylko liczb parzystych oraz ich zliczanie
    int ile_liczb_parzystych = 0;
    for(int i=0; i<rozmiar; i++) {

        if(!(tablica[i]%2)) { // '%' to operator reszty z dzielenia

            cout << "Parzysta: ";
            ile_liczb_parzystych++;

        } else cout << "Nieparzysta: ";

        cout << tablica[i] << endl;
    }
    cout << "Ile liczb parzystych: " << ile_liczb_parzystych << endl;

    // Usunięcie dynamicznej tablicy
    delete[] tablica;
}
komentarz 9 czerwca 2015 przez D0PI430_Z4C2YN4M Nowicjusz (130 p.)
Bardzo dziękuję, zabieram się do analizowania kodu :)
komentarz 9 czerwca 2015 przez Boshi VIP (100,240 p.)
Po co podałeś mu rozwiązanie gotowe? wystarczyło powiedzieć, że alokuje się po przez new, podzielnosć liczby sprawdza się modulo i zwalnia pamięć na końcu, wystarczyło by. Przyszedłby z kodem- wtedy by się poprawiło a tak 0 myslenia.
komentarz 9 czerwca 2015 przez Radfler VIP (101,030 p.)
Poprosił o przykład z wyjaśnieniami to mu dałem?
komentarz 9 czerwca 2015 przez Boshi VIP (100,240 p.)
Spytał tylko jak zadeklarować tablicę dynamiczną i tyle, a ty mu rozwiązałeś całe zadania (prawdopodobnie do szkoły) także daje sobie rękę uciąć, że i tak mało co z tego zrozumie bo nie pomyśli sam jak można to wykonać.
komentarz 9 czerwca 2015 przez Radfler VIP (101,030 p.)

Jak zadeklarować tablicę o ilości x elementów (wprowadzonej przez użytkownika) i by wypełniała się ona liczbami losowymi z konkretnego przedziału. <---- Chciałbym kod by móc na jego podstawie się uczyć i zrozumieć mechanikę. Gdyż prawdziwe zadanie jest takie (...)

Dałem mu konkretny przykład z wyjaśnieniami tak jak prosił. To jego sprawa po co jest mu to potrzebne ;)

0 głosów
odpowiedź 9 czerwca 2015 przez hit02 Nałogowiec (33,970 p.)

Cieszę się, że nie prosisz o rozwiązanie zadania, ale o kod do analizy. Właśnie dlatego postanowiłem ci pomóc. cheeky

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	srand(time(NULL));//Inicalizacja generatora liczb
	int tabSize = 0;
	int *tab = NULL;
	printf("Please enter size of array: ");
	scanf("%i", &tabSize);
	tab = malloc(tabSize * sizeof(int));//Alokacja pamięci na tablice
	for(int i = 0; i < tabSize; i++)
	{
		tab[i] = rand() % 7;//Wypełnianie tablicy liczbami z przedziału 0-6
	}
	for(int i = 0; i < tabSize; i++)
	{
		printf("\n%i. %i", i, tab[i]);//Wypisanie tablicy
	}
	free(tab);//Uwolnienie zaalokowanej pamięci
	return 0;
}
komentarz 9 czerwca 2015 przez Boshi VIP (100,240 p.)
w c++  a nie c,  alokacja w C jest tragiczna tak nawiasem mówiąc :)
komentarz 9 czerwca 2015 przez hit02 Nałogowiec (33,970 p.)
Moim zdaniem jest dużo bardziej przejrzysta.
komentarz 9 czerwca 2015 przez Boshi VIP (100,240 p.)
Serio uważasz, że malloci i inne udziwnienia są bardziej przejrzyste niż operator new? no cóż, może kwestia gustu.
komentarz 9 czerwca 2015 przez draghan VIP (106,230 p.)
Jeśli chodzi o typy wbudowane, to można się bawić mallocami - w niczym nie ustępują operatorom z C++.

Ale jeżeli ktoś prosi o kod w C++, a ktoś ten jest niedoświadczony i się dopiero uczy, należy mu wyjaśnić różnice między malloc/free, a new/delete.

Dla typów wbudowanych różnica jest żadna - natomiast dla obiektów własnych klas, new i delete wywołują kontruktory/destruktory tychże obiektów - a malloc i free - nie.

I o ile nawet w prostych klasach to przejdzie, to tam gdzie mamy własne zarządzanie pamięcią będzie tragedia.
komentarz 9 czerwca 2015 przez draghan VIP (106,230 p.)
W sumie... Autor w treści pisze o C++, w tagach jest tylko C... Więc nie wiem co o tym myśleć. :P

Podobne pytania

0 głosów
1 odpowiedź 1,393 wizyt
pytanie zadane 9 stycznia 2018 w C i C++ przez Tomek112 Początkujący (310 p.)
0 głosów
1 odpowiedź 1,853 wizyt
pytanie zadane 12 marca 2018 w C# przez dav30 Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 496 wizyt
pytanie zadane 29 maja 2018 w C i C++ przez Cichy Mnich Nowicjusz (120 p.)

93,439 zapytań

142,431 odpowiedzi

322,677 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...