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

Borland 6 C++ Losowanie tablic

Object Storage Arubacloud
0 głosów
394 wizyt
pytanie zadane 18 marca 2020 w C i C++ przez strattt Nowicjusz (200 p.)

Witam. Mam ileś tablic ( w naszym przykładzie 5). Chcę się dostać do trzeciego elementu LOSOWEJ tablicy.

I nie mam pomysłu jak ponumerować tablice, aby można je było losować. Albo jak się dostać do tak ponumerowanych tablic.

Poniżej przykładowy kod (oczywiście niedziałający na końcu)

Mamy 5 tablic, każda 3 elementowa. Tablice nazwane są tak, żeby było można jakoś je "namierzyć". Potem losujemy liczbę , żeby można było wylosować np. tablicę tab+j. Niestety próbowałem różnych czarów, ale nie chce mi to działać.
 

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int tab0[3]={8,4,2};
int tab1[3]={12,7,4};
int tab2[3]={15,3,8};
int tab3[3]={1,3,58};
int tab4[3]={15,13,9};

srand(time(NULL));
int j = rand() % 5 ;

//poniżej już nie działa :)
Form1->Caption=tab+IntToStr(j)[2];

Będę wdzięczny za dowolną podpowiedź, nawet ledwie naprowadzenie. Używam Borland 6 C++.

Piotr

 

 

3 odpowiedzi

+1 głos
odpowiedź 19 marca 2020 przez j23 Mędrzec (194,920 p.)
int tab[5][3] = {
	{8, 4, 2},
	{12, 7, 4},
	{15, 3, 8},
	{1, 3, 58},
	{15, 13, 9}
};
 
...

Form1->Caption = tab[j][2];

 

komentarz 19 marca 2020 przez strattt Nowicjusz (200 p.)
edycja 19 marca 2020 przez strattt
Działa bardzo dobrze, w zakresie o jaki prosiłem :)

Piotr
komentarz 19 marca 2020 przez j23 Mędrzec (194,920 p.)
Zatem należy zaakceptować odpowiedź, by nie drążyć tematu po próżnicy ;)
komentarz 19 marca 2020 przez strattt Nowicjusz (200 p.)
A jak zaakceptować odpowiedź ??

Piotr
komentarz 19 marca 2020 przez j23 Mędrzec (194,920 p.)
Nie wiem, nigdy nie zakładałem wątku ;) Pewnie jest tam jakiś przycisk przy mojej odpowiedzi.
0 głosów
odpowiedź 18 marca 2020 przez pionas0407 Gaduła (4,620 p.)
Zawsze Możesz zrobić tablicę tabli i to z niej wylosować upragnioną tablicę :D

Jeżeli takie rozwiązanie Ci nie pasuje to możesz też zrobić jakieś "ID" tablicy, np.

mając tablicę o nazwie tab0 - nadać jej id = 0 :)

jeżeli te rozwiązania Ci nie odpowiadają to możemy pomyśleć nad innym
komentarz 18 marca 2020 przez strattt Nowicjusz (200 p.)
Wolałbym z tym ID, ale nie wiem jak takie ID tablicy nadać.

ps. Przepraszam za banalne pytania, ale się uczę dopiero tego :)

Piotr
komentarz 18 marca 2020 przez pionas0407 Gaduła (4,620 p.)
Ogólnie to nie da się stworzyć nadania tablicy id, można to zrobić na dwa sposoby.

Prostszy:

1) Zwiększasz rozmiar tablicy o jeden, na którym będzie Id

Trudniejszy:

Tworzysz obiekt która ma tablicę i zmienną typu int o nazwie Id, wtedy zamaist tworzenia pięciu tablic tworzysz pięć obiektów :) wybór należy do Ciebie.

 

Jeżeli ani jedna z moich propozycji Ci się nie podoba, to możemy dalej pomyśleć :)!

Pozdrawiam
komentarz 18 marca 2020 przez strattt Nowicjusz (200 p.)
Dodałem w tych tabelach kolejne pole na samym końcu, nazwijmy go polem ID.Jednak nie widzę w czym by to miało pomóc w wylosowaniu dowolnej tablicy :(

Jak sobie dalej poradzić to wiem, nie umiem tylko wylosować tablicy ( będzie ich w sumie 84, na razie jest 5).

Piotr

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int t0[4]={19,4,2,0};
int t1[4]={12,7,4,1};
int t2[4]={18,3,8,2};
int t3[4]={17,33,8,3};
int t4[4]={15,21,28,4};
//srand(time(NULL));
//int j = rand() % 5 ;
komentarz 19 marca 2020 przez pionas0407 Gaduła (4,620 p.)
teraz losujesz id, czyli liczbę z przedziału od 0 do 4.

możesz zrobić ifa/switcha który bada i porównuje id każdej tablicy z wylosowaną liczbą.

Tego raczej nie polecam, bo jest to kod ciężki do utrzymania, każde dodanie nowej tablicy rozszerza twojego switach/ifa

 

A może pójdź w inną stronę?

Użyj gotowych struktur danych, które udostępnia standardowa biblioteka c++.

np. #array, możesz o niej poczytać w dokumentacji. Wtedy będziesz miał tą upragnioną "Tablicę w tablicy"
0 głosów
odpowiedź 18 marca 2020 przez strattt Nowicjusz (200 p.)
Dziękuję za podpowiedzi. Jak tylko je sprawdzę dam znać, jak poszło.

Musze poszukać tego: tablice tablic :)

Piotr
komentarz 18 marca 2020 przez pionas0407 Gaduła (4,620 p.)
Nie wiem czy przypadkiem źle tego nie ująłem, tablice tablic można interpretować na milion sposobów, możesz zrobić po prostu tablicę dwu wymiarową, i każdy wiersz będzie odpowiednikiem jednej tablicy, albo możesz zrobić to na wskaźnikach, i wtedy będziesz miał tablicę wskaźników, a każdy wskaźnik będzie wskazywał na pierwszy element jakiejś tablicy :)

 

Mam nadzieję, że nie zamieszałem bardzo!

Maciej

Podobne pytania

0 głosów
0 odpowiedzi 141 wizyt
pytanie zadane 19 marca 2020 w C i C++ przez strattt Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 160 wizyt
pytanie zadane 8 stycznia 2022 w C i C++ przez dark41 Użytkownik (760 p.)
+1 głos
2 odpowiedzi 208 wizyt

92,556 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,942 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!

...