c++ – Utilizar função em manipulação de arquivos

Preciso fazer as seguintes implementações:

1 – Implementar uma rotina em C/C++ para importar os dados do
arquivo. (Dados do arquivo no final da pergunta)

2 – Implementar uma função multimodal em C/C++ (Função 1)
utilizando os dados do arquivo aberto na tarefa 1.

f(x, y) = x² + y² − cos(18x) − cos(18y) (1)

3 – Implementar uma rotina em C/C++ para salvar em um arquivo
os dados gerados a partir da tarefa 2.

O meu código até o momento está assim, porém não consigo finalizar, o meu problema é como eu faço pra pegar os valores depois de aberto e modificados trocando “,” por “.” e quebrado as colunas e jogar na minha função.

#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

using namespace std;
//Função que retorna o valor recebido em forma de uma função
double xy(double x, double y) { return x * x + y * y - cos(18*x) - cos(18*x); }

int main(){

//Cria um ponteiro do tipo FILE, usado para comandos de manipulação de arquivos
FILE *R, *W;
//Abre os dois arquivos, rt para modo de leitura e wt para modo de gravação
R = fopen("arq03.txt", "rt");
W = fopen("arq02.txt", "wt");

//Se o arquivo não abrir ou existir apresenta um erro
if(R==NULL){

        cout<<"Erro na leitura do Arquivo, provavelmente porque não foi criado!";
        system("pause");
        exit(0);
    }

    char str(200) = "arq03.txt";
    char *c;

        c = strtok(str, " ");

 while( c != NULL )
   {
      printf( " %sn", c );

      c = strtok(NULL, " ");
   }
//Enquanto encontrar o arquivo aberto em R(arq03.txt) o laço continua
     while (!feof(R)){
//Atribui caractere por caractere a linha lida no vetor de x e y, inclusive os espaços em branco
    fscanf(R, "%s", c);
 //Enquanto não for o final do vetor (apenas espaços preenchidos por caracteres), irá trocar
        //o ','(vírgula) por '.'(ponto)
     for (int i = 0; i < strlen(c); i++)
        {
            if (c(i) == ',')
                c(i) = '.';
        }
        //Salva no arquivo aberto em W(arq02.txt)
        //e o valor recebido da função xy(double);
        //O comando atof(stdlib.h) passa os valores de string pra double, ou seja,
        //os caracteres recebidos em forma de char *(ponteiro de char) são transformados em valores double
        //Após a transformação desses dados ele passa pela função
        //Os valores são salvos separados por '/'
        fprintf(W, "%s/%fn", c, xy(atof(c)));

     }
//Fecha os arquivos
fclose(W);
fclose(R);
}

OBS: O arquivo txt contem 200 linhas e 2 colunas que vai de -1 ate 1.

EX:

arq03.txt