• اگر سمپادی هستی همین الان عضو شو :
    ثبت نام عضویت

مقدمات برنامه نویسی با ++C

پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Daneshvar :
میشه بگید از کدوم define ها و include ها در این برنامه استفاده شده است؟
فقط string و iostream
خو عزیز این یک سوال بدیهی بود :) ، ولی سوالای سخت تر که ایده های جالب تر دارن ، برا آسون تر شدنشون خیلی چیزا لازم میشه !
آدم همه اینا رو include میکنه که براش وقت گیر نشه در آینده اگه نیازش بود !
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از vector :
فقط string و iostream
خو عزیز این یک سوال بدیهی بود :) ، ولی سوالای سخت تر که ایده های جالب تر دارن ، برا آسون تر شدنشون خیلی چیزا لازم میشه !
آدم همه اینا رو include میکنه که براش وقت گیر نشه در آینده اگه نیازش بود !

اوکی ممنون. بهره بردیم! :لایک
 
پاسخ : مقدمات برنامه نویسی با ++C

این برنامه قراره هرگاه قرینه ی یک عددی بعد از همان عدد آمده بود، اعلام کنه بله یا نه. قراره خط اول ورودی t باشه که قراره t بار تست کنه. اولین عدد هر خط میگه که چند تا عدد هستش. برای مثال به صورت زیر هستند و کنار هم وارد می شوند.
1 1 -2 1- 1 2 3 4 4- 1
به طور مثال باید برای مورد دوم بله اعلام کنه چون که 1- بعد از 1 اومده. در مورد دوم عدد 2 میگه که قراره دو تا عدد بعدش بیاد(1- 1)
اینم کدش. نمی دونم کجا اشکال داره. کسی میتونه راهنمایی کنه؟
کد:
#include<iostream>
#include<conio.h>
#include<fstream>

using namespace std;

ifstream fin("input.txt");
ofstream fout("output.txt");

int main()
{
    int t,x,n;
    fin>>t;
    
    for (int i=0;i<t;i++)
    {
        fin>>n;
        int a[n+1];
        
        for (int j=1;j<=n;j++)
        fin>>a[j];
        
        for (int k=1;k<=n;k++) 
        {
             if ( (a[k+1]-a[k] == a[k]-2*a[k]) )
             {
                 fout<<"BALE";
                 break;
             } 
             else
             {
              if (k==n)
              fout<<"NA";
             }
        } 
        
        fout<<endl;
    } 
    
     return 0;
}
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Daneshvar :
این برنامه قراره هرگاه قرینه ی یک عددی بعد از همان عدد آمده بود، اعلام کنه بله یا نه. قراره خط اول ورودی t باشه که قراره t بار تست کنه. اولین عدد هر خط میگه که چند تا عدد هستش. برای مثال به صورت زیر هستند و کنار هم وارد می شوند.
1 1 -2 1- 1 2 3 4 4- 1
به طور مثال باید برای مورد دوم بله اعلام کنه چون که 1- بعد از 1 اومده. در مورد دوم عدد 2 میگه که قراره دو تا عدد بعدش بیاد(1- 1)
اینم کدش. نمی دونم کجا اشکال داره. کسی میتونه راهنمایی کنه؟
کد:
#include<iostream>
#include<conio.h>
#include<fstream>

using namespace std;

ifstream fin("input.txt");
ofstream fout("output.txt");

int main()
{
    int t,x,n;
    fin>>t;
    
    for (int i=0;i<t;i++)
    {
        fin>>n;
        int a[n+1];
        
        for (int j=1;j<=n;j++)
        fin>>a[j];
        
        for (int k=1;k<=n;k++) 
        {
             if ( (a[k+1]-a[k] == a[k]-2*a[k]) )
             {
                 fout<<"BALE";
                 break;
             } 
             else
             {
              if (k==n)
              fout<<"NA";
             }
        } 
        
        fout<<endl;
    } 
    
     return 0;
}
سوال میپرسی واضح بگو ، با مثال توضیح نده که سوال رو
اگه سواله بیانه میتونی PDF سوال رو دانلود کنی. دانلود کن و آپلود کنه برام
 
پاسخ : مقدمات برنامه نویسی با ++C

نمیدونم چرا اینقدر سخت فکر می کنی !!

بیا این کدِ درستش :
کد:
#include<iostream>
#include<conio.h>
#include<fstream>

using namespace std;

ifstream fin("input.txt");
ofstream fout("output.txt");

int main()
{
    int t,x,n;
    fin>>t;
    
    for (int i=0;i<t;i++)
    {
        fin>>n;
        int a[n+1];
        
        for (int j=1;j<=n;j++)
        fin>>a[j];
        
        for (int k=1;k<n;k++) 
        {
             if ( (a[k]==a[k+1]*-1) ) // Inja kharab bood !!
             {
                 fout<<"BALE";
                 break;
             } 
             else
             {
              if (k==n-1)
              fout<<"NA";
             }
        } 
        
        fout<<endl;
    } 
    
     return 0;
}
اونجا که چک می کردی ، یه عدد با عدد بعدیش قرینه هست یا نه ، رو اشتباه گذاشته بودی !! توی کد توضیحات گذاشتم که کجا رو غلط نوشتی
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از vector :
سوال میپرسی واضح بگو ، با مثال توضیح نده که سوال رو
اگه سواله بیانه میتونی PDF سوال رو دانلود کنی. دانلود کن و آپلود کنه برام

لینک PDF سوال:


http://www.mediafire.com/view/rf5hclrx2fzctxw/All_Problems.pdf


باید سوال نماد مرغوب رو بخونید
lممنون
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Dant3 :
نمیدونم چرا اینقدر سخت فکر می کنی !!

بیا این کدِ درستش :
کد:
#include<iostream>
#include<conio.h>
#include<fstream>

using namespace std;

ifstream fin("input.txt");
ofstream fout("output.txt");

int main()
{
    int t,x,n;
    fin>>t;
    
    for (int i=0;i<t;i++)
    {
        fin>>n;
        int a[n+1];
        
        for (int j=1;j<=n;j++)
        fin>>a[j];
        
        for (int k=1;k<n;k++) 
        {
             if ( (a[k]==a[k+1]*-1) ) // Inja kharab bood !!
             {
                 fout<<"BALE";
                 break;
             } 
             else
             {
              if (k==n-1)
              fout<<"NA";
             }
        } 
        
        fout<<endl;
    } 
    
     return 0;
}
اونجا که چک می کردی ، یه عدد با عدد بعدیش قرینه هست یا نه ، رو اشتباه گذاشته بودی !! توی کد توضیحات گذاشتم که کجا رو غلط نوشتی

عوضش کردم ولی هنوز درست کار نمی کنه. فکر کنم کلاً مشکل از الگوریتمه :-??
 
پاسخ : مقدمات برنامه نویسی با ++C

حاجی سوال رو اشتباه فهمیدی !! دوباره بخون. :|

میگه اگه یه عدد بیاد کنار قرینش ، این دو تا عدد با هم ناپدید میشن !! حالا بگید آخرش عددی میمونه یا نه .
 
پاسخ : مقدمات برنامه نویسی با ++C

مشکلت اینه اشتباه سوال رو میفهمی ! :)

برا توضیحی که دادی مثال نقض بیارم ؟ همین سومین Sample خودش مثال نقضی هست که گفتی :D

کد:
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <iomanip>
#include <sstream>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <deque>
#include <stack>
#include <utility>

using namespace std;

#define FOR(i,a,b) for (int i = (a); i < (int)(b); ++i)
#define FOREACH(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)

typedef long long int64;

vector <int> v;
int a[55];

int main () {
	freopen ("in.txt", "r", stdin);
	freopen ("out.txt", "w", stdout);
	int T;
	for (cin >> T; T--;) {
		v.clear();
		int n;
		cin >> n;
		FOR (i, 0, n)
			cin >> a[i];
		v.push_back(a[0]);
		FOR (i, 1, n) {
			if (!v.empty()) {
				if (a[i] < 0 && (a[i] * -1) == v.back())
					v.pop_back();
				else
					v.push_back(a[i]);
			}
			else
				v.push_back(a[i]);
		}
		if (v.size() == 0)
			puts ("BALE");
		else
			puts ("NA");
	}
        return 0;
}
کد درستش اینه.
 
پاسخ : مقدمات برنامه نویسی با ++C

میشه یه کم درباره کدتون توضیح بدین یا یه کد ساده تر بنویسین؟ الان این چیزی که نویشتین چیکار می کنه؟
دارین هر وقت قرینه دیدین دو تا رو از آرایه حذف می کنید؟ برای حذفش از دستور []delete arrayname استفاده کرد؟ آیا باید include خاصی اون بالا نوشته بشه؟
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Daneshvar :
میشه یه کم درباره کدتون توضیح بدین یا یه کد ساده تر بنویسین؟ الان این چیزی که نویشتین چیکار می کنه؟
دارین هر وقت قرینه دیدین دو تا رو از آرایه حذف می کنید؟ برای حذفش از دستور []delete arrayname استفاده کرد؟ آیا باید include خاصی اون بالا نوشته بشه؟
خوب بزار بگم که کد من خیلی سادس ! شما یکم دانش برنامه نویسی‌ت کمه به خاطر همین ممکنه متوجه نشی
بهت پیشنهاد میکنم حتما vector رو یاد بگیر چون خیلی به دردت میخوره.
توی کدمم هم کار خاصی نکردم :) فقط اومدم چک کردم که این آجرهایی که قراره روی هم دیگه گذاشته بشه ، مثل شرط مسئله هست یا نه.
توی این قسمت
کد:
v.push_back(a[0]);
اومدم اولین آجر رو گذاشتم رو زمین.
توی این قسمت شروع میکنم بقیه آجر هایی رو که برام مونده میزارم و شرط مسئله رو چک میکنم
کد:
FOR (i, 1, n)
توی این قسمت چک میکنم که آیا هنوز آجری روی زمین دارم یا ندارم (۱) :
کد:
if (!v.empty())
توی این چند خط میام برای هر آجر جنسش رو تشخیص میدم که نامرغوبه یا خیلی نامرغوب و اگه رویی ترین آجری که دارم نامرغوب باشه و آجری که انتخاب کردم و تو دستمه خیلی نامرغوب باشه ، اون ۲ تا آجر رو میریزم دور.
کد:
if (a[i] < 0 && (a[i] * -1) == v.back())
					v.pop_back();
				else
					v.push_back(a[i]);

(۱) : تو این قسمت میام میگم اگه آجری رو زمین نبود و من هنوز آجر داشتم ، میام آجری که تو دسمه رو میزارم رو زمین.
کد:
else
				v.push_back(a[i]);

تو این قسمت هم چک میکنم آیا همه آجر ها از بین رفتن یا نه :)
کد:
		if (v.size() == 0)
			puts ("BALE");
		else
			puts ("NA");
راستی برای استفاده از vector دستور
کد:
#include <vector>
یادت نره.
 
پاسخ : مقدمات برنامه نویسی با ++C

الگوریتمش رو متوجه شدم ممنون. باید برم کار با vector رو یاد بگیرم.
خیلی ممنون
 
آموزش ++C در 11 بخش

يه سر به وبلاگ : http://c-hellibam.blogfa.com بزنين بطور خلاصه توضيح داده.
 
پاسخ : مقدمات برنامه نویسی با ++C

یه سوال: کدی رو بزنید که اعداد 1 تا 100 که اعداد مقلوب (عدد مقلوب = برعکس )رو در صورتی که با خود عدد برابر نباشه و همچنین هر دو عدد اول باشن(مثل 13 و31) رو چاپ کنه.

اگه میشه به ساده ترین صورتی که میتونید بنویسید.(tnx :-" )
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از TheBest444 :
یه سوال: کدی رو بزنید که اعداد 1 تا 100 که اعداد مقلوب (عدد مقلوب = برعکس )رو در صورتی که با خود عدد برابر نباشه و همچنین هر دو عدد اول باشن(مثل 13 و31) رو چاپ کنه.

اگه میشه به ساده ترین صورتی که میتونید بنویسید.(tnx :-" )
کد:
#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	int num,i,c,m,n;
	cout<<"Enter maximum number: ";
	cin >> num;
	for (int i=2; i<=num; i++){
	bool isprime=true;
	n=i;
	m=0;
	while (n>0)
	{
		m = (m*10) + (n%10);
		n = n/10;
	}
	n=i;
	for(c=2;c*c<=i;c++)
	{
		if(i%c==0)
		{
		 isprime=false;
		 break;
		}
	}
	for(c=2;c*c<=m;c++)
	{
		if(m%c==0)
		{
		 isprime=false;
		 break;
		}
	}
	if((isprime==true)&&(i!=m))
	{
		cout<<"Number "<<n<<" and "<<m<<" is prime\n";
	}
	}
	system("pause");
	return 0;
}

اینم ساده ترین حالتش...
 
پاسخ : مقدمات برنامه نویسی با ++C

http://s3.picofile.com/file/8204732368/Capture.JPG.
الان مشکل این چیه؟؟
من خیلی مبتدیم:D
 
پاسخ : مقدمات برنامه نویسی با ++C

اینم یه تمرین

برنامه ای بنویسید که یک عدد از کاربر گرفته و به مقسوم الیه هایش تجزیه کند و به این صورت نمایش دهد .
a^2 * b^3 و ...
 
Back
بالا