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

Wskaźniki, problem z interpretacją

VPS Starter Arubacloud
0 głosów
221 wizyt
pytanie zadane 21 marca 2018 w C i C++ przez Saddre Nowicjusz (240 p.)

Utwórz dwie liczby całkowite, porównaj ich adresy, a następnie je zamień przy wykorzystaniu wskazników.

#include <stdio.h>
#include <conio.h>

	void funkcja(int *a, int *b)
	{
	int zmiana = *a; 
	*a = *b;
	*b = zmiana;
	}
	int main()
	{
	int a = 5, b = 2;
	int *adresA = &a, *adresB = &b;
	printf("a= %d\nb= %d\n", *adresA, *adresB);
	funkcja(adresA, adresB);
	printf("zmiana\n");
	printf("a= %d\nb= %d\n", *adresA, *adresB);

	_getch();
	return 0;
	}

Nie wiem czy dokładnie to miał na myśli autor zadania. 

2 odpowiedzi

0 głosów
odpowiedź 22 marca 2018 przez Bondrusiek Maniak (61,370 p.)

Witam,

wszystko jest w porządku ale zapomniałeś dodać warunek, który porównuje adresy wskaźników

Utwórz dwie liczby całkowite, porównaj ich adresy, a następnie je zamień przy wykorzystaniu wskazników.

 

    void funkcja(int *a, int *b)
    {
        if(a != b) // jeśli adresy wskaźników są różne dokonaj podmiany
        {
    int zmiana = *a;
    *a = *b;
    *b = zmiana;
        }
    }

 

komentarz 22 marca 2018 przez damianeqe Gaduła (4,380 p.)
Zgadzam się, ale w poleceniu nie ma napisane że jeżeli adresy są różne to je zamień, a jeżeli takie same to nie zamieniaj. Masz sprawdzić adresy, a później nie ważne co się stanie == lub != masz zamienić ich adresy.
0 głosów
odpowiedź 22 marca 2018 przez Beginer Pasjonat (22,110 p.)

Moim zdaniem bardziej odpowiedni (lub co najmniej równoważny) byłby zapis funkcji void w postaci:



void funkcja(int *a, int *b)
    {
    int *zmiana = a; 
    *a = *b;
    *b = *zmiana;
    }

Warto również zwrócić uwagę, że do wyświetlenia zmiennych autor użył dereferencji wskażnika.

komentarz 22 marca 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)
To nie jest "bardziej odpowiedni zapis". Co więcej ta funkcja nie działa dobrze.
komentarz 22 marca 2018 przez Beginer Pasjonat (22,110 p.)
Sorry, masz rację. Nie miałem pod ręką komputera, nie mogłem sprawdzić w działaniu. (Tak mi podpowiadała intuicja).
komentarz 27 marca 2018 przez Paweł Dymek Bywalec (2,300 p.)

@Beginer, według mojej interpretacji powinieneś jednak  zamienić adresy tak jak Qwerty96 sugeruje. 

 

Utwórz dwie liczby całkowite, porównaj ich adresy, a następnie je zamień przy wykorzystaniu wskazników.

No chyba, że autor chciał napisać:

Utwórz dwie liczby całkowite, porównaj ich adresy, a następnie zamień te liczby przy wykorzystaniu wskazników.

Utworzyć to można zmienne a nie liczby a potem zamienić ich wartość a nie je.

Treść zadania niejednoznaczna, ale według polszczyzny "je" tyczy się tu adresów, bo jest to podmiot występujący bezpośrednio przed, a ponadto "porównaj ich adresy, a następnie je zamień", słowo klucz 'a następnie' sugeruje zamianę adresów. 

Podobne pytania

0 głosów
1 odpowiedź 63 wizyt
pytanie zadane 9 kwietnia 2020 w C i C++ przez XiverKi Obywatel (1,920 p.)
0 głosów
1 odpowiedź 486 wizyt
pytanie zadane 29 stycznia 2019 w C i C++ przez Giero112 Nowicjusz (170 p.)
+1 głos
2 odpowiedzi 265 wizyt
pytanie zadane 8 stycznia 2016 w C i C++ przez Wojtek Brzeziński Nowicjusz (170 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...