• 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
1,891 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 (195,240 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 (195,240 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 (195,240 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 (158,660 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 765 wizyt
pytanie zadane 9 maja 2019 w Java przez Paweł123 Nałogowiec (33,540 p.)
0 głosów
1 odpowiedź 1,729 wizyt
0 głosów
2 odpowiedzi 6,475 wizyt
pytanie zadane 1 grudnia 2016 w C i C++ przez Mateusz Ścigała Początkujący (280 p.)

93,436 zapytań

142,431 odpowiedzi

322,669 komentarzy

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

...