Se dă o mulțime de puncte în plan. Să se calculeze cea mai mică distanță dintre oricare 2 puncte posibile. In c++ si Pascal va rog
Răspunsuri la întrebare
Răspuns de
1
#include <iostream>
#include <cmath>
#include <float.h>
#include <fstream>
using namespace std;
//structura pentru coordonate puncte
struct Punct{
double x,y;
} marcaj[20];
//calcul distanta intre doua puncte
double distanta_puncte(Punct p1,Punct p2){
//aplic direct formula geometrica
return sqrt(pow(p2.y-p1.y,2)+pow(p2.x-p1.x,2));
}
//functie care returneaza valoarea minima din sir
double min_vector(double v[],int n){
int i;
//valoare maxima double
double min=10e15;
//trecem prin toate valorile
for(i=0;i<n;i++){
//daca valoare mai mica decat cea existenta minima
if(v[i]<min){
//minimul device acea valoare
min=v[i];
}
}
return min;
}
int main(){
double distanta[1000];
int i,j,nr_puncte,nr_distante=0;
ifstream fip("puncte_intrare.txt");
//citeste fisier nr puncte
fip>>nr_puncte;
//citire coordonate puncte
for(i=0;i<nr_puncte;i++){
fip>>marcaj[i].x>>marcaj[i].y;
}
//trecand prin oate punctele
for(i=0;i<nr_puncte-1;i++){
//trecand prin toate punctele ramase
for(j=i+1;j<nr_puncte;j++){
//calculeaza distanta intre punctul i si punctul j
distanta[nr_distante]=distanta_puncte(marcaj[i],marcaj[j]);
//creste nr de distante
nr_distante++;
}
}
cout<<"\nDistanta minima:"<<min_vector(distanta,nr_distante);
return 0;
}
#include <cmath>
#include <float.h>
#include <fstream>
using namespace std;
//structura pentru coordonate puncte
struct Punct{
double x,y;
} marcaj[20];
//calcul distanta intre doua puncte
double distanta_puncte(Punct p1,Punct p2){
//aplic direct formula geometrica
return sqrt(pow(p2.y-p1.y,2)+pow(p2.x-p1.x,2));
}
//functie care returneaza valoarea minima din sir
double min_vector(double v[],int n){
int i;
//valoare maxima double
double min=10e15;
//trecem prin toate valorile
for(i=0;i<n;i++){
//daca valoare mai mica decat cea existenta minima
if(v[i]<min){
//minimul device acea valoare
min=v[i];
}
}
return min;
}
int main(){
double distanta[1000];
int i,j,nr_puncte,nr_distante=0;
ifstream fip("puncte_intrare.txt");
//citeste fisier nr puncte
fip>>nr_puncte;
//citire coordonate puncte
for(i=0;i<nr_puncte;i++){
fip>>marcaj[i].x>>marcaj[i].y;
}
//trecand prin oate punctele
for(i=0;i<nr_puncte-1;i++){
//trecand prin toate punctele ramase
for(j=i+1;j<nr_puncte;j++){
//calculeaza distanta intre punctul i si punctul j
distanta[nr_distante]=distanta_puncte(marcaj[i],marcaj[j]);
//creste nr de distante
nr_distante++;
}
}
cout<<"\nDistanta minima:"<<min_vector(distanta,nr_distante);
return 0;
}
Marcek:
mersi mult
Alte întrebări interesante
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Istorie,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă