..používám Visual Studio C++ 2010
Kód: Vybrať všetko
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
void nacitajCislaZoSuboru() {
fstream iSubor("vstup.txt");
if (iSubor.is_open()) {
double x[5],y[5],z[5];
int i=1;
while (!iSubor.eof()) {
iSubor >> x[i] >> y[i] >> z[i]; // nacitanie cisel zo suboru vstup.txt
if(!iSubor.fail()){
cout << "[" << x[i] << ", " << y[i] << ", " << z[i] << "] "; // vypis cisel v tvare [1,2,3]
}
i++;
}
cout << endl;
double max=0;
double vzd[5][5];
int prvok_i, prvok_j;
for (int i=0; i<4 ;i++) {
for (int j=0; j<4 ;j++) {
if (i == j) // zabranenie pocitania nulovych hodnot, lebo vzdialenost tych istych prvkov by bola vzdy nula
continue;
vzd[i][j] = sqrt( pow((x[j]-x[i]),2) + pow((y[j]-y[i]),2) + pow((z[j]-z[i]),2) ); //j - je prvok od 0 po 4 a i sa mení postupne od 0 po 4 ...j0i0 ..j1i0 ..j2i0..j3i0..j0i1
cout.precision(3); //nastavenie zaokruhlovania na 3 des. cisla ale nejako to nefuguje :/
cout << "VZDIALENOST prvkov s indexmi: " << "[" << i << ", " << j << "] je ---> " << vzd[i][j] << endl; //len vypis lebo neviem preco mi to pise to 1.6e+062
if (i==0 && j==0) {
max = vzd[i][j]; // zadefinovanie maxima
prvok_i = i; // toto bude 1 index prvokv s najvacsou vzdialenostou
prvok_j = j; // toto bude 2 index prvokv s najvacsou vzdialenostou
} else {
if (vzd[i-1][j-1]<vzd[i][j]) { //ak je nova vzdialenost vacsia ako predchzdzajuca tak sa do max priradi aktualna vzdialenost
max = vzd[i][j];
prvok_i = i;
prvok_j = j;
}
cout << "MAXIMUM JE: " << max << endl;
}
}
}
cout << "Dva najvzdialenejsie body su: " << "[" << x[prvok_j] << ", " << y[prvok_j] << ", " << z[prvok_j] << "] " << "[" << x[prvok_i] << ", " << y[prvok_i] << ", " << z[prvok_i] << "] " << endl;
cout.precision(3); //zas nefunguje nejak :D
cout << "Ich vzajomna vzdialenost je: " << vzd[prvok_i][prvok_j] << endl;
iSubor.close();
} else
{
cout << "Subor sa nepodarilo otvorit" << endl;
}
}
int main()
{
nacitajCislaZoSuboru();
return 0;
}