Cześć!
Mam problem z błędem podczas kompilacji, najpierw napisałem ten program bez konstruktora i wtedy był błąd przy okazji tworzenia tablicy dynamicznej struktur (w mainie), jak zrobiłem konstruktor to błąd jest w tworzeniu tablicy dynamicznej w strukturze. Jak to zadanie powinno w takim razie wyglądać, gdzie błąd?
Oto treść zadania:
Stwórz strukturę punkt w n wymiarowej przestrzeni (rozmiar przestrzeni oraz współrzędne). Napisz dwie funkcje składowe: funkcja wpisz umożliwiająca wprowadzenie wymiaru punktu oraz współrzędnych, funkcja wypisz wypisująca współrzędne na ekranie. Napisz funkcje globalną najdalej, która jako argumenty przyjmuje tablicę punktów oraz jej długość i zwraca punkt leżący najdalej od początku układu współrzędnych. W funkcji main stwórz tablicę punktów o długości wprowadzonej z klawiatury, wypełnij ją za pomocą funkcji wpisz, znajdź punkt leżący najdalej od początku układu współrzędnych i wypisz go na ekranie.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <math.h>
using namespace std;
struct punkt {
int n;
int *w = new int[n];
punkt();
void wpisz();
void wypisz();
};
punkt::punkt()
{
}
void punkt::wpisz() {
int a;
cin >> a;
a = n;
for (int i = 0; i < n; i++)
cin >> w[i];
}
void punkt::wypisz() {
for (int i = 0; i < n; i++)
cout << w[i] << 'x';
cout << endl;
}
punkt najdalej(punkt p[], int n);
int main() {
int x;
cin >> x;
punkt *tab = new punkt[x];
for (int i = 0; i < x; i++)
tab[i].wpisz();
najdalej(tab, x);
}
punkt najdalej(punkt p[], int n) {
int dlugosc = 0;
int najlep = 0;
int indeks = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < p[i].n; j++)
dlugosc += pow(p[i].w[j], 2);
dlugosc = sqrt(dlugosc);
if (dlugosc > najlep) {
najlep = dlugosc;
indeks = i;
}
}
return p[indeks];
}