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

  • Автор темы Автор темы 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;
}
 
Если это весь код который есть, то проще будет указать на те места где ошибок нет. Где ты его взял?
 
Если это весь код который есть, то проще будет указать на те места где ошибок нет. Где ты его взял?

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

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

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

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;
}
}
 
только не взял, а взяла))) Это кусок из моей курсовой работы, решения нелинейных уравнений методом Ньютона.

Прога "ругается" на 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;
}
 
сейчас попробую

Добавлено: спасибо)
но сработало только для f, а для f1 нет(
 
А нечитабельный он становится, потому что вы его в тэг С++ не ставите.

Добавлено: vamp, не, на почту кидать не надо, кидай сюда.
Можешь написать в ICQ: 373706950
 
у меня еще выбивает в конце что типа присваиваются значения x, y которые никогда не используются
 
я объявила переменные для массива, но в ходе компиляции выдало ошибку, что присваиваемые значения 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: Давай ты уже научишься пользоваться тэгами!
 
То что "что присваиваемые значения x и y нигде не используются" это предупреждение, а не ошибка.
 
Удали из функции Newton декларацию:
C++:
int x, y;
 
Мы в соцсетях:

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