Tablica, której ilości zmiennych nie znamy

Tablica, której ilości zmiennych nie znamy

Wątek przeniesiony 2018-01-25 20:06 z C/C++ przez ŁF.

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Jak zapisać tablicę, w której ilość zmiennych będzie wprowadzał użytkownik? Np wprowadza liczbę 7 i siedem różnych zmiennych (tego samego typu) albo liczbę 2 i dwie zmienne(tego samego typu). Czyli wprowadza n i tablicę a[n] (wiem, że taki zapis jest niepoprawny).

SE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 318
5

Użyć vectora?

TobiPL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 66
0

Pewnie najlepiej napisać 2 słowa które nic nie znaczą dla niego albo odesłać go do innego forum... jprd

najpierw musisz zrobić taką specjalną zmienną np.
int *cos;

  • istotne jest tutaj postawienie "gwiazdki" przed nazwą zmiennej - w ten sposób zrobisz wskaźnik
    następnie możesz utowrzyć inna zmienna która będzie rozmiarem "tablicy"

np.

Kopiuj
int *tablica;
int wielkosc;

potem wystarczy to utworzyć poprzez

Kopiuj
tablica = new int[wielkosc];

wtedy "tablica" czyli nasza wcześniej utworzona zmienna z "gwiazdką" będzie mogłą być takiego rozmiaru jaki podamy w "wielkosc"

<nazwa zmiennej z gwiazdką> = new <typ zmiennej>[<rozmiar tablicy>];

jakbyś potrzebował to tak się kasuje takie tablice:
delete [] <nazwa>;

YooSy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 472
3

ewnie najlepiej napisać 2 słowa które nic nie znaczą dla niego albo odesłać go do innego forum... jprd

Odsyłanie do dokumentacji jest złe? Lepiej przepisywać dokumentację w poście?

https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
0

Jeśli możesz to skorzystaj z mechanizmu VLA i zadeklaruj tablicę po tym, jak użytkownik wprowadzi liczbę z klawiatury. Tę liczbę wrzuć do zmiennej, a zmienną użyj do deklaracji rozmiaru tablicy.

Kopiuj
int size;
cin >> size;

int array[size];  // voilà!

Możesz też użyć czegoś sensownego, np. wektora, choć pachnie mi tu szkolnym zadaniem. ;)

koszalek-opalek
  • Rejestracja: dni
  • Ostatnio: dni
2

Pytanie jest o C++, a VLA jest w C. Tu trzeba użyć vectora, nawet nie ma co doradzać malloc ani new początkującemu...

Kopiuj
#include <vector>
#include <iostream>

int main() {
    int n;
    std::cout << "Ile liczb? ";
    std::cin >> n;
    std::vector<double> tab(n);
    for(int i = 0; i < n; ++i) {
        std::cout << "Podaj element nr " << i << ": ";
        std::cin >> tab[i];
    }
}

I dalej używaj jak surowej tablicy, reszta w dokumentacji.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.