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

Losowa liczba z tablicy i usuwanie liczby ze zbioru

VPS Starter Arubacloud
0 głosów
393 wizyt
pytanie zadane 23 października 2019 w C i C++ przez Olfux Nowicjusz (120 p.)
edycja 23 października 2019 przez Olfux

Witam, 

Zacznę od tego, że jestem naprawdę początkującym koderem.

Chcę napisać program, który będzie losował numery wywołane do odpowiedzi przez nauczyciela.

Wydaję mi się, że najlepiej będzie zrobić to przy pomocy tablic, lecz nie mam pojęcia jak usuwać wpisane liczby ze zbioru, a następnie z tego zbioru już prawidłowego wylosować dany numerek. Proszę o pomoc i ewentualne poprawki.

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int os,szcz;
int nieob,niepy, nieprz, nieprzlicz;
int *tab= new int[os];
int x,y;
int *tab1=new int[nieob];
int *tab2=new int[nieprzlicz];
int licznik = 0;
int licznik1 = 0;
int licznik2 = 0;
int main()
{
    cout << "Podaj liczbe uczniow w klasie: ";
    cin >> os;
    for (licznik = 0; licznik < os; licznik++)
    {
        tab[licznik]=licznik+1;
    }
    cout << "Podaj szczesliwy numerek: "; //musi usuwac ten numerek z tablicy
    cin >> szcz;
    tab1[0]=szcz;

    cout << "Ile jest osob nieobecnych? "; cin >> nieob; cout<<endl;
    cout << "Podaj numery nieobecne: "; //musi usuwac te numery z tablicy
    do
    {
        cin >> tab1[licznik1+1];
        licznik1++;
    }while (licznik1 < nieob);
    cout << endl;
    cout << "Ile jest osob nieprzygotowanych? "; cin >> nieprzlicz; cout<<endl;
    cout << "Podaj numery nieprzygotowane: "; cin >> nieprz; //musi usuwac te numery z tablicy
    do
    {
        cin >> tab2[licznik2];
        licznik2++;
    }while (licznik2 < nieprzlicz-1);
    
    srand (time(NULL));
    int i = (rand() % tab[os]) + tab[0]; // nie mam pojecia jak ma wygladac losowanie liczb pseudolosowych z tablicy
    cout << i << endl;

    //cout <<"Pytana osoba to: "<< i <<endl;
    return 0;

}

 

komentarz 23 października 2019 przez tkz Nałogowiec (42,020 p.)
Zobacz, że Twoje tablice są wielkości 0. Poza tym nigdzie nie kasujesz tablic.
komentarz 24 października 2019 przez Olfux Nowicjusz (120 p.)
Własnie chodzi mi o to, jak moge napisac to kasowanie z tablic.

1 odpowiedź

+1 głos
odpowiedź 24 października 2019 przez chemikos Nowicjusz (230 p.)
Cześć

Próbujesz utworzyć dynamiczne tablice, ale najpierw musisz pobrać dane od użytkownika, żeby móc to zrobić, czyli linie 7, 9, 10 powinny pojawić się dopiero po podaniu odpowiednio 'os', 'nieob', 'nieprzelicz'. Chociaż wg mnie wystarczy utworzyć jedną tablicę z 'os' - elementami,(np. int* tab = new int[os]) gdzie 'indeks+1' będzie numerem z dziennika. Natomiast jako wartość wstawić np. 0 dla nieobecnego, 1 dla nieprzygotowanego itd., a potem dalej w kodzie odpowiednio interpretować te dane.

Losowanie w tym wypadku może wyglądać tak:

int i = rand()%os+1;

A na końcu (przed return) trzeba skasować dynamiczną tablicę:

delete [] tab;

 

Mam nadzieję, że pomogłem.

chemikos
komentarz 24 października 2019 przez Olfux Nowicjusz (120 p.)
Dziękuje!

Podobne pytania

0 głosów
2 odpowiedzi 850 wizyt
pytanie zadane 9 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
1 odpowiedź 959 wizyt
+1 głos
4 odpowiedzi 3,445 wizyt

93,008 zapytań

141,974 odpowiedzi

321,255 komentarzy

62,350 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...