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

Wskazniki C++ Zadanie, rozumowanie?

0 głosów
809 wizyt
pytanie zadane 12 grudnia 2018 w C i C++ przez Padoski Użytkownik (990 p.)

Witam, chciałem napisać program z wykorzystaniem wskaźników. Jego celem jest wypisanie najwiekszej wartosci oraz najmniejszej spośród dziesięciu podanych przez użytkownika. Mój kod to:

#include <iostream>

using namespace std;

    void najliczba(double *x);

int main()
{
    double tab[10];
    double *wsk = tab;
    cout << "Podaj 10 liczb: " << endl;
    for(int i=0;i<10;i++)
    {
        cin >>(wsk+i);
    }
    najliczba(wsk);
}
    void najliczba(double *x)
{
    double maximum =*x , minimum = *x;
    for(int i=0;i<10;i++)
    {
        if(*(x+i)>maximum)
        maximum = *(x+i);
    }
    cout<<"Najwieksza wartosc sposrod podanych to:"<<maximum<<endl;

    for(int i=0;i<10;i++)
    {
        if(*(x+i)<minimum)
        minimum = *(x+i);
    }
    cout<<"Najmniejsza wartosc sposrod podanych to: "<<minimum<<endl;
}

Błąd wyskakuje mi w tym miejscu :

 for(int i=0;i<10;i++)
    {
        cin >>(wsk+i);
    }

Wiem, że można to zrobić w taki sposób że poprostu piszę cin>> tab[i], lecz chciałem to zrobić na wskaźnikach. Czy jest taka możliwość oraz czy robi się w ten sposób? Mam prośbę jeszcze o ogolne sprawdzenie kodu, czy gdzieś jeszcze można użyć wskaźników, albo czy może gdzieś są one zbyteczne i co w tym kodzie można poprawić? Z góry dziękuję, pozdrawiam i czekam na odp :)

3 odpowiedzi

+1 głos
odpowiedź 12 grudnia 2018 przez Poczprogramista123 Bywalec (2,900 p.)
Powinno byc cin>>*(wsk+i). Nie zapominaj o gwiazdce. Gwiazdka mowi ze odnosisz sie do obietku a nie do wskaznika na ten obiekt.
komentarz 12 grudnia 2018 przez Padoski Użytkownik (990 p.)
też nie działa
komentarz 12 grudnia 2018 przez Poczprogramista123 Bywalec (2,900 p.)
Ale jak mozesz robic cos takiego.

double tab[5]

double *wsk=tab /// BLAD!!!

Takim zapisem tworzysz statyczna tablice na ktorej nie mozesz poslugiwac sie wskaznikiem. Zastap to dynamiczna tablica.
+1 głos
odpowiedź 12 grudnia 2018 przez kamerek Obywatel (1,260 p.)

Moim zdaniem powinno to wyglądać w taki sposób:

for(int i=0;i<10;i++)
    {
        cin >>(*(wsk+i));
    }

 

komentarz 12 grudnia 2018 przez monika90 Pasjonat (22,940 p.)

nawiasy nie są potrzebne, wystarczy cin >> *(wsk + i);

komentarz 12 grudnia 2018 przez Padoski Użytkownik (990 p.)
czy ten moj kod jest poprawny? chodzi mi o to ze np czy zwieksz wydajnosc pisanie *(wsk+i) zamiast tab[i], jakie korzysci z tego plyną, czy to nie jest to samo?( tak jak napisal u dolu profesorek 96) ?
0 głosów
odpowiedź 12 grudnia 2018 przez profesorek96 Szeryf (91,400 p.)
Nazwa tablicy to wskaźnik na element o indexie zero. Operator [] to inaczej operator dereferencji i zrobili go po to byś nie musiał pisać odwołując się do elementu o indeksie 4 w tablicy TAB

*(TAB + 4) tylko pisał TAB [4]
komentarz 12 grudnia 2018 przez Padoski Użytkownik (990 p.)

czyli z tego wynika ze zapis *(wsk+i) w tym przypadku jest zbyteczny tak? czyli pisac poprostu tab[i]? Czyli np :

for(int i=0;i<10;i++)
    {
        if(*(x+i)>maximum)
        maximum = *(x+i);
    }

w tym przypadku rownież powinienem użyc if(tab[i]>maximum) i będzie to równie wydajne jak (*(x+1)). Czy dobrze teraz rozumuje ?

komentarz 12 grudnia 2018 przez profesorek96 Szeryf (91,400 p.)
Zapis jaki ci pokazałem jest zamienny.

Podobne pytania

0 głosów
1 odpowiedź 578 wizyt
pytanie zadane 2 lutego 2019 w C i C++ przez Padoski Użytkownik (990 p.)
0 głosów
1 odpowiedź 628 wizyt
pytanie zadane 30 listopada 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 338 wizyt
pytanie zadane 14 listopada 2019 w C i C++ przez juske00 Początkujący (370 p.)

93,425 zapytań

142,421 odpowiedzi

322,647 komentarzy

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...