@Lord_North

Как считать файл.txt и выбрать только нужную (Си++)?

Привет! Программа записывает значение g(x) у текстовый файл и считывает. Мне нужно вывести в консоль строку с файла. Вот кусочек этого файла:
.....
f(-0.1): 0.386718
f(0.0): 0.400000
f(0.1): 0.413278
.....
Нужно вывести только при х=0, то есть "f(0.0): 0.400000", но не получается. Буду очень благодарен за помощь.
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <cstdlib>
float g(float x){
    float a=0, i=3.;
    return ((i+x)/(2.5*i+pow(x,i)))+a*pow(sin(x),i+1);
}
int main ()
{
  float x=-1;
  FILE * f;
  f = fopen ("my.txt", "w");
  for (float i=-1; i<=1+0.01; i+=0.1) {
       fprintf(f, "f(%.1f): %f\n", x, g(x));
       x+=0.1;
  }
  fclose (f);
  f = fopen ("my.txt", "r");
  char _char[80];

  for (int i=0; i<=20; i+=1) {
    fscanf(f, "%s", _char);
    //char to[100]="f(0.0): 0.400000";
    //if (_char==to) {break; printf(_char);}
  }
  return 0;
}
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
Мне нужно вывести в консоль строку с файла.

Выводи

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

string extract(string const& s, char first, char last)
{
  auto lpos = s.find(first) + 1;
  auto rpos = s.find(last, lpos);
  return s.substr(lpos, rpos - lpos);
}

void print_if_contains(string const& s, char lp, string const& pattern, char rp)
{
  if(extract(s, lp, rp) == pattern)
  {
    cout << s << "\n";
  }
}

void print_if_contains(string const& s, char lp, double d, char rp)
{
  if(stod(extract(s, lp, rp)) == d)
  {
    cout << s << "\n";
  }
}

int main()
{
  ifstream file("my.txt");
  // ...

  string line;
  while(getline(file, line))
  {
    print_if_contains(line, '(', "0.0", ')');
    print_if_contains(line, '(', 0.0, ')');
  }

  // ...
}

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы