Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- #include <vector>
- using namespace std;
- struct item {
- double x;
- double y;
- };
- void print(item A) {
- cout<<setw(10)<<A.x<<setw(10)<<A.y<<endl;
- }
- int main() {
- item tmp; double x; double Y;
- vector<item> Values;
- ifstream str; //Создаем поток
- str.open("D:\\in.txt",ifstream::in); //открываем файл, поток настроен на чтение файла
- if(str) {cout<<"File opened:"<<endl;} else {cerr<<"ERROR! FILE NOT FOUND!"; return 0;}
- while(!str.eof()) { //пока не конец файла
- str>>tmp.x; //из потока записать в tmp Х
- str>>tmp.y; //из потока записать в tmp Y
- Values.push_back(tmp); //Запишем в конец вектора tmp
- }
- str.close(); //закрыть поток
- for(int i=0; i<(int)Values.size(); i++) print(Values[i]); //Напечатать элементы вектора
- cout<<endl<<"Vvedite X: ";
- cin>>x;
- int i;
- for(i=0; i<(int)Values.size(); i++) if(x<Values[i].x) break;
- //Если введенный Х меньше х в таблице то i номер того элемента
- double k,b; //y=kx+b
- if(i==0) {
- k=(Values[0].y-Values[1].y)/(Values[0].x-Values[1].x);
- b=(Values[0].x*Values[1].y-Values[1].x*Values[0].y)/(Values[0].x-Values[1].x);
- } else if(i==(int)Values.size()) {
- k=(Values[i-2].y-Values[i-1].y)/(Values[i-2].x-Values[i-1].x);
- 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);
- } else {
- k=(Values[i-1].y-Values[i].y)/(Values[i-1].x-Values[i].x);
- b=(Values[i-1].x*Values[i].y-Values[i].x*Values[i-1].y)/(Values[i-1].x-Values[i].x);
- }
- Y=k*x+b;
- cout<<"y("<<x<<")="<<Y<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment