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

Problem z tablicą?

Object Storage Arubacloud
+1 głos
160 wizyt
pytanie zadane 18 czerwca 2016 w C i C++ przez abes Nowicjusz (130 p.)

Witam serdecznie, to mój pierwszy post na forum. :)

Mam pytanie, chciałbym wykonać program, który będzie wypisywał podaną ilość cyfr w odwrotnej kolejności w stosunku do tego co dostaje na wejściu. Oto kod, naprawdę nie wiem, gdzie może tkwić błąd, aczkolwiek domyślam się, że chodzi o coś związanego ze zwrotem tablica[ilosc] (tak mi sie wydaje, bo CodeBlocks niczego nie 'koloruje' jak zazwyczaj. Będę wdzięczny za wszelką pomoc.

 

#include <iostream>

using namespace std;

int main()
{
    int ilosc;
    cout<<"ile liczb wypisac w odwrocnej kolejnosci: ";
    cin>>ilosc;

    int liczby[ilosc];

    cout<<"Podaj te liczby:";
    cin>>liczby[ilosc];

    for(int i=(ilosc-1); i>=0; i--)
    {
        cout<<liczby[i];
    }

    return 0;

 

2 odpowiedzi

+1 głos
odpowiedź 18 czerwca 2016 przez Aisekai Nałogowiec (42,190 p.)
Brakuje Ci jednej pętli, bo nigdzie nie widzę żebyś tą tablicę wypełnił.
komentarz 18 czerwca 2016 przez abes Nowicjusz (130 p.)

Oh my Goodness, dzięki wielkie! :) Po 2h zabawy niezłe byki człowiek potrafi walnąć, myślałem, że tym ją wypełniłem:

 

cout<<"Podaj te liczby:";
    cin>>liczby[ilosc];

Teraz już wszystko ok. :)

+1 głos
odpowiedź 18 czerwca 2016 przez Porcupine Nałogowiec (31,560 p.)

1. Skoro tablicę deklarujesz dynamicznie tzn. dopiero wczytujesz jej rozmiar z klawiatury, a nie jest znany z góry to powinno być: 

int* liczby = new int [ilosc];

Alternatywnie możesz dla uproszczenia założyć, że liczb nie będznie nigdy więcej niż np. 100 i zrobić tak:

int liczby[100];

Lub odrobinkę bardziej "rozszerzalnie": 

const int rozmiar = 100;

int liczby[rozmiar];

 

2. Deklarując tablicę podając jako rozmar zmienną ilość deklarujesz tabicę o indeksach: 
0, 1, 2, ..., ilosc - 1

Powoduje to, że gdy robisz:

cin>>liczby[ilosc];

powoduje to wyjscie za tablicę, bo komórka o indeksie "ilosc" nie jest zadeklarowana.

3. Aby wczytywać dane potrzebujesz dodatkowej pętli ponieważ chcesz doprowadzić do tego, aby pierwsza liczba znalazła się w komórce liczby[0], druga liczby[1] itd. Robiąc tak jak Ty (zakładając, że nie doszłoby do wyżej wspomnianego wyjścia za tablicę) wszystkie liczby trafiłyby w tą samą komórkę i każda kolejna nadpisałaby poprzednią, a tego nie chcesz :)

Pozdrawiam,

Podobne pytania

0 głosów
2 odpowiedzi 184 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,450 p.)
0 głosów
5 odpowiedzi 1,015 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez Norbert123 Początkujący (290 p.)
0 głosów
2 odpowiedzi 341 wizyt
pytanie zadane 9 marca 2016 w C i C++ przez Mesiak Bywalec (2,380 p.)

92,674 zapytań

141,576 odpowiedzi

320,045 komentarzy

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

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!

...