• 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

0 głosów
538 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,040 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 1,161 wizyt
pytanie zadane 9 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
1 odpowiedź 1,509 wizyt
+1 głos
4 odpowiedzi 4,244 wizyt

93,631 zapytań

142,556 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...