Hello, I'm still getting the hang of coding (just started a few weeks ago) so this may seem like a daft question. I keep on getting three errors when I run my code:

f:\ode_functions.c(41) : error C2296: '^' : illegal, left operand has type 'double'
f:\ode_functions.c(41) : error C2297: '^' : illegal, right operand has type 'double'
f:\ode_functions.c(41) : error C2198: 'sqrt' : too few arguments for call

Here's an overview, ode_functions.c is called on by ode_main.c. ode_main.c also calls on ode_functions.h. Not only this, but there are three more header files and one more source file, ode_methods.c which implements the Euler and Improved Euler methods.

I'll print out ode_functions.h and ode_functions.c. I'll also print out the relevant bits of ode_main.c.


#include <assert.h>
#include "ode_functions.h"
#include <math.h>

double function3_derivative(double x, double y){
	double H, V, vo;
	double temp = (vo * sqrt((H - x)^2 + y^2) - V * y)/ V*(H - x);

	return temp;


#ifndef _ode_functions_h_
#define _ode_functions_h_

double function3_derivative(double x, double y);



#include <stdio.h>
#include "allocate.h"
#include "error.h"
#include "fileio.h"
#include "ode_methods.h"
#include "ode_functions.h"

int main(void)
  code code code code

  double H, V, vo;

printf("Enter the function number: ");
  scanf("%d", &function_number);
  switch (function_number) {
  case 1:
    dydx = function1_derivative;
  case 2:
	  dydx = function2_derivative;
  case 3: 
	  dydx = function3_derivative;

    ERROR("Unknown function number");

  if (function_number = 3){
	  printf("Enter the width of the river: ");
	  scanf("%lf", &H);
	  printf("Enter v(0): ");
	  scanf("%lf", &vo);
	  printf("Enter the velocity of the boat in still water: ");
	  scanf("%lf", &V);
code code code code

Could someone please point me in the right direction? Probably using pretty basic coding language since I'm too 'newb' to understand complicated coding language.

if you want the power of something, you need the pow() function. You can't do y^2, you need to write it like pow(y,2);

Edited 5 Years Ago by Nick Evan: n/a

This question has already been answered. Start a new discussion instead.