انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: یه شل اسکریپت ساده  (دفعات بازدید: 1546 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین PunkGeek

  • High Sr. Member
  • *
  • ارسال: 573
یه شل اسکریپت ساده
« : 21 اسفند 1392، 02:06 ق‌ظ »
سلام دوستان
به یه شل اسکریپت نیاز دارم که این مسئله برام حل کنه، اگه با پایتون یا چیزه دیگه هم بود مشکلی نداره
ببینید:
(x,y) جز اعداد طبیعی (غیر اعشاری) باشه
به طوری که
3x+4y=1164
این دو عدد x و y رو میخوام به دست بیارم
پیشا پیش ممنونم از کمکتون
« آخرین ویرایش: 21 اسفند 1392، 02:25 ق‌ظ توسط PunkGeek »

آفلاین HSN6

  • Hero Member
  • *
  • ارسال: 866
  • جنسیت : پسر
  • یک راَکتیست اسپرانتیست پایتونیست گودوئیست!
    • بلاگ شخصی
پاسخ : یه شل اسکریپت ساده
« پاسخ #1 : 21 اسفند 1392، 06:09 ق‌ظ »
اگه y رو بر حسب x بنویسیم و بخواهیم y بزرگ‌تر از صفر و صحیح باشد (یعنی عضو مجموعه‌ی اعداد طبیعی باشد.) نتیجه می‌گیریم که x باید از مضارب 4 باشد و چون تا بی‌نهایت مضرب 4 داریم ؛ پس این مسئله بی‌نهایت جواب داره.
معمولا توی این‌جور مسائل ، چند معادله به همین شکل می‌دهند تا جواب‌ها محدودتر شوند.

آفلاین محسن صفری

  • Jr. Member
  • *
  • ارسال: 47
  • جنسیت : پسر
    • صفری آنلاین
پاسخ : یه شل اسکریپت ساده
« پاسخ #2 : 21 اسفند 1392، 10:43 ق‌ظ »
من زیاد ریاضیم خوب نیست ولی چیزی که مشخصه اینه که مساله شما بیشتر از یه جواب داره . کد زیر رو با 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

آفلاین PunkGeek

  • High Sr. Member
  • *
  • ارسال: 573
پاسخ : یه شل اسکریپت ساده
« پاسخ #3 : 21 اسفند 1392، 02:48 ب‌ظ »
من زیاد ریاضیم خوب نیست ولی چیزی که مشخصه اینه که مساله شما بیشتر از یه جواب داره . کد زیر رو با 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++ رو اجرا کنم؟

آفلاین احسان☺ -

  • Hero Member
  • *
  • ارسال: 937
  • جنسیت : پسر
  • !no power geek
پاسخ : یه شل اسکریپت ساده
« پاسخ #4 : 21 اسفند 1392، 03:21 ب‌ظ »
این دقیقا همون چیزی هست که من میخوام، میشه بگید چجوری میتونم 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);
}

آفلاین PunkGeek

  • High Sr. Member
  • *
  • ارسال: 573
پاسخ : یه شل اسکریپت ساده
« پاسخ #5 : 21 اسفند 1392، 03:26 ب‌ظ »
این دقیقا همون چیزی هست که من میخوام، میشه بگید چجوری میتونم 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);
}
نه منظورم اینه که با چه دستوری توی لینوکس این رو ران بگیرم؟

آفلاین احسان☺ -

  • Hero Member
  • *
  • ارسال: 937
  • جنسیت : پسر
  • !no power geek
پاسخ : یه شل اسکریپت ساده
« پاسخ #6 : 21 اسفند 1392، 03:31 ب‌ظ »
نقل‌قول
نه منظورم اینه که با چه دستوری توی لینوکس این رو ران بگیرم؟
بریزیدش توی یه فایل مثلا file.cpp حالا با ترمینال به مسیر فایل برید و بزنید:g++ file.cppخودش یه فایل به اسم a.out میسازه که میتونید با زدن ./a.out اجراش کنید.
اگه ایراد گرفت که نمیشناسه و... احتمالا کامپایلر نصب نیست پس با دستور زیر نصبش کنید.
sudo apt-get install build-essential
« آخرین ویرایش: 21 اسفند 1392، 03:32 ب‌ظ توسط احسان☺ »