Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <fstream>
  5. #include <sstream>
  6. #include <string.h>
  7. #include <iomanip>
  8. #include <math.h>
  9.  
  10. using namespace std;
  11.  
  12. void writeToFile(int** tab,int size) {
  13. ofstream ofs;
  14. ofs.open("punkty.txt");
  15. if(ofs.good()){
  16. for (int i = 0; i < size; i++) {
  17. ofs << tab[i][0] << " " << tab[i][1] << endl;
  18. }
  19. }
  20. ofs.close();
  21. }
  22.  
  23. void readFromFile(int** tab,int count, string name) {
  24. char buff[255];
  25. ifstream ifs;
  26. ifs.open(name);
  27. if (ifs.is_open()) {
  28. for (int i = 0; i < count; i++) {
  29. ifs.getline(buff, 255);
  30. string temp = string(buff);
  31. string x = temp.substr(0,temp.find(" "));
  32. string y = temp.substr(temp.find(" "));
  33. tab[i][0] = stoi(x);
  34. tab[i][1] = stoi(y);
  35.  
  36. }
  37.  
  38. }
  39. ifs.close();
  40. }
  41.  
  42. void wypisz(int** tab, int ilosc) {
  43. for (int i = 0; i < ilosc; i++) cout << "Punkt " << i <<setw(5)<< "x: " << tab[i][0] << "\ty: " << tab[i][1] << endl;
  44. }
  45. void wypisz2d(double** tab, int ilosc) {
  46. for (int i = -1; i < ilosc; i++) {
  47. for (int j = -1; j < ilosc; j++) {
  48. if (j < 0) cout << " " << i;
  49. else if(i<0) cout << setw(9) << " " << j;
  50. else cout << " | " <<setw(7)<< tab[i][j];
  51. }
  52. cout << endl;
  53. }
  54.  
  55. }
  56.  
  57. void liczDlg(int** tab, int ilosc,double** wynik) {
  58. for (int i = 0; i < ilosc; i++) {
  59. for (int j = 0; j < ilosc; j++) {
  60. double x = (tab[i][0] - tab[j][0]);
  61. double y = (tab[i][1] - tab[j][1]);
  62. wynik[i][j] = sqrt(x*x+y*y );
  63. }
  64.  
  65. }
  66.  
  67. }
  68.  
  69. void min(int* wynik, double** wyniki,int ilosc) {
  70. int min = wyniki[0][1];
  71. for (int i = 0; i < ilosc; i++) {
  72. for (int j = 0; j < ilosc; j++) {
  73. if (i != j) {
  74. if (min > wyniki[i][j]) {
  75. min = wyniki[i][j];
  76. wynik[0] = i;
  77. wynik[1] = j;
  78. }
  79. }
  80. }
  81. }
  82. }
  83.  
  84. int main() {
  85. srand(time(NULL));
  86. int ilosc;
  87. cout << "Podaj ilosc punktow: ";
  88. cin >> ilosc;
  89. int **tab;
  90. tab= new int*[ilosc];
  91. for (int i = 0; i < ilosc; i++) tab[i] = new int[2];
  92.  
  93. for (int i = 0; i < ilosc; i++) {
  94. tab[i][0] = rand() % 100;
  95. tab[i][1] = rand() % 100;
  96. }
  97. wypisz(tab, ilosc);
  98.  
  99. writeToFile(tab,ilosc);
  100.  
  101. int **tab2;
  102. tab2 = new int*[ilosc];
  103. for (int i = 0; i < ilosc; i++) tab2[i] = new int[2];
  104. cout << "\nWypisz: \n";
  105. readFromFile(tab2,ilosc,"punkty.txt");
  106. wypisz(tab, ilosc);
  107.  
  108. double** dlugosci;
  109. dlugosci = new double*[ilosc];
  110. for (int i = 0; i < ilosc; i++) dlugosci[i] = new double[ilosc];
  111.  
  112. liczDlg(tab2,ilosc,dlugosci);
  113. cout << "Macierz dlugosci:\n\n";
  114. wypisz2d(dlugosci, ilosc);
  115.  
  116. int tabWynikow[2];
  117. min(tabWynikow, dlugosci,ilosc);
  118. cout << "Najmniejsza odleglosc to: " << dlugosci[tabWynikow[0]][ tabWynikow[1]] << "\nSa to punkty o indeksach: " << tabWynikow[0] << " oraz " << tabWynikow[1]<<endl;
  119.  
  120.  
  121. for (int i = 0; i < ilosc; i++) delete[] tab[i];
  122. delete[] tab;
  123.  
  124. for (int i = 0; i < ilosc; i++) delete[] tab2[i];
  125. delete[] tab2;
  126. system("pause");
  127. return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement