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

Jak stworzyć łańcuch liczb w tablicy?

VPS Starter Arubacloud
0 głosów
935 wizyt
pytanie zadane 2 lipca 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)

Próbuję napisać program, który pobierze od użytkownika pewne liczby i zapisze to w tablicy. Nie wiem jak zapisać taki łańcuch raz jak go wyświetlić, bo program najczęściej wyświetla mi tylko pierwszą cyfrę. Jak, np. wpisuję 5 to program wypisuje 16

#include <iostream>
#include <string>

using namespace std;

int main()
{
    int  ile;

        cin>>ile;
        int tab[ile];
        cout<<tab[ile];

    return 0;
}

 

komentarz 2 lipca 2019 przez Tomasz Kolk Użytkownik (750 p.)
int x= {1,2,3,4,5,6,7,8,9};
1
komentarz 2 lipca 2019 przez tkz Nałogowiec (42,020 p.)
No nie, to tak nie działa
komentarz 3 lipca 2019 przez Tomasz Kolk Użytkownik (750 p.)
Dobra, źle przeczytałem pytanie

2 odpowiedzi

+3 głosów
odpowiedź 2 lipca 2019 przez adrian17 Ekspert (349,800 p.)

Nie ma wbudowanego wypisywania kontenerów, musisz ręcznie po nich przeiterować.

cout<<tab[ile];

To tylko wypisuje `ile`-ty element tablicy. A jako że indeksowanie zaczyna się od 0, to ta linia wychodzi poza tablicę.

int tab[ile];

To formalnie też nie jest poprawne. Poczytaj o std::vector.

komentarz 2 lipca 2019 przez tkz Nałogowiec (42,020 p.)
Czy ręcznie, to nie wiem. Jest trochę możliwości by to zrobić automatycznie, na przykład petla zakresowa, for_each.
komentarz 2 lipca 2019 przez adrian17 Ekspert (349,800 p.)
To miałem na myśli przez ręcznie ;)
komentarz 2 lipca 2019 przez Piotr Batko Stary wyjadacz (13,210 p.)
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>

int main()
{
	std::vector<int> numbers{ 2, 3, 5, 7, 11, 13 };
	std::copy(std::begin(numbers), std::end(numbers), std::ostream_iterator<int>(std::cout, "\n"));
}

 

1
komentarz 2 lipca 2019 przez adrian17 Ekspert (349,800 p.)

Osobiście zdecydowanie preferuję prostsze

for (auto x : numbers)
    std::cout << x << "\n";

 

komentarz 3 lipca 2019 przez Patryk Kaczmarek Użytkownik (630 p.)

i bez zbędnego kopiowania :)

for (const auto& x : numbers)
    std::cout << x << "\n";

 

komentarz 3 lipca 2019 przez adrian17 Ekspert (349,800 p.)
(to inty ;) )
+1 głos
odpowiedź 3 lipca 2019 przez Patryk Kaczmarek Użytkownik (630 p.)

Jeśli chcesz się bawić w C:

int* array = malloc(sizeof(int)*ile);
free(array);

Jeśli lubisz bawić się w C+

int* array = new int[ile];
delete[] array;

Jeśli lubisz C++ to użyj std::vector

BTW, fragment:

cout << tab[ile];

zwraca losowe wyniki, ponieważ tab[ile] jest poza obszarem pamięci przeznaczonym na tab. Pownnaś iterować [0, ile-1]. W ekstrymalnym przypadku spowoduje to seg faulta jak będziesz pisać po nie swojej pamięci. 

Podobne pytania

0 głosów
2 odpowiedzi 202 wizyt
pytanie zadane 18 grudnia 2017 w C i C++ przez pierdonauta Nowicjusz (200 p.)
0 głosów
1 odpowiedź 1,890 wizyt
pytanie zadane 20 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
2 odpowiedzi 918 wizyt
pytanie zadane 10 listopada 2019 w C i C++ przez CleaverMan Nowicjusz (140 p.)

93,018 zapytań

141,988 odpowiedzi

321,281 komentarzy

62,364 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!

...