1. حسین :)
  2. برنامه‌نویسی و طراحی وب
  3. یکشنبه, 24 فروردين 1393
سلام
فلوچارتی نوشتم که می تواند دو عدد را بگیرد و ک.م.م و ب.م.م آن را حساب کند.
شما نگاه کنید ببینید خطایی داره یا نه؟
http://8pic.ir/images/88004209923711796009.jpg
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
طریقه محاسبه‌ی ب.م.م (gcd) رو نمی‌فهمم ... اما در کل بهترین روش برای بدست آوردن gcd الگوریتم اقلیدس

خیلی هم ساده است پیدا سازیش ...
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
تستش کردم ظاهرا درست کار میکنه.
حالا کد نویسی اون به زبان C چطور میشه؟!
اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
تا یک جاییشو بلدم.
الان تصویر جدید رو آپلود میکنم.
اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
بقیش رو نمی دونم
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
1
رای
پس‌گیری
میشه لطف کنی کدت رو به صورت متن تو قسمت کد همین جا بنویسی که هم خوندش راحت تر باشه و هم تست کردنش برای من .. ممنون
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
راستش اون تیکه ای که نوشتم مهم نیست شما فقط کد اون قسمت فلوچارت که حلقه هست لطف کنید بنویسید یعنی بعد از از اون جایی که i=1 شده
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
1
رای
پس‌گیری
اینکه گفتم طرحتون رو نمی‌فهمم فکر کنم سخت فکر کردید راه حل راحتش لم اقلیدس هست که کدش اینه

int gcd(int x, int y){
if (y == 0) {
return x;
} else {
return gcd(y, x % y);
}
}


الگوریتمش هم اینه


#از x به اندازهٔ y کم کن، و مقدار جدید را به جای x جایگذاری کن
#قدم بالا را آن قدر تکرار کن تا x از y کوچک‌تر شود
#جای x و y را عوض کن و قدم‌ها بالا را تکرار کن، تا وقتی که مقدار x صفر شود؛ در این حالت، مقدار y برابر با ب.م.م. دو عدد x و y خواهد بود.
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
سوال دیگری هم دارم
اگه بخواهیم بعد از اجرا یک دستوری منتقل بشه جای دیگری
کدش چطوریه؟
منظورم تگ یا برچسب گذاریه؟
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
1
رای
پس‌گیری
هیچی یه جا لیبل میذاری بعدش دونقطه( : ) بعد هر جا خواستی با دستور goto میری اونجا ... به همین راحتی


lable:somecode ..

,,,


goto lable;
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
اگه بخواهی دو تا شرط را همزمان بررسی کنه چکار باید کنیم؟
چی باید بنویسیم؟
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
1
رای
پس‌گیری
هر شرط یک مقدار bool است پس می‌توانی هر چندتا شرط را که خواستی با هم ترکیب کنی با عملگرهای AND ( که به صورت && نوشته میشه) و OR (که به صورت ||) نوشته میشه ... مثلا
اگر a بیشتر از صفر و b کمتر از یک یا a برابر ۱۰ باشد



if((a>0) && (b<1) || (a==10))
{
}

حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
http://8pic.ir/images/06307044064300790069.png
ارورش بخاطر چیه؟
اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
در واقع دستور باقیمانده ی a بر b چی میشه؟!
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
1
رای
پس‌گیری
به چند دلیل

۱. آکولاد main بسته نشد
۲. if هیچ خطی بعدش نیست
۳. if اولی اشتباه هست و معنیش نمیشه a و b کوچیکتر از 0 باشه
۴. if دومی هم اشتباهه

درست if اول
if((a<0) &&(b<0)
{
}

درست if دوم

if((a<=b) && (a%b)==0)
{
}
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
تابع رادیکال در C چیه؟
اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
http://8pic.ir/images/99669401669942434020.png
ارورش چیه؟
خدا دارم دیوونه میشم!
موضوعش هم در مورد بدست آوردن معادلات درجه 1 و درجه 2 هست.
اللهم عجل لولیک الفرج
حمید بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
قبل از main
int نذاشتی
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
یعنی چطوری؟!
اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
ویرایش هم کردم ولی اون ارور هنوز هست!
http://8pic.ir/images/00059191003122653288.png
اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
هیچ تابعی نمی‌تونه هیچی نباشه ... شما می‌تونید تابعتون رو از هر نوعی از جمله int تعریف کنید در ضمن در return تابع نیست که آرگومان بگیرد ... پس درستش اینه


int main()
{
return 0;
}
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
http://8pic.ir/images/96201073131408899891.png
هنوز ارورش نرفته!
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
1
رای
پس‌گیری
لطفا جای عکس از خود کد استفاده کنید
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
#include<stdio.h>
#include<math.h>
float main()
{
float a,b,c,del,x,x1,x2;
scanf("a=%f\nb=%f\nc=%f\n",&a,&b,&c);
if (a==0)
{
x=-1*c/b;
printf("\nX=%f",x);
}
del=b*b-4*a*c;
if (del<0)
{
printf("\nno real root!");
}
if (del==0)
{
x=((-1*b)-(powf (del,0.5))/2*a);
printf("\nx=%f",x);
}
x1=(-1*b+powf(del,0.5))/2*a;
x2=(-1*b-powf(del,0.5))/2*a;
printf("\nx1=%f\tx2=%f",x1,x2);
return(0);
}




اللهم عجل لولیک الفرج
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
#include<stdio.h>
#include<math.h>
float main()
{
float a,b,c,del,x,x1,x2;
scanf("a=%f\nb=%f\nc=%f\n",&a,&b,&c);
if (a==0)
{
x=-1*c/b;
printf("\nX=%f",x);
}
del=b*b-4*a*c;
if (del<0)
{
printf("\nno real root!";);
}
if (del==0)
{
x=((-1*b)-(powf (del,0.5))/2*a);
printf("\nx=%f",x);
}
x1=(-1*b+powf(del,0.5))/2*a;
x2=(-1*b-powf(del,0.5))/2*a;
printf("\nx1=%f\tx2=%f",x1,x2);
return(0);
}
اللهم عجل لولیک الفرج
حمید بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
بفرما ./ http://www.shiaupload.ir/images/17685270105506431858.png

کدهایی که جلوش خط کشیدم یا اضافه شدن یا تصحیح
Mohammad Shobeiri بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
ببخشید خونه نبودم ...


اشکال شما مربوط میشه به هدر؛ باید این قسمت بالا اضافه بشه #include "stdafx.h"

شما هیچ نیازی به بقیه بخش‌های که در کد آقا حمید هست ندارید ...

البته همون طور که گفتم return یک تابع نیست که آرگومان بگیره (آرگومان ها در درون پرانتز قرار می‌گیرند) اما شما اصلا نیازی به return ندارید ...

getch هم فقط برای اینکه یهو نپره بیرون و منتظر بشه که شما یک کارکتر وارد کنید تا خارج بشه ... برای این که نتایج رو راحت تر ببینید ... البته برای این کار مجبورید هدر دیگه conio رو اضافه کنید

اما ممکنه مثل من با error c4996 مواجه بشید ...
برای حل اون باید این بخش پایین include ها و بالای همه‌ی کدها این قسمت رو وارد کنید
#pragma warning(disable: 4996)

برای اینکه به خط بد هم نری بهتره در scanf تغییری بدی چون این کارکتر ممکنه که یکسان نباشه بهتره به جای خط بد از خط فاصله استفاده کنی


#include "stdio.h"
#include "stdafx.h"
#include "math.h"

#pragma warning(disable: 4996)


int main()
{
float a, b, c, del, x, x1, x2;

scanf("a=%f b=%f c=%f\n", &a, &b, &c);
if (a == 0)
{
x = -1 * c / b;
printf("\nX=%f", x);
}
del = b*b - 4 * a*c;
if (del<0)
{
printf("\nno real root!";);
}
if (del == 0)
{
x = ((-1 * b) - (powf(del, 0.5)) / 2 * a);
printf("\nx=%f", x);
}
x1 = (-1 * b + powf(del, 0.5)) / 2 * a;
x2 = (-1 * b - powf(del, 0.5)) / 2 * a;
printf("\nx1=%f\tx2=%f", x1, x2);


}
حسین :) بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
میگم میشه توی متغیرها یک متغیر به شکل زیر تعریف کنیم تا چند تا متغیر به تعداد نیاز داشته باشیم.
int a(i)
i=1
while( i == 1000)
{
i+1}


اونوقت الان 1000 تا متغیر داریم.
اللهم عجل لولیک الفرج
Mohammad Shobeiri بهترین پاسخ Pending Moderation
0
رای
پس‌گیری
میشه اما این شکلی نه

به این نوع متغییر میگن آرایه ... آرایه‌ها در زبان‌های برنامه نویسی مختلف متفاوت تعریف می‌شن ...

در زبان C هم آرایه‌ها به صورت زیر تعریف می‌شن

مثلا یک آرایه‌ی از نوع int به اندازه‌ی ۱۰۰۰ (اندازه حتما باید مشخص بشه ...)

int myarray[1000] = { };


همه مقادیر در این حالت به صورت پیش فرض ۰ (صفر) هستند

اگر بخواهیم مقادیر متفاوت بدیم می‌تونید از این کد زیر استفاده کنید در این حالت تعیین اندازه آرایه لازم نیست

int myarray[] = { 16, 2, 77, 40, 12071 };




اگر بخواهید مقدادیر اولیه زیاد داشته باشید و همه یکسان باشند اما غیر صفر(برای صفر همون اولی درسته) این کار در c++ ویژال استدیو امکان پذیر نیست به صورت مستقیم باید از کد زیر استفاده کنی


int myarray[100] ;

for (int i = 0; i< sizeof(myarray) / sizeof(int);i++)
{
myarray[i] = 5;
}

برای بدست آوردن طول آرایه در c++ نمی‌تونی از length که در C# استفاده می‌شه استفاده کنی اینجا باید از تقسیم اندازه آرایه بر اندازه نوع متغییر استفاده کنی

sizeof(myarray) / sizeof(int)


اما اگر از کامپایلر GCC* استفاده می‌کنی می‌تونی از کد زیر به جای کد بالا برای مقدار دهی اولیه‌ی غیر صفر استفاده کنی

int myarray[1024] = {[0 ... 1023] = 5};

-------------
*GCC یا همان GNU Compiler Collection مجموعه‌ای از کامپایلرهاست برای زبانهای برنامه نوسی مختلف که بوسیله پروژه گنو بوجود آمده است.
  • صفحه :
  • 1
  • 2


هنوز پاسخی به این پست ارسال نشده است.
البته از آنجایی که هنوز در سایت لاگین نکرده‌اید، اجازه‌ی پاسخ دادن به این پست را ندارید.

ورود / ثبت‌نام

 

کاربران فعال این ماه

AMIR
Super User
مسعود یوسف‌نژاد
نازنین امامی
علی مردانی