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

Deklaracja tablicy z elementami losowymi.

Object Storage Arubacloud
+1 głos
29,197 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,219 wizyt
pytanie zadane 9 stycznia 2018 w C i C++ przez Tomek112 Początkujący (310 p.)
0 głosów
1 odpowiedź 1,699 wizyt
pytanie zadane 12 marca 2018 w C# przez dav30 Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 319 wizyt
pytanie zadane 29 maja 2018 w C i C++ przez Cichy Mnich Nowicjusz (120 p.)

92,584 zapytań

141,433 odpowiedzi

319,668 komentarzy

61,966 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...