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

Problem z tablicą?

Cloud VPS
+1 głos
220 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 403 wizyt
pytanie zadane 23 stycznia 2023 w C i C++ przez Dani Obywatel (1,450 p.)
0 głosów
5 odpowiedzi 1,824 wizyt
pytanie zadane 18 kwietnia 2017 w C i C++ przez Norbert123 Początkujący (290 p.)
0 głosów
2 odpowiedzi 781 wizyt
pytanie zadane 9 marca 2016 w C i C++ przez Mesiak Bywalec (2,380 p.)

93,483 zapytań

142,417 odpowiedzi

322,763 komentarzy

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

Kursy INF.02 i INF.03
...