Hellko

POTOKUS

Apr 28th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <fstream>
  4. #include <vector>
  5. using namespace std;
  6.  
  7. struct item {
  8.     double x;
  9.     double y;
  10. };
  11.  
  12. void print(item A) {
  13.     cout<<setw(10)<<A.x<<setw(10)<<A.y<<endl;
  14. }
  15.  
  16. int main() {
  17.     item tmp; double x; double Y;
  18.     vector<item> Values;
  19.  
  20.     ifstream str;                           //Создаем поток
  21.     str.open("D:\\in.txt",ifstream::in);    //открываем файл, поток настроен на чтение файла
  22.     if(str) {cout<<"File opened:"<<endl;} else {cerr<<"ERROR! FILE NOT FOUND!"; return 0;}
  23.     while(!str.eof()) {                     //пока не конец файла
  24.         str>>tmp.x;                         //из потока записать в tmp Х
  25.         str>>tmp.y;                         //из потока записать в tmp Y
  26.         Values.push_back(tmp);              //Запишем в конец вектора tmp
  27.     }
  28.     str.close();                            //закрыть поток
  29.     for(int i=0; i<(int)Values.size(); i++) print(Values[i]); //Напечатать элементы вектора
  30.  
  31.  
  32.     cout<<endl<<"Vvedite X: ";
  33.     cin>>x;
  34.  
  35.     int i;
  36.     for(i=0; i<(int)Values.size(); i++) if(x<Values[i].x) break;
  37.     //Если введенный Х меньше х в таблице то i номер того элемента
  38.  
  39.     double k,b;                             //y=kx+b
  40.     if(i==0) {
  41.         k=(Values[0].y-Values[1].y)/(Values[0].x-Values[1].x);
  42.         b=(Values[0].x*Values[1].y-Values[1].x*Values[0].y)/(Values[0].x-Values[1].x);
  43.     } else if(i==(int)Values.size()) {
  44.         k=(Values[i-2].y-Values[i-1].y)/(Values[i-2].x-Values[i-1].x);
  45.         b=(Values[i-2].x*Values[i-1].y-Values[i-1].x*Values[i-2].y)/(Values[i-2].x-Values[i-1].x);
  46.     } else {
  47.         k=(Values[i-1].y-Values[i].y)/(Values[i-1].x-Values[i].x);
  48.         b=(Values[i-1].x*Values[i].y-Values[i].x*Values[i-1].y)/(Values[i-1].x-Values[i].x);
  49.     }
  50.  
  51.     Y=k*x+b;
  52.     cout<<"y("<<x<<")="<<Y<<endl;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment