آیا مطمئن هستین که عدد دوم از عدد اول بزرگتر هست ؟
Printable View
آیا مطمئن هستین که عدد دوم از عدد اول بزرگتر هست ؟
if گذاشتم براش ولي
بازم جواب نداده
نه فقط گذاشتن if کافی نیست . در این مورد باید از عدد اول -- بشه به عدد دوم و یکی یکی بررسی کنه . اگه عدد اول هم بزرگ باشه باید از عدد اول ++ بشه برسه به عدد دوم . من اینجوری accept گرفتم .
:19:
کد:#include<stdio.h>
main()
{ int x,max=1,i,j,n=1,y,c;
scanf("%d%d",&i,&j);
c=i>j?j:i;
y=j>i?j:i;
if(i==j){
x=y;
do{ n++;
if(x%2==0) x/=2;
else x=3*x+1;
}while(x!=1);
max=n;
printf("%d %d %d",i,j,max);
return 0;
}
while(y!=c){x=y;
do{ n++;
if(x%2==0) x/=2;
else x=3*x+1;
}while(x!=1);
max=n>max?n:max;
y--;
n=1;
}
printf("%d %d %d",i,j,max);
return 0;
}
يكي از اين يه اشكال بگيره !!!
return تويه if(i==j ) اشكالي داره ؟
كلافه شدم.
يعني اگه sin نباشه , سوال هاي ما بي جواب ميمونه؟؟
يكي جواب بده...
یکی اینکه تو مسئله هایی که معلوم نیست ورودی چند تا هستن به جای دستور scanf باید بنویسین :
و دیگه اینکه چرا از do while استفاده کردین ؟ فکرشو نمی کردین که اگه ورودی 1 بده چی میشه ؟کد:while( scanf("%d%d",&i,&j)!=EOF )
{
//Whole code of your program
}
مگه قرار نيست دو تا ورودي بده ؟ i و j ؟؟؟نقل قول:
--------------------
!=eof يعني چي ؟؟کد:while( scanf("%d%d",&i,&j)!=EOF )
موندم جناب sin2x=2sinxcosx این همه حوصله از کجا آورده که این سایت ها رو پیدا مکینه بعد مساله هاشم حل میکنه:31:
آقا ما هم مثل جناب p d تو حل این مثاله عاجز موندیم، من الان این کدو نوشتم، البته نصوشو از p d کپی زدم:31:
آقا یه کمکی کنید ببیینم مشکل از چیه
کد:#include <stdio.h>
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))
int main()
{
int i, j, c;
int count, max_count;
int n = 0;
while( scanf("%d%d",&i, &j) != EOF )
{
max_count = 0;
i = min(i, j);
j = max(i, j);
for ( c = i; c <= j; c++ )
{
count = 1;
n = c;
while ( n != 1 )
{
if ( n % 2 == 0 )
n /= 2;
else
n = 3*n + 1;
count++;
}
if ( count > max_count )
max_count = count;
}
printf("%d %d %d\n", i, j, max_count);
}
return 0;
}
[QUOTE=p d;4572377]
[/code]!=eof يعني چي ؟؟
/QUOTE]
با سلام
eof یعنی end of file
اگه اینو میدونستین، منظورتون از سوالتون چی بوده؟
با تشکر.
يه نكته هست كه قبلا هم اشاره كردم ولي كسي جواب نداد.
اگه 1 و 1 وارد كنيم, طولش چند بايد باشه ؟؟؟
دو حالت داره :
كه يك فرد هست, ضرب در 3 + 1 كنه و...
يا كه فقط چاپ كنه 1
؟؟؟؟؟؟؟؟؟؟
----
خير اطلاعي نداشتم, خيلي ممنون.
اين عبارت براي كامپايلر مفهوم داره!
[QUOTE=hoax3r;4572419]
البته نصوشو از p d کپی زدم:31:
[/[QUOTE
سورس چه قابله شما رو داره ...
من اشكاله سورستون رو ميگم , شما هم واسه من رو بگيد:31:
اشكال اين هست كه ورودي ها قرار نيست صعودي باشن
يعني امكان داره اولي بزرگتر از دومي باشه
---------
نكات رو اعمال كردم ولي بازم...
کد:#include<stdio.h>
main()
{ int x,max=1,i,j,n=1,y,c;
while( scanf("%d%d",&i,&j)!=EOF ){
c=i>j?j:i;
y=j>i?j:i;
if(i==j){
x=y;
while(x!=1){ n++;
if(x%2==0) x/=2;
else x=3*x+1;
}
max=n;
printf("%d %d %d",i,j,max);
return 0;
}
while(y!=c){x=y;
while(x!=1){ n++;
if(x%2==0) x/=2;
else x=3*x+1;
}
max=n>max?n:max;
y--;
n=1;
}
printf("%d %d %d",i,j,max);
}
return 0;
}
خوب مشکل من دقیقا این قسمت بود، من دو تا ماکرو ی max و min برای این کار تعریف کرده بودم ولی تو سورس که دادم اشتباه استفاده کرده بودمنقل قول:
اشكال اين هست كه ورودي ها قرار نيست صعودي باشن
يعني امكان داره اولي بزرگتر از دومي باشه
الان درستش کردم Accepted گرفتم:31:
ممنون از راهنمایی
راستی استفاده از eof برای اینه که مثلا کاربر بخواد چند سطر داده وارد کنه و در نهایت با ctrl+z خارج بشه
من فکر کنم موضوع بحث شما سوغاتی های کهکشانی باشه.
من این مساله رو قبلا با VB در مورد یکسری شی دیگر نوشته بودم.
اگه دقت کنین گفته که کمترین مقایسه!
اینو بهش میگن ابتکار عمل....
من با vb مینویسم.
همیشه سعی کنین از ساده ترین روش برنامه رو حل کنین مگر از روی اجبار باشد.
با تشکر
راستی هکرهای غیر حرفه ای هم آسونه ها.
نمیخواین حل کنین؟!
:19::19::19::19:
الوعده وفا:31:
به نظرم مشكلم از if اول باشه .
كسي نظري نداره ؟؟
--------
کد:#include<stdio.h>
int main()
{ int x,max,i,j,n=1,y,c;
while( scanf("%d%d",&i,&j)!=EOF ){
max=1;
c=i>j?j:i;
y=j>i?j:i;
while(y!=c){x=y;
while(x!=1){ n++;
if(x%2==0) x/=2;
else x=3*x+1;
}
max=n>max?n:max;
y--;
n=1;
}
printf("%d %d %d\n",i,j,max);
}
return 0;
}
چنين چيزي به چشم نخورده ! خب منظورتون چيه ؟ توضيح بديد لطفا!!!نقل قول:
--------
چي هست ؟؟؟نقل قول:
راستی هکرهای غیر حرفه ای هم آسونه ها.
نمیخواین حل کنین؟!
--------
اگه نظري داريد بگيد !نقل قول:
همیشه سعی کنین از ساده ترین روش برنامه رو حل کنین مگر از روی اجبار باشد.
ولي فك نميكنم از اين ساده تر بشه .
-------
مشكله من حل نشده:9:
الكمك
ببینید من تو طرح کردن الگوریتم یکم کارم درسته!
چرا بچه های p30world یه تیم ندن برای مسابقات acm ؟!
با تشکر
به ازای هر به اصطلاح Test Case باید یه جفت عدد داده بشه . یعنی جفت اول داده میشه نتیجه اش چاپ میشه بعد دوباره عدد می خواد وارد می کنین نتیجه اش چاپ میشه و ..........نقل قول:
EOF هم گذاشتیم یعنی اینکه اگه به جای اعداد End of File وارد بشه که تو سیستم عامل ویندوز Ctrl + Z هست برنامه تموم بشه .
برای 1 و 1 باید 1 چاپ کنه دیگه . دیگه نیازی به ضرب کردن نیست .نقل قول:
اون که حل شده قبلا ....نقل قول:
آخه باید اعضای تیم دانشجوی یه دانشگاه باشد و به عبارت دیگر دانشجو باشن .نقل قول:
:8:
و سرانجام حل شد . خيلي ممنون جناب sin به خاطر راهنمايي هاتون.
اگه ميشه يه سوال ديگه , فقط راحت باشه.
---
كسي ميتونه بگه اشكالش چي بوده ؟؟؟
اينم سورس درست:
کد:#include<stdio.h>
#define m(a,b)((a) > (b) ? (b) : (a));
#define M(a,b)((a) > (b) ? (a) : (b));
int main()
{ int x,max,i,j,n=0,y,c,b;
while( scanf("%d%d",&i,&j)!=EOF ){
max=0;
n=1;
c=m(i,j);
y=M(i,j);
for(b=c;b<=y;b++){x=y;
while(x!=1){ n++;
if(x%2==0) x/=2;
else x=3*x+1;
}
max=n>max?n:max;
y--;
n=1;
}
printf("%d %d %d\n",i,j,max);
}
return 0;
}
-----
راستينقل قول:
تيم ها چند نفري هست ؟
بايد از يه دانشگاه باشند ؟
از اخر اول ميشيم ;)؟
تیم ها سه نفری . هر سه دانشجوی یه دانشگاه . با یک مربی . هزینه شرکت در مسابقه 200000 تومان است .
باید اعضا مورد تایید دانشگاه باشد .
این هم یه مسئله نسبتا ساده .
کد:http://acm.pku.edu.cn/JudgeOnline/problem?id=3752
حالا نمیشه تکی شرکت کرد؟!نقل قول:
به صورت انفرادی.!:10:
اينا رو كي ميتونه بخونه ::31:(لينك پست قبل)
کد:给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:
چرا اينجوري شده ؟
نه بابا . دل بخواهی که نیست . قانونش همینه .نقل قول:
ای بابا . به عنوان یه دانشجو شما نباید به زبان چینی هم مسلط باشین ؟ :31:نقل قول:
دو عدد M و N داده میشه که شما باید یه ماتریس M * N تشکیل بدین و A تا Z رو به صورت ساعتگرد چاپ کنین . همون طور که در مثال دیده میشه .
راست میگن با این همه استاد های سخت گیر و پیچون شما باید به همه ی زبان های زنده دنیا تسلط ذاشته باشی.:31:نقل قول:
با تشکر
این برنامه ای هست که من براش نوشتم . البته سورسش نیست . فقط فایل exe . دو تا عدد بدین و نتیجه رو چک کنین تا همه چی گیرتون بیاد که چیکار باید بکنین .
چينيه ؟ من فكر كردم ژاپني هستش:31:نقل قول:
من چون east asian languages رو نصب نكرده بودم نتونستم بخونم , وگرنه ...!
به خاطر همين تويه پست قبل گفتم : "چرا اينجوري شده" فك كردم بهم ريخته.
از توضيحاتتون ممنونم, و از وقتي كه ميزاريد.
سلام خدمت اساتيد.
عجب سوال قشنگ و سختيه !!!
من كارايه اوليش رو كردم سورس رو ميزارم , كسي خواست استفاده كنه و درگير مسائل ابتداييش نشه.
البته توضيح هم داره , كه احتمالا شفاف نيست, اخه نوضيحات رو برا خودم نوشتم.
---
سوالم اينه كه
کد:const int x=100,y=100;
int mat[x][y];
x,y رو ميشه با define هم تعريف كرد يا نه ؟؟
---
کد:#include<stdio.h>
#include<conio.h>
main()
{
//khone
const int x=100,y=100;
//**
//mat
int mat[x][y];
int i,j;
int v1,v2;
//**
//A ta Z
char k;
char h[x];
int m=0,s;
//**
// tool arz & tedade tekrare halghe aval
scanf("%d%d",&v1,&v2);
s=v1*v2;
//**
// a ta z
for(k='A';k<='Z'&&s!=0;k++){
h[m++]=k;
// tabdile A be z
if(k=='Z') k=64;
s--;
}// end of for k
m=0;
//**
// mat
for(i=0;i<v1;i++){
for(j=0;j<v2;j++){
mat[i][j]=h[m++];
}//end of arz,j
}// end of tool, i
//**
for(i=0;i<v1;i++){
for(j=0;j<v2;j++) printf("%c\t",mat[i][j]);
printf("\n");}
getch();
return 0;
}
نه نمیشه . باید از تخصیص حافظه پویا استفاده کنین . یه راهنمایی می کنم . تو ساده ترین دید نسبت به مسئله می تونین از حلقه تودرتو به این صورت که چهار تا حلقه داخل یدونه حلقه هست استفاده کنین .
به روی سوال دقت کنین . یه حلقه برای اینکه از سمت چپ به سمت راست بره . یکی برای اینکه از بالا به پایین بره . یکی برای از راست به چپ رفتن و دیگری از پایین به بالا رفتن .
به چه كاري مياد ؟نقل قول:
برا اين كه تعداد چپ و راست و بالا و پايين رفتن رو مشخص كنه ؟
منم این مساله رو حل کردم، الگوریتمم همینی هست که sin2x=2sinxcosx گفت چهار تا حلقه تو یک حلقه
برام عجیبه که تو ++Visual C بعد گرفتن دو بعد آرایه نمیشه یک آرایه دو بعدی با این اندازه ها درست کرد ولی تو ++g میشه:13:
نقل قول:
نه . فکر کنم تخصیص حافظه پویا برای آرایه دوبعدی این طوری بود :
کد:int** arr = new int*[ x ];
for( int i = 0; i < x; i++ )
arr[ i ] = new int[ y ];
متوجه نشدم ...نقل قول:
منظورم این بود که این کد تو ++Visual C کار نمیکنهنقل قول:
نوشته شده توسط sin2x=2sinxcosx
کد:int N, M;
cin >> N >> M;
char Matrix[N][M];
نقل قول:
چه لزومي داره از اين استفاده كرد ؟
كارش چيه ؟
نقل قول:
عجیبه !!!!!!!!!!!!! خیلیییییییییی عجیبه !!!!!!!!!!!
با این حساب هیچی . اون پست منو نادیده بگیرین . لازم شد یه تحقیقاتی بکنم .نقل قول:
اینم یه سوال قشنگ .
میگم بهتر نیست هرکی مسئله ای رو حل می کنه سورسشو هم بذاره ؟
با تشکر .
کد:http://acm.pku.edu.cn/JudgeOnline/problem?id=1002
این سورس مساله قبلی من، حالا بریم سره یوال قشنگه
کد:#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int N, M;
cin >> N >> M;
char Matrix[N][M];
memset(&Matrix, 0, sizeof(Matrix));
int i = 0, j = 0;
char ch = 'A';
int flag = true;
while ( flag )
{
// flag = false;
// TOP
while ( Matrix[i][j] == 0 && j < M )
{
if ( ch <= 'Z' )
{
Matrix[i][j] = ch;
j++;
ch++;
}
else
{
ch ='A';
}
//flag = true;
}
j--;
i++;
//flag = false;
//LEFT
while ( Matrix[i][j] == 0 && i < N )
{
if ( ch <= 'Z' )
{
Matrix[i][j] = ch;
i++;
ch++;
}
else
{
ch ='A';
}
//flag = true;
}
i--;
j--;
//flag = false;
// BOTTOM
while ( Matrix[i][j] == 0 && j >= 0 )
{
if ( ch <= 'Z' )
{
Matrix[i][j] = ch;
j--;
ch++;
}
else
{
ch ='A';
}
//flag = true;
}
j++;
i--;
flag = false;
// RIGHT
while ( Matrix[i][j] == 0 && i >= 0 )
{
if ( ch <= 'Z' )
{
Matrix[i][j] = ch;
i--;
ch++;
}
else
{
ch ='A';
}
flag = true;
}
i++;
j++;
}
for ( int x = 0; x < N; x++ )
{
for ( int y = 0; y < M; y++ )
cout << " " << Matrix[x][y];
cout << endl;
}
return 0;
}
ببخشید . دارم به بقیه میگم سورس بذارین در حالی که خودم نذاشتم . این هم سورس من :
کد:#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
vector< vector< char > > vec( a );
for( int i = 0;i < a; i++ )
vec[ i ].resize( b );
vector< char > chars( 26 );
for( int i = 0; i < 26; i++ )
chars[ i ] = 65 + i;
int counter = 0, countifirst = 0, countilast = a - 1, countjfirst = 0, countjlast = b - 1;
int flag;
while( true )
{
flag = 0;
for( int i = countjfirst; i <= countjlast; i++ )
{
flag = 1;
vec[ countifirst ].at( i ) = chars[ counter % 26 ];
counter++;
}
if( flag == 0 )
break;
flag = 0;
countifirst++;
for( int j = countifirst; j <= countilast; j++ )
{
flag = 1;
vec[ j ].at( countjlast ) = chars[ counter % 26 ];
counter++;
}
if( flag == 0 )
break;
flag = 0;
countjlast--;
for( int k = countjlast; k >= countjfirst; k-- )
{
flag = 1;
vec[ countilast ].at( k ) = chars[ counter % 26 ];
counter++;
}
if( flag == 0 )
break;
flag = 0;
countilast--;
for( int l = countilast; l >= countifirst; l-- )
{
flag = 1;
vec[ l ].at( countjfirst ) = chars[ counter % 26 ];
counter++;
}
if( flag == 0 )
break;
flag = 0;
countjfirst++;
}
for( int i = 0; i < a; i++ )
{
for( int j = 0; j < b; j++ )
{
cout << " ";
cout << vec[ i ].at( j );
}
cout << endl;
}
return 0;
}
جهت زيرخاكي نشدن تاپيك:نقل قول:
اين فايل اجرايي برنامه ي منه واسه اين مسئله و هيچ مشكلي توش نميبينم اما پيغام Wrong Answer ميده ديوانم كرده
ميشه يكي امتحانش كنه؟
کد:http://www.uplod.ir/download.php?file=89264
:31:نقل قول:
خب آخه باید به ترتیب چاپ می کردین .
اي بابا من اينو 11 بار submit كردم :دي
مرسي