Ошибка В Объявлении Функции

  • Автор темы vamp
  • Дата начала
V

vamp

Здравствуйте, не могу понять что не правильно в этом коде, помогите пожалуйста исправить ошибки


C++:
{
float x, y;
};
DataType* Data;
int RecNum=0;
float f(int func, float x)
{
switch (func)
{
case 1:
return 0.348*x*x+0.696*x-8.348;
break;
case 2:
return 8*sin(x/2+3.14/8);
break;
case 3:
return 0.21*x*x*x+0.85*x*x-2.34*x-0.4;
break;
}
 
L

lazybiz

Если это весь код который есть, то проще будет указать на те места где ошибок нет. Где ты его взял?
 
V

vamp

Если это весь код который есть, то проще будет указать на те места где ошибок нет. Где ты его взял?

только не взял, а взяла))) Это кусок из моей курсовой работы, решения нелинейных уравнений методом Ньютона.

Прога "ругается" на float f(int func, float x) и на float f1(int func, float x)
она выбивает даже не как ошибку, а как предупреждение и не хочет компилировать(
 
L

lazybiz

Показывай весь код! У тебя проблема с блоками.
 
V

vamp

Показывай весь код! У тебя проблема с блоками.
я пробовала закинуть сюда он становится нечитабельным(

если только на вашу почту сбросить, была бы очень блогодарна

C++:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <process.h>
#define PathToDriver "C:\\bc_\\"
struct DataType
{
float x, y;
};
DataType* Data;
int RecNum=0;
float f(int func, float x)
{
switch (func)
{
case 1:
return 0.348*x*x+0.696*x-8.348;
break;
case 2:
return 8*sin(x/2+3.14/8);
break;
case 3:
return 0.21*x*x*x+0.85*x*x-2.34*x-0.4;
break;
}

return 0;
}
float f1(int func, float x)
{
switch (func)
{
case 1:
return 0.696*x+0.696;
break;
case 2:
return 4*cos(x/2+3.14/8);
break;
case 3:
return 0.63*x*x+1.7*x-2.34;
break;
}
return 0;
}
void DrawLogo()
{
gotoxy(20, 8);
printf("-------------------------------------------");
gotoxy(20, 9);
printf("!										 !");
gotoxy(20, 10);
printf("!		 This program is created		 !");
gotoxy(20, 11);
printf("! for demonstrating the Newton's method !");
gotoxy(20, 12);
printf("! of solving equations				  !");
gotoxy(20, 13);
printf("!										 !");
gotoxy(20, 14);
printf("!										  . !");
gotoxy(20, 15);
printf("!										 !");
gotoxy(20, 16);
printf("-------------------------------------------");
}
void DrawMainMenu()
{
printf("! Exit !");
printf(" File !");
printf("		  Solve		  !\n");
printf("-----------------------------------------------\n");
}


[b]Добавлено: [/b]void Save()
{
FILE *stream;
stream=fopen("Result.txt", "w+");

fprintf(stream, "This file contains the results\n\nIteration	 x		  y\n");
fprintf(stream, "----------------------------------\n");

for (int i=0; i<RecNum-1; i++)
fprintf(stream, "  %d		 %f  %f\n", i+1, Data[i].x, Data[i].y);


fclose(stream);

clrscr();
DrawMainMenu();
gotoxy(20, 9);
printf("------------------------------------------");
gotoxy(20, 10);
printf("! File Result.txt is succesfully saved !");
gotoxy(20, 11);
printf("!										!");
gotoxy(20, 12);
printf("!		 Press any key to EXIT		 !");
gotoxy(20, 13);
printf("------------------------------------------");
getch();
}
void Open()
{
FILE *stream;
char *str;
str=new char[255];
clrscr();

stream=fopen("Result.txt", "o");

fscanf(stream, str);
printf(str);

delete str;
fclose(stream);

printf("\n\n---------------------");
printf("\nPress any key to EXIT");
getch();
}

void FileMenu()
{
char ch;

clrscr();
DrawMainMenu();
printf("		 ! Save !\n");
printf("		 ! Open !\n");
printf("		 ----------\n");

ch=getch();

switch (ch)
{
case 's':
Save();
break;

case 'o':
Open();
break;

default:
break;
}
}



void Newton(int func, double a)
{
RecNum=0;

double x0, y0;
int x, y;
int i=0;
x0=a;



Data[i].x=x0;
Data[i].y=f(func, x0);
i++;
printf("%f  ", x0);
printf("%f \n", f(func, x0));

x=x0*20+440;
y=-f(func, x0)*20+280;


while (fabs(f(func, x0))>0.000001)
{
x0=x0-f(func, x0)/f1(func, x0);
Data[i].x=x0;
Data[i].y=f(func, x0);
i++;
printf("%f  ", x0);
printf("%f \n", f(func, x0));
x=x0*20+440;
y=-f(func, x0)*20+280;

}

RecNum=i;



printf("\n---------------------");
printf("\nPress any key to EXIT");
}
void SolveMenu()
{
char ch;

clrscr();
DrawMainMenu();
printf("				 ! 1: ax^2+bx+c	 [1, 8] !\n");
printf("				 ! 2: ax^3+bx^2+cx+d [-7, 1] !\n");
printf("				 ! 3: sin(x/k-w)	 [-2, 5] !\n");
printf("				 -----------------------------\n");

ch=getch();

switch (ch)
{
case '1':
clrscr();
DrawMainMenu();
Newton(1, 1);
getch();

break;

case '2':
clrscr();
DrawMainMenu();
Newton(3, -7);
getch();

break;

case '3':
clrscr();
DrawMainMenu();
Newton(2, -2);
getch();

break;

default:
break;
}
}
 
T

tig1818c

только не взял, а взяла))) Это кусок из моей курсовой работы, решения нелинейных уравнений методом Ньютона.

Прога "ругается" на float f(int func, float x) и на float f1(int func, float x)
она выбивает даже не как ошибку, а как предупреждение и не хочет компилировать(

Можно попробовать написать функу по классической схеме:

C++:
float f(int func, float x)
{
float result;
switch (func)
{
case 1:
result = 0.348*x*x+0.696*x-8.348;
break;
case 2:
result = 8*sin(x/2+3.14/8);
break;
case 3:
result = 0.21*x*x*x+0.85*x*x-2.34*x-0.4;
break;
default : result = 0;
}
return result;
}
 
V

vamp

сейчас попробую

Добавлено: спасибо)
но сработало только для f, а для f1 нет(
 
L

lazybiz

А нечитабельный он становится, потому что вы его в тэг С++ не ставите.

Добавлено: vamp, не, на почту кидать не надо, кидай сюда.
Можешь написать в ICQ: 373706950
 
V

vamp

у меня еще выбивает в конце что типа присваиваются значения x, y которые никогда не используются
 
V

vamp

я объявила переменные для массива, но в ходе компиляции выдало ошибку, что присваиваемые значения x и y нигде не используются, помогите исправить, пожалуйста

вот код

C++:
void Newton(int func, double a)
{	  
RecNum=0;
int x, y;
double x0, y0;

int i=0;
x0=a;



Data[i].x=x0;
Data[i].y=f(func, x0);
i++;
printf("%f  ", x0);
printf("%f \n", f(func, x0));

x=x0*20+440;
y=-f(func, x0)*20+280;


while (fabs(f(func, x0))>0.000001)
{
x0=x0-f(func, x0)/f1(func, x0);
Data[i].x=x0;
Data[i].y=f(func, x0);
i++;
printf("%f  ", x0);
printf("%f \n", f(func, x0));
x=x0*20+440;
y=-f(func, x0)*20+280;

}

RecNum=i;



printf("\n---------------------");
printf("\nPress any key to EXIT");
}


lazybiz: Давай ты уже научишься пользоваться тэгами!
 
L

lazybiz

То что "что присваиваемые значения x и y нигде не используются" это предупреждение, а не ошибка.
 
L

lazybiz

Удали из функции Newton декларацию:
C++:
int x, y;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!