Witam wszystkich. Chciałbym prosić o pomoc, ponieważ chciałbym wyliczyć wartość środkową, (interpolacja liniowa). skorzystałem ze wzoru x=(x-1) + (x+1) / 2. Program wczytuje dane z pliku i jeśli widzi że jakaś wartość jest pusta (na razie u mnie wartość pusta to "0" pózniej będę myślał jak zastąpić to pustą linijką :) ) to bierze dwie skrajne wartości i wylicza środkową. Zrobiłem program, który działa poprawnie tylko dla jednej pustej wartości w pliku, natomiast nie wiem jak zrobić aby program wyliczał wartości puste jeśli jest ich kilka z kolei.
12 13
2 2
3 3
0 0
0 0
0 0
5 6
9 9
22 66
100 100
w tym miejscu programu jest liczona wartość środkowa , tylko dla jednej wartości, proszę o pomoc ponieważ stoję od kilku dni w miejscu i niewiem jak rozwiązać ten problem. Myślałem nad rekurencią, ale wole się zapytać tutaj.
for (int i=0; i<=10; i++){
if ( (k[i](0,0) == 0) && (k[i](1,0) == 0) ){
k[i]=(k[i-1]+k[i+1])/2;
{
cout<<endl<<"Klatka "<<i<<": "<<endl<<k[i];
}
}
else {
cout<<endl<<"Klatka "<<i<<": "<<endl;
cout<<k[i];
}
}
a tu cały program żeby było wiadomo o co chodzi:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <Eigen/Dense>
using namespace std;
using Eigen::Vector2d;
Vector2d k[99];
int x[100];
int y[100];
int main()
{
int liczba[10][2];
ifstream plik("zrodlo.txt");
for(int i = 0; i < 10; i++)
for(int j = 0; j < 2; j++)
plik >> liczba[i][j];
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 2; j++)
{
x[i]=liczba[i][0];
y[i]=liczba[i][1];
cout << liczba[i][j] << " ";
}
cout << "\n";
}
for ( int i=0;i<10; i++){
cout<<endl<<endl<<"x: "<<x[i];
cout<<endl<<endl<<"y: "<<y[i];
}
for ( int i=0; i<10; i++)
{
k[i]<<x[i],y[i];
}
for (int i=0; i<=10; i++){
if ( (k[i](0,0) == 0) && (k[i](1,0) == 0) ){
k[i]=(k[i-1]+k[i+1])/2;
{
cout<<endl<<"Klatka "<<i<<": "<<endl<<k[i];
}
}
else {
cout<<endl<<"Klatka "<<i<<": "<<endl;
cout<<k[i];
}
}
system("pause");
return 0;
}