انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: PunkGeek در 21 اسفند 1392، 02:06 قظ
-
سلام دوستان
به یه شل اسکریپت نیاز دارم که این مسئله برام حل کنه، اگه با پایتون یا چیزه دیگه هم بود مشکلی نداره
ببینید:
(x,y) جز اعداد طبیعی (غیر اعشاری) باشه
به طوری که
3x+4y=1164
این دو عدد x و y رو میخوام به دست بیارم
پیشا پیش ممنونم از کمکتون
-
اگه y رو بر حسب x بنویسیم و بخواهیم y بزرگتر از صفر و صحیح باشد (یعنی عضو مجموعهی اعداد طبیعی باشد.) نتیجه میگیریم که x باید از مضارب 4 باشد و چون تا بینهایت مضرب 4 داریم ؛ پس این مسئله بینهایت جواب داره.
معمولا توی اینجور مسائل ، چند معادله به همین شکل میدهند تا جوابها محدودتر شوند.
-
من زیاد ریاضیم خوب نیست ولی چیزی که مشخصه اینه که مساله شما بیشتر از یه جواب داره . کد زیر رو با C نوشتم .
#include <stdio.h>
int main() {
int y = 1, x;
float t;
while(y++) {
t = (1164 - 4 * y ) / 3.0;
if (t == (int)t) {
x = (int)t;
printf("x:%d\ty:%d ---> 3*%d+4*%d=%d\n", x, y, x, y, 3 * x + 4 * y);
}
if (t <= 0 )
break;
}
return (0);
}
معادله رو بر حسب x نوشتم و متغیرِ y رو یکی زیاد می کنم و x رو به دست میارم .
این هم چند خط خروجی
x:384 y:3 ---> 3*384+4*3=1164
x:380 y:6 ---> 3*380+4*6=1164
x:376 y:9 ---> 3*376+4*9=1164
x:372 y:12 ---> 3*372+4*12=1164
x:368 y:15 ---> 3*368+4*15=1164
x:364 y:18 ---> 3*364+4*18=1164
x:360 y:21 ---> 3*360+4*21=1164
x:356 y:24 ---> 3*356+4*24=1164
x:352 y:27 ---> 3*352+4*27=1164
x:348 y:30 ---> 3*348+4*30=1164
-
من زیاد ریاضیم خوب نیست ولی چیزی که مشخصه اینه که مساله شما بیشتر از یه جواب داره . کد زیر رو با C نوشتم .
#include <stdio.h>
int main() {
int y = 1, x;
float t;
while(y++) {
t = (1164 - 4 * y ) / 3.0;
if (t == (int)t) {
x = (int)t;
printf("x:%d\ty:%d ---> 3*%d+4*%d=%d\n", x, y, x, y, 3 * x + 4 * y);
}
if (t <= 0 )
break;
}
return (0);
}
معادله رو بر حسب x نوشتم و متغیرِ y رو یکی زیاد می کنم و x رو به دست میارم .
این هم چند خط خروجی
x:384 y:3 ---> 3*384+4*3=1164
x:380 y:6 ---> 3*380+4*6=1164
x:376 y:9 ---> 3*376+4*9=1164
x:372 y:12 ---> 3*372+4*12=1164
x:368 y:15 ---> 3*368+4*15=1164
x:364 y:18 ---> 3*364+4*18=1164
x:360 y:21 ---> 3*360+4*21=1164
x:356 y:24 ---> 3*356+4*24=1164
x:352 y:27 ---> 3*352+4*27=1164
x:348 y:30 ---> 3*348+4*30=1164
این دقیقا همون چیزی هست که من میخوام، میشه بگید چجوری میتونم c++ رو اجرا کنم؟
-
این دقیقا همون چیزی هست که من میخوام، میشه بگید چجوری میتونم c++ رو اجرا کنم؟
منظورتون اینه c++اش چی میشه؟
فقط کافیه cout رو با printf جایگزین کنیم و کتابخانه رو هم همینطور:
#include <iostream>
using namespace std;
int main() {
int y = 1, x;
float t;
while(y++) {
t = (1164 - 4 * y ) / 3.0;
if (t == (int)t) {
x = (int)t;
cout << "x:"<<x<<"\ty:"<<y<<"\t--->\t"<<"3*"<<x<<"+4*"<<y<<"=1164"<<endl;
}
if (t <= 0 )
break;
}
return (0);
}
-
این دقیقا همون چیزی هست که من میخوام، میشه بگید چجوری میتونم c++ رو اجرا کنم؟
منظورتون اینه c++اش چی میشه؟
فقط کافیه cout رو با printf جایگزین کنیم و کتابخانه رو هم همینطور:
#include <iostream>
using namespace std;
int main() {
int y = 1, x;
float t;
while(y++) {
t = (1164 - 4 * y ) / 3.0;
if (t == (int)t) {
x = (int)t;
cout << "x:"<<x<<"\ty:"<<y<<"\t--->\t"<<"3*"<<x<<"+4*"<<y<<"=1164"<<endl;
}
if (t <= 0 )
break;
}
return (0);
}
نه منظورم اینه که با چه دستوری توی لینوکس این رو ران بگیرم؟
-
نه منظورم اینه که با چه دستوری توی لینوکس این رو ران بگیرم؟
بریزیدش توی یه فایل مثلا file.cpp حالا با ترمینال به مسیر فایل برید و بزنید:g++ file.cpp
خودش یه فایل به اسم a.out میسازه که میتونید با زدن ./a.out
اجراش کنید.
اگه ایراد گرفت که نمیشناسه و... احتمالا کامپایلر نصب نیست پس با دستور زیر نصبش کنید.
sudo apt-get install build-essential