PDA

View Full Version : سوال: برنامه حل معادله درجه 2 + خطای کامپایلر !!!



mechanical
جمعه 12 فروردین 1390, 16:53 عصر
با سلام....
دوستان عزیز ..
برای حل معادله درجه 2 من برنامه زیر رو نوشتم(اگر دلتا - بود قسمت موهومی را نشان بدهد)

ولی کامپایلر اخطار میده....به نظر شما مشکلش کجاست؟؟؟
البته دو سطر زیر رو به رنگ آبی در میاره..
if (delta>0) {
Result<<"root1 is"<<root1<<endl;

#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<fstream.h>
#include<iomanip.h>
int main()
{
float root1;
float root2;
float a;
float b;
float c;
float m;
float root15;
float root115;
float delta;
ifstream Quad;
ofstream Result;

Quad.open("quad.dat");
Result.open("result.dat");

Quad>>a>>b>>c ;

if ( a==0 && b==0 )
cout<<"ERROR" ;

if ( a==0 ) {
m=-b/c ;
Result<<setw(8)<<m;
}

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

if (delta>0) {
root1=((-b)+sqrt(delta))/(2*a);
root2=((-b)-sqrt(delta))/(2*a);
Result<<"root1 is"<<root1<<endl;
Result<<"root2 is"<<setw(10)<<root2;
}

if ( delta==0 ) {
root1= (-b)/(2*a);
Result<<"root 1 equl root 2 ="<<root1;
}

if (delta<0) {
root15=(-b)/(2*a);
root115=sqrt(-delta)/(2*a);
if(a>0) {
Result<<"root 1 is"<<root15<<"+"<<root115<<"i";
Result<<"root 2 is"<<root15<<"-"<<root115<<"i"; }
else if(a<0) {
Result<<"root 1 is"<<root15<<"-"<<root115<<"i";
Result<<"root 1 is"<<root15<<"+"<<root115<<"i"; }
}
getch();
return 0 ;
}

mechanical
جمعه 12 فروردین 1390, 16:54 عصر
ناگفته نماند فایل quadموجود هست

NIMA_1981
جمعه 12 فروردین 1390, 22:02 عصر
من اون قسمت فایل رو حذف کردم برنامه درست کار میکنه احتمالا مشگل در استفاده از فایل هست


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

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

cin>>a>>b>>c ;
if ( a==0 && b==0 )
cout<<"ERROR" ;
if ( a==0 ) {
m=-b/c ;
cout<<setw(8)<<m;
}
delta=(b*b)/(4*a*c);
if (delta>0) {
root1=((-b)+sqrt(delta))/(2*a);
root2=((-b)-sqrt(delta))/(2*a);
cout<<"root1 is"<<root1<<endl;
cout<<"root2 is"<<setw(10)<<root2;
}
if ( delta==0 ) {
root1= (-b)/(2*a);
cout<<"root 1 equl root 2 ="<<root1;
}
if (delta<0) {
root15=(-b)/(2*a);
root115=sqrt(-delta)/(2*a);
if(a>0) {
cout<<"root 1 is"<<root15<<"+"<<root115<<"i";
cout<<"root 2 is"<<root15<<"-"<<root115<<"i"; }
else if(a<0) {
cout<<"root 1 is"<<root15<<"-"<<root115<<"i";
cout<<"root 1 is"<<root15<<"+"<<root115<<"i"; }
}
getch();
return 0 ;
}

mechanical
جمعه 12 فروردین 1390, 23:01 عصر
ممنون از شما....درست میگید

میشه کاربرد اینارو بگید...
#include <string>
using namespace std;

NIMA_1981
شنبه 13 فروردین 1390, 13:02 عصر
استفاده از این نوع دستور ها بسته به نوع کمپایلر شما دارد


using namespace std;


تمام عناصر اصلی برنامه ++ c در فضای نامی برنامه std قرار دارد پس همواره این خط باید در برنامه باشد و اگه بدون این دستور برنامه بنویسید باید به این شکل می نوشتیتد


std::cout << "barnamenevis";


هدف namespace چنین است که بتوانید کلمه cout و موارد مشابه را حتی وقتی فایل iostream را include می کنید در نام متغیر ها نیز استفاده کنید و خطا دریافت نکنید. مثل همین مشکل برنامه شما



#include <string>



این کلاس وظیفه ذخیره سازی رشته ها را دارد. قبلا باید برای ذخیره یک رشته از یک ارایه از نوغ char ذخیره میکردیم که مشکلات زیادی داشت مثل محدودیت در ذخیره سازی و این کلاس همه این کار های رو برای ما بصورت خودکار انجام میده

موفق باشید

mechanical
دوشنبه 15 فروردین 1390, 21:36 عصر
ممنون از نیما...این برنامه رو بدون فایل یعنی همون که نیما اصلاحش کرد اجرا میکنم درسته ولی وقتی فایلارو اضافه میکنم ارور میده...
فایل ورودی و خروجی موجوده و دستورشم بالا تو برنامه نوشتم....به نظرتون مشکلش کجاست؟؟؟

تشکر

khoshi_ad2707
سه شنبه 11 بهمن 1390, 22:48 عصر
نمیدونم اگه کامپایلر حل معادله درجه 2 رو دارین لطفا به این ایمیل ارسال فرمائید
اورژانسیه khoshi_ad2707@yahoo.com