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

Wskaźniki, problem z zrozumieniem treści zadania z książki "Przewodnik dla początkujących C++"

Object Storage Arubacloud
0 głosów
599 wizyt
pytanie zadane 16 maja 2018 w C i C++ przez Krzychu Użytkownik (640 p.)
edycja 16 maja 2018 przez Krzychu

Witam właśnie przed chwilą ukończyłem ,rozdział 13. Korzystanie z wskaźników. Przystąpiłem do rozwiązywania zadań praktycznych. Mam problem z rozwiązaniem zadania numer 3 które bezpośrednio nawiązuje do zadania o numerze 1.

zad. 1: Napisz funkcję, która prosi użytkownika o podanie w dwóch osobnych zmiennych imienia i nazwiska. Funkcja ta powinna zwracać obie wartości za pośrednictwem dodatkowych parametrów wskaźnikowych (lub referencji) przekazywanych do niej podczas jej wywoływania. Najpierw postaraj się napisać taką funkcję, korzystając ze wskaźników, a następnie przy użyciu referencji.

Rozwiązanie dla tego zadania.

#include <iostream>

using namespace std;

void reference_person(string &x, string &y)
{
    cout<<"Wprowadz imie: ";
    cin>>x;
    cout<<"Wprowadz nazwisko: ";
    cin>>y;
}

string indicator_person(string *x, string *y)
{
    cout<<"Wprowadz imie: ";
    cin>>*x;
    cout<<"Wprowadz nazwisko: ";
    cin>>*y;
}

int main()
{
    // Wykorzystanie referencji
    string first_name, last_name;
    reference_person(first_name, last_name);
    cout<<first_name<<" "<<last_name<<'\n';

    // Wykorzystanie wskaznika
    string *w_f_name=&first_name, *w_l_name=&last_name;
    indicator_person(w_f_name, w_l_name);
    cout<<first_name<<" "<<last_name<<'\n';

    return 0;
}

 

zad. 3: Zmodyfikuj program napisany w ramach pierwszego zadania w taki sposób, aby prosił użytkownika o podanie nazwiska tylko wtedy, gdy w parametrze dotyczącym nazwiska funkcja otrzyma wskaźnik o wartości NULL.

Szczerze nie wiem czy dobrze interpretuje dane zadanie ale wtedy wskaźnik nie wskazuje na żadną wartość więc wykorzystanie go do zapisu nie ma sensu. Ponieważ dane i tak nie trafią do pamięci.

Mam także pytanie czy mogę w funkcji utworzyć nowy wskaźnik, próbowałem i niestety podczas kompilacji otrzymuje błąd. Myślałem aby w przypadku gdy argument funkcji a zarazem wskaźnik wskazuje na pusty adres pamięci. Przypisać nazwisko do innej zmiennej przy użyciu wskaźnika i w funkcji głównej korzystając z tego adresu odczytać go.

Z góry dziękuje za pomoc.

 

 

2 odpowiedzi

+1 głos
odpowiedź 16 maja 2018 przez adrian17 Ekspert (344,860 p.)
wybrane 16 maja 2018 przez Krzychu
 
Najlepsza

// Wykorzystanie referencji

Żadna z Twoich dwóch funkcji nie wykorzystuje referencji. Radzę najpierw to poprawić.

zad. 3: Zmodyfikuj program napisany w ramach pierwszego zadania w taki sposób, aby prosił użytkownika o podanie nazwiska tylko wtedy, gdy w parametrze dotyczącym nazwiska funkcja otrzyma wskaźnik o wartości NULL.

Szczerze nie wiem czy dobrze interpretuje dane zadanie ale wtedy wskaźnik nie wskazuje na żadną wartość więc wykorzystanie go do zapisu nie ma sensu. Ponieważ dane i tak nie trafią do pamięci.

Tak szczerze to też nie za bardzo rozumiem to zadanie.

1
komentarz 16 maja 2018 przez Krzychu Użytkownik (640 p.)
Poprawione tak chociaż mi się wydaje.

Ogólnie z samej pozycji jestem zadowolony ale czasami naprawdę trzeba wgłębić się w zadanie czy aby na pewno właśnie takie rozwiązanie miał na myśli autor.
komentarz 16 maja 2018 przez adrian17 Ekspert (344,860 p.)

Poprawione tak chociaż mi się wydaje.

Tak, teraz jest OK.

1
komentarz 16 maja 2018 przez Krzychu Użytkownik (640 p.)
Dziękuje za odpowiedź i cóż zabieram się za następne zadania a potem kolejny rozdział.
+1 głos
odpowiedź 16 maja 2018 przez BlinkyShay Obywatel (1,190 p.)
Sam miałem problem z tym zadaniem.
Post z przed niecałego miesiąca: https://forum.pasja-informatyki.pl/346799/wskazniki-przekazywanie-parametru-null
Wrzucam dla dopełnienia tematu.
1
komentarz 16 maja 2018 przez Krzychu Użytkownik (640 p.)
Ślicznie dziękuje za informacje. Myślałem że tylko ja mam problem z zrozumieniem treści tego zadania. Możliwe że tłumaczenie zawiodło i autor miał na myśli zupełnie coś innego.

 

Zastanawiam się teraz nad drugim kodem użytkownika j23 zamieszczonym w twoim temacie. Na obecnym etapie nie jestem w stanie zrozumieć podwojonego operatora wyłuskania.

Podobne pytania

0 głosów
1 odpowiedź 541 wizyt
0 głosów
1 odpowiedź 343 wizyt
0 głosów
0 odpowiedzi 130 wizyt

92,555 zapytań

141,402 odpowiedzi

319,539 komentarzy

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

...