// ConsoleApplication8.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include <cmath>
struct Punkt
{
double x;
double y;
};
void wypelnienie(Punkt *tab, int rozmiar)
{
for (int i = 0; i < rozmiar; i++)
{
printf("Wpisz punkt X%d", i+1);
scanf("%f", &tab[i].x);
printf("Wpisz punkt Y%d", i+1);
scanf("%f", &tab[i].y);
}
for (int i = 0; i < rozmiar; i++)
{
printf("\ntablica[%d].x %f", i, tab[i].x);
printf("\ntablica[%d].y %f", i, tab[i].y);
}
getchar();
getchar();
}
double dwapunkty(Punkt *punkty)
{
double wynik;
for (int i = 0; i < 2; i++)
{
printf("Wpisz wartosc punktu X%d:", i + 1);
scanf("%d", &punkty[i].x);
printf("Wpisz wartosc punktu Y%d:", i + 1);
scanf("%d", &punkty[i].y);
}
wynik = pow(pow(punkty[0].x - punkty[1].x, 2.) + pow(punkty[0].y - punkty[1].y, 2.), (1 / 2.));
return wynik;
}
int main()
{
srand(time(NULL));
int rozmiar;
char wybor;
Punkt *tab;
Punkt *punkty;
printf("wpiszcie tutaj rozmiar tablicy: ");
scanf("%d", &rozmiar);
tab = (Punkt*)calloc(rozmiar, sizeof(Punkt));
punkty = (Punkt*)calloc(2, sizeof(Punkt));
printf("\nKtore wybierasz?\n1. Wybor losowy\n2.Wpisuj sam kazda komorke.\n");
wybor = _getch();
switch (wybor)
{
case '2':
{
wypelnienie(tab, rozmiar);
break;
}
default:
{
printf("cos zle wpisales/as.");
break;
}
}
getchar();
system("cls");
printf("Wszystko zostalo wyczyszczone.\nTablica zaalokowana.");
Sleep(2000);
system("cls");
printf("Wybierz jedna z opcji.\n1.f. zwraca odległość między zadanymi jako argumenty dwoma punktami\n2. f. sortuje zadaną jako argument tablicę wg odległości punktów od punktu(0.0): ");
wybor = _getch();
switch (wybor)
{
case '1':
{
printf("Wynik to: %6.2f",dwapunkty(punkty));
break;
}
case '2':
{
break;
}
}
Punkt free(*tab);
system("pause");
return 0;
}
Witajcie, mam do stworzenia program, który będzie obliczał odległość między dwoma punktami.
Skorzystałem oczywiscie ze wzoru matematycznego na obliczanie długosci:
( (x2-x1)^2 + (y2-y1)2) ^ (1/2)
Coś nie działa - Przypisanie wartości do komorek tab[i].x oraz tab[i].y zawsze wynosi 0
natomiast spierwiastkowaną sumę kwadratów podaje jako BARDZO DUŻĄ LICZBĘ