ورود

View Full Version : مشکل با استفاده از تابع حل معداله درجه دوم!



amin4d
جمعه 13 اردیبهشت 1392, 16:23 عصر
سلام. ببخشید خیلی تازه کارم. میشه بپرسم این کد من کجاهاش مشکل دار هست؟! و چی کارش کنم تا درست کار کنه؟
فقط خیلی عجله ای بهش احتیاج دارم دوستان. پیشاپیش ممنونم ازتون.


#include<conio.h>
#include<math.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;


float md2(float a, float b, float c)
{
float root1;
float root2;
float m;
float root15;
float root115;
float delta;

delta=(b*b)/(4*a*c);
if (delta>0) {
root1=((-b)+sqrt(delta))/(2*a);
root2=((-b)-sqrt(delta))/(2*a);
}
if ( delta==0 ) {
root1= (-b)/(2*a);
root2= root1;
}
if (delta<0) {
root15=(-b)/(2*a);
root115=sqrt(-delta)/(2*a);
if(a>0) {
root1= root15 + root115;
root1= root15 - root115;}
else if(a<0) {
root1= root15 - root115;
root1= root15 + root115; }

return root1,root2;
}

float main()
{
float d;
float e;
float f;

cout << " Enter 3 number ";
cin>>d>>e>>f ;
cout<<"root1 & root2 :"<<md2(d,e,f);
getch();
return 0;

مهدی اسماعیلی
جمعه 13 اردیبهشت 1392, 16:35 عصر
سلام،
تابع میتونه یک مقدار را return کنه
return root1,root2; اشتباه هست . . . تابع را طوری بنویسید که فقط یک مقدار (جواب) return کنه . .

در ضمن

delta=(b*b)-(4*a*c);

amin4d
جمعه 13 اردیبهشت 1392, 16:38 عصر
اینو متوجه شدم. الان تابع رو دو تا کردم و هرکدوم یکی از ریشه ها رو خروجی میدن. اما بازم ارور میده و اجرا نمیشه.
نمی دونم مشکلش از کجاس.

#include<conio.h>
#include<math.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;

float mda(int a, int b, int c)
{
float root1;
float root2;
float m;
float root15;
float root115;
float delta;

delta=(b*b)-(4*a*c);
if (delta>0) {
root1=((-b)+sqrt(delta))/(2*a);
root2=((-b)-sqrt(delta))/(2*a);
}
if ( delta==0 ) {
root1= (-b)/(2*a);
root2= root1;
}
if (delta<0) {
root15=(-b)/(2*a);
root115=sqrt(-delta)/(2*a);
if(a>0) {
root1= root15 + root115;
root1= root15 - root115;}
else if(a<0) {
root1= root15 - root115;
root1= root15 + root115; }

return root1;
}


float mdb(int a, int b, int c)
{
float root1;
float root2;
float m;
float root15;
float root115;
float delta;

delta=(b*b)-(4*a*c);
if (delta>0) {
root1=((-b)+sqrt(delta))/(2*a);
root2=((-b)-sqrt(delta))/(2*a);
}
if ( delta==0 ) {
root1= (-b)/(2*a);
root2= root1;
}
if (delta<0) {
root15=(-b)/(2*a);
root115=sqrt(-delta)/(2*a);
if(a>0) {
root1= root15 + root115;
root1= root15 - root115;}
else if(a<0) {
root1= root15 - root115;
root1= root15 + root115; }

return root2;
}

float main()
{
float d;
float e;
float f;

cout << " Enter 3 number ";
cin>>d>>e>>f ;
cout<<"root1 :"<<mda(d,e,f);
cout<<"root2 :"<<mdb(d,e,f);
getch();
return 0;
}

amin4d
جمعه 13 اردیبهشت 1392, 16:43 عصر
اینم اروری که موقع اجرا میده:


http://img.majidonline.com/thumb/291211/Eror 01.jpg (http://img.majidonline.com/show/291211/Eror 01.jpg)

Ananas
جمعه 13 اردیبهشت 1392, 16:45 عصر
delta=(b*b)/(4*a*c);
دلتا مساویه بی دو تقسیم بر چهار آ سی نه! غلطه!
دلتا مساویه بی دو منهای چهار آ سی.

مهدی اسماعیلی
جمعه 13 اردیبهشت 1392, 16:49 عصر
اینو متوجه شدم. الان تابع رو دو تا کردم و هرکدوم یکی از ریشه ها رو خروجی میدن. اما بازم ارور میده و اجرا نمیشه.
نمی دونم مشکلش از کجاس

شما یک { کم گذاشتید . . .

اگه توی کد نویسی تو رفتگی ها رو رعایت کنین به این مشکل نمیخورید . . .


if (delta<0) {
بعد از این ، آکولاد را نبستید

کد خودتون را مجددا چک کنید ... اگر متوجه نشدید بگید تا براتون بنویسم . . .

amin4d
جمعه 13 اردیبهشت 1392, 17:10 عصر
ممنون از همگی.
یه کم با اون کدا گیر داشتم.
توابعو این بار اینجوری نوشتم:

#include<conio.h>
#include<math.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;

float mda(int a, int b, int c)
{
float r1;
float r2;
float m;
float d;

d= (b*b) - (4*a*c);
if (d>0){
r1=((-b)-sqrt(d))/(2*a);
r2= ((-b)+sqrt(d))/(2*a);
}
else if (d==0){
r1 = (-b)/(2*a);
}
else if (d<0){
r1 = 0;
}
return r1;
}

float mdb(int a, int b, int c)
{
float r1;
float r2;
float m;
float d;

d= (b*b) - (4*a*c);
if (d>0){
r1=((-b)-sqrt(d))/(2*a);
r2= ((-b)+sqrt(d))/(2*a);
}
else if (d==0){
r1 = (-b)/(2*a);
r2 = r1;
}
else if (d<0){
r2 = 0;
}
return r2;
}

void main()
{
float a;
float b;
float c;
float d;
int p;


do
{
cout << " Enter 3 number ";
cin>>a>>b>>c ;
d= (b*b) - (4*a*c);
if (d<0)
cout << " rishe haghighi nadarad. " ;

else cout<<"root1 :"<<mda(a,b,c)<<" root2 :" <<mdb(a,b,c);
cout<<"\n\n ghasd e edame dadan darid? 1/0 : ";
cin>>p;
}while (p==1);

getch();
}

اجرا شد ایندفعه.
بازم ممنون از همگی.