Struktury Punkty i Wektory, C++

0

Witam,
mam takie zadanie:

  1. Wykorzystując bibliotekę stdio.h napisz program w języku C++, w którym
    zdefiniowane będą dwie struktury reprezentujące odpowiednio punkty i wektory w 2D za pomocą
    współrzędnych typu double. Zdefiniuj dwa nowe typy danych na podstawie stworzonych struktur.
    Dla obu struktur zdefiniuj konstruktory bezparametrowe (ustawiają wartości na 0.0) oraz
    parametrowe przyjmujące argumenty z linii poleceń (int argc, char *argv[]) i parsujące argumenty
    argv[] na liczby typu double za pomocą funkcji strtod. W konstruktorach sprawdź czy ilość
    przekazanych parametrów jest poprawna. Zdefiniuj również funkcje wypisujące na ekran
    współrzędne punktów oraz wektorów.
    Stwórz kod testujący. Niech utworzy zmienną typu punkt i typu wektor za pomocą konstruktorów
    parametrowych oraz wypisze ich parametry.
  2. Stwórz funkcje transformujące:
  • punkt, punkt -> wektor (wektor między punktami)
  • wektor, wektor -> wektor (dodawanie oraz odejmowanie)
  • wektor, wektor -> liczba (iloczyn skalarny)
  • punkt, punkt, double -> punkt (punkt między danymi, w odległości danej współczynnikiem)
  • wektor -> liczba (długość wektora)

Jestem bardzo początkujący i przyznaje, że dla mnie to trudne zadanie. Podjąłem jakąś próbę, ale nie wiem, czy idę w ogóle w dobrym kierunku.

#include <iostream>
#include<stdio.h>
#include<stdlib.h>

struct Punkty
{
double x;
double y;
Punkty()
{
x=0;
y=0;
}
Punkty(int argc, char*argv[])
{
char endptr;
double
tab;
int i;
for(i=0; i<(argc-1); i++)
{
tab[i]= strtod(argv[i+1], &endptr);
if(*endptr!='\0')
printf("blad\n");
}
}

};

struct Wektory
{

double x=0;
double y=0;

Wektory()
{
	x=0;
	y=0;
}
Wektory(int argc, char*argv[])
{
	char *endptr;
	double* tab;
int i;
for(i=0; i<(argc-1); i++)
{
	tab[i]= strtod(argv[i+1], &endptr);
	if(*endptr!='\0')
		printf("blad\n");	
}
}

};

Wektory Transformacja1(struct Punkty a, struct Punkty b, struct Wektory c)
{

 c.x=a.x-b.x;
 c.y=a.y-b.y;
 return c;

}

int main(int argc, char** argv) {
//Punkty(argc,argv);
Punkty a();
Punkty b();
Wektory c();

Transformacja1(a,b,c);

return 0;

}

1

Punkty(int argc, char*argv[]) oraz Wektory(int argc, char*argv[]) jednoznacznie wskazuje na jedno, weź przeczytaj jakiś kurs z podstawami.
Kurdyban!!!
Dopiero zauważyłem że to takie popieprzone czarnym pieprzem zadanie!

Wg mnie chodzi o taki knot:

Punkty(int argc,char *argv[]):x(0),y(0)
  {
   if(argc<2) return;
   char *endptr;
   x=strtod(argv[0],&endptr);
   y=strtod(argv[1],&endptr);
  }

Przy wywołaniach:

int main(int argc, char** argv)
  {
   Punkty a(--argc,++argv);
   Wektory b(argc-=2,argv+=2);
   ...
   return 0;
  }
0

Czytam, mam też książki, ale nie mam pojęcia jak naprawić ten program.

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