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

Problem z wypisanie i zrozumieniem odwracania tablicy

Object Storage Arubacloud
+1 głos
168 wizyt
pytanie zadane 3 sierpnia 2015 w C i C++ przez falauthy Stary wyjadacz (11,550 p.)

Mam taki problem. Mam podawać liczby, zapisać je do tablic, wyświetlić i odwrócić. Problem w tym, że gdy przerwę wpisywanie, to wyświetla mi resztę tablicy i nie wiem jak temu zapobieć. Próbowałem przepisać kod z książki S. Pratha, ale niestety i to nie pomogło. Jakieś wskazówki jak to zrobić?

Następny problem - przyznam się, że zerżnąłem kod ze strony do odwracania tablicy i ni cholery nie mogę go zrozumieć (albo dlatego, że jestem zmęczony :p).

//Cwiczenie programistyczne 7.6
#include <iostream>
#include <string>

using namespace std;

const int ar_size = 10;

int fill_array(double tablica_wartosci[], int n);
void show_array(double tablica_wartosci[], int n);
void reverse_array(double tablica_wartosci[], int n);

int main()
{
    double tablica[ar_size];

    int suma = fill_array(tablica, ar_size);
    cout << "Ile punktow: " << suma << endl;
    cout << "Punkty w twojej tablicy: " << endl;
    show_array(tablica, ar_size);
    cout << "\nOdwrocona tablica:" << endl;
    reverse_array(tablica, ar_size);

    return 0;
}

int fill_array(double tablica_wartosci[], int n)
{
    int i;
    double temp;
    for(i = 0; i < n; i++)
    {
        cout << "Podaj wartosc nr " << i + 1 << ": ";
        cin >> temp;
        if(!cin)
        {
            cin.clear();
            while(cin.get() != '\n')
                continue;
            break;
        }
        else if (temp < 0)
            break;
        tablica_wartosci[i] = temp;
    }
    return i;
}

void show_array(double tablica_wartosc[], int n)
{
    for(int i = 0; i < n; i++)
        cout << "Nr " << i + 1 << ": " << tablica_wartosc[i] << endl;
}

void reverse_array(double tablica_wartosc[], int n)
{
    double temp;
    for(int i = 0; i < n / 2; i++)
    {
        temp = tablica_wartosc[i];
        tablica_wartosc[i] = tablica_wartosc[n - 1 - i];
        tablica_wartosc[n - 1 - i] = temp;
    }

    for (int i = 0; i < n; i++)
        cout <<"Nr " i + 1 <<": " << tablica_wartosc[i] << endl;
}

 

1 odpowiedź

+1 głos
odpowiedź 3 sierpnia 2015 przez Buby Pasjonat (19,590 p.)
wybrane 3 sierpnia 2015 przez falauthy
 
Najlepsza

Zamień w wywołaniu funkcji ar_size na zmienną suma. :)

Wtedy wyświetlisz tylko tyle pozycji ile znajduje się w tablicy.

@Edit:

Zapomniałbym - Twój kod, który odpowiada za odwrócenie tablicy działa następująco.

Z tego co mi się kojarzy, jest to algorytm działający liniowo. Liczba przebiegów pętli jest równa połowie maksymalnego indexu, więc jest dość wydajny. Do zmiennej temp, zapisujesz zmienną, która znajduje się na pozycji iteracji od lewej, poczynając od zera, a kończąc na ostatnim przed środkowym elementem. Potem do twojego elementu iteracji od lewej zapisujesz jego lustrzane odbicie z prawej, czyli przykładowo do pierwszego elementu zapisujesz wartość ostatniego. Potem do elementu odpowiadającego, tego z prawej, którego wartość przypisałeś do lewego zapisujesz wartość lewego, która znajduje się w zmiennej temp. Dla przykładu:

1 2 0 4 5

Po przebiegu 1:

5 2 0 4 1

Po przebiegu 2:

5 4 0 2 1

 

Pozdrawiam! :)

komentarz 3 sierpnia 2015 przez falauthy Stary wyjadacz (11,550 p.)
Dzięki. ! :)
komentarz 3 sierpnia 2015 przez Buby Pasjonat (19,590 p.)
Jeszcze opisałem to odwracanie ;)

Podobne pytania

0 głosów
1 odpowiedź 222 wizyt
pytanie zadane 4 stycznia 2021 w Systemy operacyjne, programy przez Antytalent Początkujący (470 p.)
+1 głos
1 odpowiedź 213 wizyt
pytanie zadane 9 maja 2019 w JavaScript przez aniaska4 Obywatel (1,010 p.)
0 głosów
1 odpowiedź 480 wizyt

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...