rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Olympiad گفت
rezashiri گفت
Olympiad گفت
خانه ي مقصد(#) ممكنه هر جايي باشه؟؟؟؟يا فقط گوشه سمت راست و پايين!؟؟!‌اگه راهي نبود چي؟!! نقطه ي شروع كجا هست!!!!!!!!!!!!!!!!!!؟؟؟؟؟
فرض کن یه راه وجود داره و # زیاد مهم نیست ، مهم آخر 0 هاست.و نقطه شروع هم یکی از خانه های سطر بالا.
كدام يك از حانه هاي بالا!!!؟؟؟؟
تو کدی که من نوشتم فرقی نداره. اگه دوست داری از بالا سمت چپ شروع کن.
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
اين كد منه ... اما درست كار نمي كنه!!!!

(از بالا سمت چپ حركت مي كنه به پايين سمت راست ميره!!!!!!!! ضمنا علامت # رو 0 گرفتم!!!!!!!!!!)
مشكلش چيه ؟؟؟؟؟؟
کد
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;
  int main()
	{
	  int k=0,u=0,n,t;
	  scanf("%d",&n);
	  int a[n][n];
	   for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		  scanf("%d",&a[I][j]);
	   for(t=1;t<=2*(n-1);t++);
	    {
		 if(a[k+1][U]==0)	
		  {
		    printf("\tDown");
		    k++;
		  }
		 else
		   {
		    printf("\tRight");
		    u++;
		   }
	    }
	   printf("\tResidim!!!");
	   getch();
	   return 0;
  
}
[/U][/I]
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Olympiad گفت
اين كد منه ... اما درست كار نمي كنه!!!!

(از بالا سمت چپ حركت مي كنه به پايين سمت راست ميره!!!!!!!! ضمنا علامت # رو 0 گرفتم!!!!!!!!!!)
مشكلش چيه ؟؟؟؟؟؟
کد
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;
  int main()
	{
	  int k=0,u=0,n,t;
	  scanf("%d",&n);
	  int a[n][n];
	   for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		  scanf("%d",&a[I][j]);
	   for(t=1;t<=2*(n-1);t++);
	    {
		 if(a[k+1][U]==0)	
		  {
		    printf("\tDown");
		    k++;
		  }
		 else
		   {
		    printf("\tRight");
		    u++;
		   }
	    }
	   printf("\tResidim!!!");
	   getch();
	   return 0;
  
}
[/U][/I]

الآن یکم بهتر شد ولی بازم کامل نیست و بعضی از تستا رو مشکل داره.

کد
#include <stdio.h>
#include <conio.h>
#include <math.h>
using namespace std;
  int main()
	{
	  int k=0,u=0,n,t;
	  scanf("%d",&n);
	  int a[n][n];
	   for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		  scanf("%d",&a[i][j]);
		  
		  
	   start:
		 if(a[k+1][u]==0)	
		  {
		    printf("\tDown");
		    k++;
		    if(k<n) goto start;
		  }
		 else
		   {
		    printf("\tRight");
		    u++;
		    if(u<n-1) goto start;
		   }
	    
	   printf("\tResidim!!!");
	   getch();
	   return 0;
 
}
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
[center:75b53b1aac]
[/center:75b53b1aac]کد من:

کد
#include <stdio.h>
#include <conio.h>

int main()
{
    int a,b,c,adad[100][100],rahi[100],rahj[100],k=0;
    
    scanf("%d",&a);
    
    for(int i=0;i<a;i++)
    {
		  for(int j=0;j<a;j++)
		  {
				scanf("%d",&adad[i][j]);
		  }
    }

    
	   for(int i=0;i<a;i++)
    {
		  for(int j=0;j<a;j++)
		  {
				if(adad[i][j]==0){
				rahi[k]=i+1;
				rahj[k]=j+1;	  
				k++;		   }
				 
		  }
    }

    
    for(int i=0;i<k;i++)
    {
	    if(rahj[i]+1==rahj[i+1])  printf("R-");
	    if(rahi[i]+1==rahi[i+1])  printf("D-");
	    if(i==k-1) printf("residim.");
	    
    }
    
    getch();
    return 0;
}
 
ارسال ها
143
لایک ها
79
امتیاز
0
rezashiri گفت
[center:e7507c672f]
[/center:e7507c672f]
برنامه ای بنویسید که مختصات دو نقطه A,C را گرفته و زاویه ABC را در خروجی چاپ کند.فرض کنید(B(0,0 است و A,C در ربع اولند.
گفتم سوال بی جواب نمونه :D

برنامه نویسی هندسی زیاد به دردتون نمی خوره (توی دوره ما که فقط Convex hull + تعیین محل برخورد خط و دایره , دایره دایره , خط خط مهم بود + یه چند تا سوال معروف که گفتن حل کنید تا دستتون راه بیفته )

با عدد مختلط نوشتم (دم دست ترین بود) , این کد زاویه رو تا 5 رقم بعد از اعشار چاپ می کنه (به درجه) :

کد
#include <iostream>
#include <complex>
#include <iomanip>
using namespace std;
typedef complex<double> point;

int main() {
	point a, b;
	cin >> a.real() >> a.imag() >> b.real() >> b.imag();
	a /= b;
	cout << fixed << setprecision(5) << abs(arg(a) * 360 / (2 * M_PI)) << endl;
	return 0;
}
اگه دوست دارید کد هندسی تمیز بنویسید برنامه نویسی با اعداد مختلط بهترین گزینه است (به علت خواص زیبای اعداد مختلط در انتقال و دوران و تجانس و ...)
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
navidjalalmanesh گفت
rezashiri گفت
[center:71e5161087]
[/center:71e5161087]
برنامه ای بنویسید که مختصات دو نقطه A,C را گرفته و زاویه ABC را در خروجی چاپ کند.فرض کنید(B(0,0 است و A,C در ربع اولند.
گفتم سوال بی جواب نمونه :D

برنامه نویسی هندسی زیاد به دردتون نمی خوره (توی دوره ما که فقط Convex hull + تعیین محل برخورد خط و دایره , دایره دایره , خط خط مهم بود + یه چند تا سوال معروف که گفتن حل کنید تا دستتون راه بیفته )

با عدد مختلط نوشتم (دم دست ترین بود) , این کد زاویه رو تا 5 رقم بعد از اعشار چاپ می کنه (به درجه) :

کد
#include <iostream>
#include <complex>
#include <iomanip>
using namespace std;
typedef complex<double> point;

int main() {
	point a, b;
	cin >> a.real() >> a.imag() >> b.real() >> b.imag();
	a /= b;
	cout << fixed << setprecision(5) << abs(arg(a) * 360 / (2 * M_PI)) << endl;
	return 0;
}
اگه دوست دارید کد هندسی تمیز بنویسید برنامه نویسی با اعداد مختلط بهترین گزینه است (به علت خواص زیبای اعداد مختلط در انتقال و دوران و تجانس و ...)
چه كدهاي عجيبي پيدا ميشن!!!!!!!!!
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
navidjalalmanesh گفت
rezashiri گفت
[center:2a7cf580bf]
[/center:2a7cf580bf]
برنامه ای بنویسید که مختصات دو نقطه A,C را گرفته و زاویه ABC را در خروجی چاپ کند.فرض کنید(B(0,0 است و A,C در ربع اولند.
گفتم سوال بی جواب نمونه :D

برنامه نویسی هندسی زیاد به دردتون نمی خوره (توی دوره ما که فقط Convex hull + تعیین محل برخورد خط و دایره , دایره دایره , خط خط مهم بود + یه چند تا سوال معروف که گفتن حل کنید تا دستتون راه بیفته )

با عدد مختلط نوشتم (دم دست ترین بود) , این کد زاویه رو تا 5 رقم بعد از اعشار چاپ می کنه (به درجه) :

کد
#include <iostream>
#include <complex>
#include <iomanip>
using namespace std;
typedef complex<double> point;

int main() {
	point a, b;
	cin >> a.real() >> a.imag() >> b.real() >> b.imag();
	a /= b;
	cout << fixed << setprecision(5) << abs(arg(a) * 360 / (2 * M_PI)) << endl;
	return 0;
}
اگه دوست دارید کد هندسی تمیز بنویسید برنامه نویسی با اعداد مختلط بهترین گزینه است (به علت خواص زیبای اعداد مختلط در انتقال و دوران و تجانس و ...)
خیلی ممنون از راهنماییتون.

من کد اینو زدم و ایدم با تانژانت بود ولی مشکل بزرگش این بود که تو float عدد 3/4 صفر حساب می شه!؟؟!؟
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
navidjalalmanesh گفت
خواهش می کنم .

اگه دوست داشتید کدتون رو همینجا بفرستید تا debug کنم مشکلش رو در بیارم...
این کد جدید تره . یکم کد قبلی رو تغیرر دادم نمی دونم درست کار می کنه یا نه؟!؟!؟(ولی احتمالا با یکم تقریب درسته؟!)

کد
#include <stdio.h>
#include <conio.h>
#include <cmath>

int main()
{
    float ai,aj,bi,bj,ci,cj,tanb1,tanb2,zavieb1R,zavieb2R,zavieb1D,zavieb2D,zavieB;
    
    printf("please input x y for A(x,y):\t");
    scanf("%f%f",&ai,&aj);
	 
    printf("please input x y for C(x,y):\t");
    scanf("%f%f",&ci,&cj); 
    //-----------------------------------------
    
    tanb1=cj/ci;
    zavieb1R=atan(tanb1);
    zavieb1D=(zavieb1R*180)/3.14159256;  
    
    //----------------------------------------
    tanb2=ai/aj;
    zavieb2R=atan(tanb2);
    zavieb2D=(zavieb2R*180)/3.14159256;
    //----------------------------------------
    
    zavieB=zavieb1D+zavieb2D;
    
    printf("%f",90-zavieB);
    
    getch();
    return 0;
}
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
rezashiri گفت
navidjalalmanesh گفت
خواهش می کنم .

اگه دوست داشتید کدتون رو همینجا بفرستید تا debug کنم مشکلش رو در بیارم...
این کد جدید تره . یکم کد قبلی رو تغیرر دادم نمی دونم درست کار می کنه یا نه؟!؟!؟(ولی احتمالا با یکم تقریب درسته؟!)

کد
#include <stdio.h>
#include <conio.h>
#include <cmath>

int main()
{
    float ai,aj,bi,bj,ci,cj,tanb1,tanb2,zavieb1R,zavieb2R,zavieb1D,zavieb2D,zavieB;
    
    printf("please input x y for A(x,y):\t");
    scanf("%f%f",&ai,&aj);
	 
    printf("please input x y for C(x,y):\t");
    scanf("%f%f",&ci,&cj); 
    //-----------------------------------------
    
    tanb1=cj/ci;
    zavieb1R=atan(tanb1);
    zavieb1D=(zavieb1R*180)/3.14159256;  
    
    //----------------------------------------
    tanb2=ai/aj;
    zavieb2R=atan(tanb2);
    zavieb2D=(zavieb2R*180)/3.14159256;
    //----------------------------------------
    
    zavieB=zavieb1D+zavieb2D;
    
    printf("%f",90-zavieB);
    
    getch();
    return 0;
}
برنامه ات درست كار مي كنه اما چون عدد پي كه نوشتي دقيق نيست يكم اختلاف داره.....
فكر كنم خود C++ عدد پي رو داشته باشه!!!!!
آقاي جلال منش عدد پي رو بايد چجوري استفاده كرد؟!!؟!؟
 
ارسال ها
143
لایک ها
79
امتیاز
0
Olympiad گفت
آقاي جلال منش عدد پي رو بايد چجوري استفاده كرد؟!!؟!؟

باید کتابخانه cmath رو include کنید و بعد M_PI عدد پی دقیق است .

مثلا کد زیر عدد پی رو تا 15 رقم بعد از اعشار چاپ می کنه

کد
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main() {
	cout << fixed << setprecision(15) << M_PI << endl;
	return 0;
}
 
ارسال ها
143
لایک ها
79
امتیاز
0
یک نکته ای که باید بگم اینه که تو سوالات هندسی معمولا تو صورت سوال می گن که اگه اختلاف جواب شما با جواب اصلی مسئله از یه عدد کوچکی که خودشون بهتون می دن (که بهش می گن eps) کمتر باشه جواب شما مورد قبوله , پس کافیه دقت جواب هاتون در حد همون eps باشه (کلا تو c++ کار کردن با double ها به علت وجود تقریب هایی که خود کامپیوتر می زنه خیلی دقیق نیست )
 
ارسال ها
143
لایک ها
79
امتیاز
0
دستم نیست تو چه سطحی کد می زنید + اینکه نمی دونم چه سوال هایی رو نوشتید + نمی دونم تئوری چه چیز هایی رو بلدید .

لطف کنید بگید تئوری چه چیزهایی رو بلدید تا بتونم بهتون سوال بدم .

فغلا می تونید سوال های 154 و 172 SGU رو بزنید .
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
navidjalalmanesh گفت
دستم نیست تو چه سطحی کد می زنید + اینکه نمی دونم چه سوال هایی رو نوشتید + نمی دونم تئوری چه چیز هایی رو بلدید .

لطف کنید بگید تئوری چه چیزهایی رو بلدید تا بتونم بهتون سوال بدم .

فعلا می تونید سوال های 154 و 172 SGU رو بزنید .
منظورتون ازتئوري چيه!؟!؟

ضمنا سوال 154 تو همين ماراتن حل شده....
حالا يه سوال بديد كه زياد سخت نباشه!!!
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
[center:f334b61876]


من یه سوال می ذارم تا سطح بیاد دستتون:

الف)برنامه ای بنویسید که یک دستگاه دو معادله و دو مجهول را حل کند.

ب)برنامه ای بنویسید که مختصات دو نقطه از دو خط (از هر خط 2 نقطه) را گرفته و اگر محل تلاقی دارند مختصات محل تلاقی و اگر ندارد Not را چاپ کند.​
[/center:f334b61876]
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
rezashiri گفت
[center:c0a7858e82]


من یه سوال می ذارم تا سطح بیاد دستتون:

الف)برنامه ای بنویسید که یک دستگاه دو معادله و دو مجهول را حل کند.

ب)برنامه ای بنویسید که مختصات دو نقطه از دو خط (از هر خط 2 نقطه) را گرفته و اگر محل تلاقی دارند مختصات محل تلاقی و اگر ندارد Not را چاپ کند.​
[/center:c0a7858e82]
الف )
منظورتون اينه كه ورودي ضرايب دو معادله ي درجه يك هست؟!!؟!؟!
ب)
منظورتون از دو خط ، دو خط راست هست ديگه!!!! (سهمي و... كه نيست!!!؟؟؟؟!!!)
 

rezashiri

Well-Known Member
ارسال ها
1,458
لایک ها
325
امتیاز
83
Olympiad گفت
rezashiri گفت
[center:8503347cf4]


من یه سوال می ذارم تا سطح بیاد دستتون:

الف)برنامه ای بنویسید که یک دستگاه دو معادله و دو مجهول را حل کند.

ب)برنامه ای بنویسید که مختصات دو نقطه از دو خط (از هر خط 2 نقطه) را گرفته و اگر محل تلاقی دارند مختصات محل تلاقی و اگر ندارد Not را چاپ کند.​
[/center:8503347cf4]
الف )
منظورتون اينه كه ورودي ضرايب دو معادله ي درجه يك هست؟!!؟!؟!
ب)
منظورتون از دو خط ، دو خط راست هست ديگه!!!! (سهمي و... كه نيست!!!؟؟؟؟!!!)
آره.

همینایی هست که گفتی.
 
ارسال ها
143
لایک ها
79
امتیاز
0
ببینید این سوالی که گفتی بار تئوری ریاضوی داره (البته من ب رو با عدد مختلط هم بلدم بزنم که همش کد نویسی یه) , البته سوال خوبی هستش ولی زیاد ربطی به الگوریتم های که تو المپیاد کامپیوتر خیلی باهاش سرکار دارید نداره (الگوریتم های گراف , داینامیک و ...)

خوبه سوال های SGU و USACO رو اینجا مطرح کنید و با بقیه دوستان همه با هم پیش بریم .

البته من نمی خوام تو ماراتن دخالت کنم (این فقط یه پیشنهاد بود) .
 

Olympiad

New Member
ارسال ها
1,268
لایک ها
134
امتیاز
0
[center:911a6d6405]


الف) اين كد منه ....فقط معادله به صورت
وارد ميشود....​
کد
#include <iostream>
#include <conio.h>
using namespace std;
  int main()
    {
	   double a,b,c,a1,b1,c1;
	   cout<<"Zarayeb moadele #1 ra vared konid :\n"; 
	   cin>>a>>b>>c;
	   cout<<"Zarayeb moadele #2 ra vared konid :\n";
	   cin>>a1>>b1>>c1;
	   double a2,b2,c2,a3,b3,c3;
	   a2=a1*a;
	   b2=a1*b;
	   c2=a1*c;
	   a3=a*a1;
	   b3=a*b1;
	   c3=a*c1;
	   double x,y;
	   y=(-(c2-c3))/(b2-b3);
	   x=(-c2-(b2*y))/a2;
	   cout<<"Number X ="<<x<<"\tNumber Y = "<<y;
	   getch();
	   return 0;
    }
[/center:911a6d6405]
 
بالا