Strukturai wskaźnik

0

Witam,
Jestem początkujący i dopiero się uczę i napisałem kod do tego zadania jednak nie jestem pewien czy dobrze to zrobiłem :/

Napisz program definiujący strukturę Punkt zawierającą pola X i Y (współrzędne punktu). Stwórz wskaźnik do tej zmiennej za pomocą operatora new. Wczytaj z klawiatury wartości pól tej zmiennej I przypisz je do niej z użyciem wskaźnika.

#include<iostream>
#include<cstdlib>
#include<string>
using namespace std;

struct Punkt
{
int x;
int y;
Punkt()
{
this->x=x;
this->y=y;
}
};
int main()
{
Punkt *pkt1 = new Punkt();
Punkt pkt2;
cout << "Podaj wspolrzedne: ";
cin >> pkt2.x >> pkt2.y;
cout << "(" << pkt2.x << "." << pkt2.y << ")" << endl;

system("PAUSE");
return 0;

}

2

Co według Ciebie to robi?

 this->x=x;
 this->y=y;

this w większości przypadków jest niepotrzebny, a już na pewno nie w tym. W tym przypadku przypisuje do x i y wartość... x i y która jest niezdefiniowana.
Korzystając z c++11 możesz inicjalizować wartość bezpośrednio w klasie, lub tradycyjnie w konstruktorze/liście inicjalizacyjnej.
Niepotrzebnie tworzysz drugi punkt tylko aby wczytać do niego dane, to też. I na koniec - zapomniałeś o delete pkt1 : )

3
struct Punkt
  {
   double x,y;
   Punkt():x(0),y(0) {}
   Punkt(double x,double y):x(x),y(y) {}
  };
4
#include <iostream>
using namespace std;

struct point{
	double x, y;
};

int main() {
	auto p = new point{0, 0};

	cin >> p->x >> p->y;
	cout << "x: " << p->x << ", y: " << p->y << endl;

    delete p;
}
  1. Pamiętaj, żeby zawsze sprzątać po sobie pamięć (lub użyć unique_ptr i mieć na to wyrąbane)
  2. Pamiętaj, żeby nie szykować na siebie pułapek - w momencie, kiedy stosujesz PODy, staraj się zawsze zapewniać domyślne wartości: w tym wypadku wyglądać to powinno tak, jak przedstawił to @_13th_Dragon lub w ten sposób, dostępny wraz z C++11:
struct point{
	double x = 0, y = 0;
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1