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

Szukanie największej liczby z tablicy

Object Storage Arubacloud
0 głosów
1,454 wizyt
pytanie zadane 15 maja 2018 w C i C++ przez Marte Nowicjusz (140 p.)

Dzień dobry,

ogólnie rzecz biorąc jestem po 11 odcinku kursu C++ i pomyślałam sobie, że fajnie byłoby napisać program, który oprócz wyszukania największej liczby, da użytkownikowi możliwość wybrania ich ilości.Oczywiście wszystko z użyciem tablic. Pomimo faktu, że program się włącza, dzieje się następująca rzecz .,.

Kod wygląda tak:

int ile,m;

int main()
{
    cout << "Ile liczb zamierzasz podac: ";
    cin>>ile;

    int *tablica;
    tablica = new int [ile];

    cout<< "Podaj liczby oddzielone spacja: "<<endl;

    for (int i=0; i<ile;i++)
    {
        cin>>*tablica;
        *tablica++;
    }

    m=*tablica;


    for (int i=0;i<ile;i++)
    {
        if (*tablica>m)
        {
            m=*tablica;
        }

        tablica++;
    }
    cout<<"Najwieksza liczba to: "<<m;

    delete []tablica;
    return 0;
}

Prosiłabym o jakąś wskazówkę, co może nie działać, a może także o jakieś uwagi dotyczące napisania tego w prostszy sposób >-< Jestem osobą początkującą, więc zdaję sobie sprawę, że niektóre rzeczy mogę chcieć osiągnąć "na okrętkę", niekoniecznie to zauważając.

Z góry dziękuję za każdą odpowiedź ^-^

2 odpowiedzi

+1 głos
odpowiedź 15 maja 2018 przez j23 Mędrzec (194,920 p.)

W linii 16 przesuwasz wskaźnik tablica, co powoduje, że następna pętla czyta poza zakresem tablicy. Dlaczego nie użyjesz operatora indeksowania []?

komentarz 15 maja 2018 przez Marte Nowicjusz (140 p.)

Jeżeli chodzi o coś w stylu

m=tablica[0];


    for (int i=0;i<ile;i++)
    {
        if (tablica[i]>m)
        {
            m=tablica[i];
        }
    }

To to też nie działa .-. Jeśli nie o to, to średnio rozumiem >-< Znaczy.. jest opcja totalnego pominięcia wskaźnika od początku, ale wprowadziłam go tam właśnie dlatego, aby poćwiczyć jego użycie .,.

komentarz 15 maja 2018 przez j23 Mędrzec (194,920 p.)
O to mi chodziło. Obie pętle musisz poprawić.
komentarz 15 maja 2018 przez Marte Nowicjusz (140 p.)
No dobra, w ten sposób działa ^-^ Ale nie ma możliwości jakby... ''wyzerowania" tego wskaźnika, żeby znowu wskazywał tablica[0]? Wiem, że się przy tym strasznie upieram, no ale... miałam taką wizję od początku i chciałabym się dowiedzieć >-<

Dziękuję bardzo~
1
komentarz 15 maja 2018 przez j23 Mędrzec (194,920 p.)

Niech pętle operują na kopii wskaźnika tablica. Ewentualnie odwołuj się tak: m = *(tablica + i);

+1 głos
odpowiedź 15 maja 2018 przez mokrowski Mędrzec (155,460 p.)

Ok, upierasz się przy wskaźnikach... dobrze:

#include <iostream>
#include <cstddef> // dla std::size_t
 
int main()
{
    std::size_t ile;
    int maksymalna;
    std::cout << "Ile liczb zamierzasz podac: ";
    std::cin >> ile;
 
    int * tablica;
    tablica = new int[ile];
 
    std::cout<< "Podaj liczby oddzielone spacja: \n";
 
    for (std::size_t i = 0; i < ile; ++i)
    {
        std::cin >> *(tablica + i);
    }
 
    maksymalna = *tablica;
 
    for (std::size_t i = 0; i < ile; ++i)
    {
        if (*(tablica + i) > maksymalna)
        {
            maksymalna = *(tablica + i);
        }
    }

    std::cout << "Najwieksza liczba to: " << maksymalna << '\n';
 
    delete []tablica;
}

Na indeksach jest czytelniej:

#include <iostream>
#include <cstddef> // dla std::size_t
 
int main()
{
    std::size_t ile;
    int maksymalna;
    std::cout << "Ile liczb zamierzasz podac: ";
    std::cin >> ile;
 
    int * tablica;
    tablica = new int[ile];
 
    std::cout<< "Podaj liczby oddzielone spacja: \n";
 
    for (std::size_t i = 0; i < ile; ++i)
    {
        std::cin >> tablica[i];
    }
 
    maksymalna = tablica[0];
 
 
    for (std::size_t i = 0; i < ile; ++i)
    {
        if (tablica[i] > maksymalna)
        {
            maksymalna = tablica[i];
        }
    }

    std::cout << "Najwieksza liczba to: " << maksymalna << '\n';
 
    delete []tablica;
}

 

komentarz 15 maja 2018 przez Marte Nowicjusz (140 p.)
Na coś takiego bym nie wpadła >-< I tak, wiem, że czytelniej, tylko wersję z indeksami mogłabym sobie napisać na spokojnie, bo je rozumiem, a takich wskaźników.. no jeszcze nie do końca .,. Ale teraz już jestem o te trochę mądrzejsza, dziękuję bardzo ^-^

Podobne pytania

0 głosów
3 odpowiedzi 516 wizyt
pytanie zadane 9 maja 2019 w Java przez Paweł123 Nałogowiec (33,500 p.)
0 głosów
1 odpowiedź 1,453 wizyt
0 głosów
2 odpowiedzi 5,955 wizyt
pytanie zadane 1 grudnia 2016 w C i C++ przez Mateusz Ścigała Początkujący (280 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...