PDA

برای دیدن نسخه كامل اینجا را كلیك كنید : ACM



abc_ramak
2007/8/20, 12:57 PM
تاپیک قبلیم که طرفداری نداشت.
ببینم اینو چیکار می کنین :razz:

majid421
2007/8/20, 07:58 PM
مسابقات acm ?

ما هم هستیم .........البته فقط استفاده می کنیم ......چیزی که بلد نیستیم ارائه بدیم :biggrin:

majid421
2007/8/20, 08:02 PM
فایلتون هم دانلود کردم ......ولی نمی دونم چه جوری باید ترجمه کنم ....همش انگلیسیه :biggrin:

ممنون :gol:

saranet
2007/8/23, 07:17 PM
تاپیک قبلیم که طرفداری نداشت.
ببینم اینو چیکار می کنین :razz:
خیلی خوب می شه هر چند روز روی یکی از برنامه ها کار کنیم . همه تلاش کنیم که مسائل را حل کنیم . فکر می کنم راه خوبی برای تقویت برنامه نویسیمون باشه >>

abc_ramak
2007/8/26, 01:27 PM
خوب كسي نمي خواد شروع كنه؟

abc_ramak
2007/8/26, 01:34 PM
هر هفته رو يكي از اين سوالا تمركز مي كنيم.
اولين كسي كه جواب درست رو پست كنه 100 credit جايزه مي گيره.
از 10 شهريور شروع مي كنيم.
لطفا تا اون موقع اگه نظر و پيشنهادي دارين بنويسين.

abc_ramak
2007/8/26, 01:39 PM
البته هر كس فقط يك بار جايزه مي گيره :D
يعني اگه كسي همه سوالا رو جواب بده قبول نيست.

abc_ramak
2007/8/26, 02:14 PM
و هر كس تو اين بحث شركت كنه خودم بهش امتياز ميدم :biggrin:

majid421
2007/8/27, 07:13 PM
سلام سلام صد تا سلام
خوبین که همگی انشا الله ............
خب برای شروع یه برنامه راحت بدید من سریع جواب بدم ........امتیاز بگیرم :biggrin:

مثلا برنامه جمع کردن 2 تا عدد:biggrin:
نه اون خیلی سخته ......برنامه جمع اعداد یک رقمی :biggrin:

منتظر برنامههای شما هستیم
اگر کاری از دستمون بر نمی یاد بلدیم استفاده کنیم ........شما زحمتش رو بکشید..:gol:

masoodnokandeh
2007/8/29, 07:42 AM
با تشكر از شما.
ولي بهتر بود توضيح بيشتري راجع به زمان و مكان مسابق و چگونگي ثبت نام و ارسال پاسخ ها و .... مي داديد.

saranet
2007/9/01, 05:27 PM
:que::que:این هم اولین سوال : :que::que: http://acm.uva.es/p/v1/151.html

لطفا اگر راه خوبی مورد نظرتونه پیشنهاد بدید ولی همون اول جوابشو نفرستید تا بقیه هم کمی فکر کنند.وکمی هم روی سوالات بحث کنیم...
موفق باشید;)

abc_ramak
2007/9/01, 05:39 PM
Power Crisis



During the power crisis in New Zealand this winter (caused by a shortage of rain and hence low levels in the hydro dams), a contingency scheme was developed to turn off the power to areas of the country in a systematic, totally fair, manner. The country was divided up into N regions (Auckland was region number 1, and Wellington number 13). A number, m, would be picked `at random', and the power would first be turned off in region 1 (clearly the fairest starting point) and then in every m'th region after that, wrapping around to 1 after N, and ignoring regions already turned off. For example, if N = 17 and m = 5, power would be turned off to the regions in the order:1,6,11,16,5,12,2,9,17,10,4,15,14,3,8,13,7.


The problem is that it is clearly fairest to turn off Wellington last (after all, that is where the Electricity headquarters are), so for a given N, the `random' number m needs to be carefully chosen so that region 13 is the last region selected.


Write a program that will read in the number of regions and then determine the smallest number m that will ensure that Wellington (region 13) can function while the rest of the country is blacked out.
Input and Output



Input will consist of a series of lines, each line containing the number of regions (N) with http://acm.uva.es/p/v1/151img1.gif . The file will be terminated by a line consisting of a single 0.


Output will consist of a series of lines, one for each line of the input. Each line will consist of the number m according to the above scheme.
Sample input



17
0
Sample output



7

abc_ramak
2007/9/01, 05:46 PM
با تشكر از شما.
ولي بهتر بود توضيح بيشتري راجع به زمان و مكان مسابق و چگونگي ثبت نام و ارسال پاسخ ها و .... مي داديد.

فقط کافیه هر چیزی که برای حل مساله ی مطرح شده مفید می دونین توی این تاپیک بنویسین تا با کمک هم جواب درست رو پیدا کنیم.
اگه پیشنهاد جایزه کردیم برای این بود که مهندسای عزیز بیشتر تشویق بشن برای شرکت توی بحث ;)

abc_ramak
2007/9/01, 05:47 PM
ضمنا تصمیم گرفتم برای جایزه 100 credit هر هفته رای بگیریم.
نظرتون چیه؟

abc_ramak
2007/9/01, 06:50 PM
بحران نیرو


زمستان امسال به علت بارش کم باران و در نتیجه کم شدن سطح آب پشت سد در نیوزیلند و بحران نیرو، نقشه ای برای قطع برق مناطقی از کشور بصورت منظم و کاملا منصفانه طرح ریزی شد. کشور به N منطقه تقسیم شد (Auckland منطقه شماره 1 و Wellington منطقه شماره 13). یک شماره تصادفی m انتخاب می شود و قطعی از منطقه 1 شروع می شود (منصفانه ترین نقطه شروع) و سپس در mامین منطقه بعدی، و بعد از N به 1 برمی گردد. و مناطقی که قطعی برق داشته اند از لیست حذف می شوند.. برای مثال اگر N=17 و m=5 باشد قطعی برق بترتیب زیر می باشد:
1,6,11,16,5,12,2,9,17,10,4,15,14,3,8,13,7
مساله اینجاست: این منصفانه تر است که برق Wellington آخر از همه قطع شود(اداره مرکزی برق آنجاست). بنابرابن برای N منطقه، عدد تصادفی m باید به دقت انتخاب شود تا منطقه 13 آخرین منطقه انتخابی باشد.
برنامه ای بنویسید که تعداد مناطق را دریافت کند و کوچکترین عدد mی را پیدا کند که اطمینان می دهد Wellington وقتی بقیه کشور در تاریکی است دایر است.


ورودی و خروجی:
ورودی شامل تعدادی سطر است که هز سطر حاوی تعداد مناطق (N) 13<=N<100 می باشد.فایل می تواند با سطری شامل 0 پایان یابد.
خروجی شامل تعدادی سطر (یک سطر به ازای هر سطر ورودی) است که هر سطر حاوی عدد m طبق طرح بالا می باشد.


مثال:
ورودی:
17
0


خروجی:
7

abc_ramak
2007/9/01, 07:03 PM
ترجمه کردم که majid421 دیگه بهونه ای نداشته باشن :biggrin:

abc_ramak
2007/9/01, 07:07 PM
خیلی سخت نیست :razz:
فکر کنم باید برای اعداد 1 تا N سری رو تشکیل بده و وقتی آخرین عدد 13 بود اون عددی که باهاش سری رو نوشته به عنوان خروجی نشون بده.

yasin_d
2007/9/01, 10:05 PM
با صمیمانه ترین سلام ها.
خوشحالم که اعضای باشگاه به خوبی در انجام رسالت باشگاه به یکدیگر کمک می کنند.
از همه بچه ها به خصوص ramak عزیز که فعالیت خود را به بهترین نحو انجام می دهد تشکر می کنم.
امیدوارم من هم بتوانم سهم کوچکی از این فعالیت را به عهده بگیرم.

abc_ramak
2007/9/02, 09:44 AM
با صمیمانه ترین سلام ها.
خوشحالم که اعضای باشگاه به خوبی در انجام رسالت باشگاه به یکدیگر کمک می کنند.
از همه بچه ها به خصوص ramak عزیز که فعالیت خود را به بهترین نحو انجام می دهد تشکر می کنم.
امیدوارم من هم بتوانم سهم کوچکی از این فعالیت را به عهده بگیرم.

خواهش می کنم وظیفمه :redface:

abc_ramak
2007/9/02, 10:19 AM
زمان پاسخ به این سوال تا 17 شهریور هست.
هفته آینده سوال بعدی رو شروع می کنیم.
پس عجله کنید ;)

abc_ramak
2007/9/03, 06:34 PM
اگه کسی در مورد مسابقات ACM (البته واقعیش :biggrin:) اطلاعات یا تجربه ای داره لطف کنه اینجا بنویسه تا مهندسای عزیز استفاده کنن. :gol:

saranet
2007/9/05, 11:40 AM
روش پیشنهادی من این است که اعداد 1 تا N را در نظر بگیریم برای اولین بار first=1 و end=N باشد در طول برنامه جایگاه عدد 13 ثابت باشد و ما برای هرMبا شروع از یک به اندازه M جلو برویم اگر عددی که با آن برخورد کردیم کوچکتر از 13 باشد first را یکی جلو می بریم واگر آن عدد بزرگتر از 13 بود last را یکی به عقب می بریم.(زیرا برای ما فقط تعداد اعداد قبل از 13 و تعداد اعداد بعد از آن مهم است.)
پیشنهاد می کنم با امتحان این روش خودتان به چند نکته ریز دیگر پی ببرید . برنامه من با این روش جواب داد اگر دوست داشته باشید می تونم اون چند نکته رو هم توضیح بدم.
موفق باشید..

abc_ramak
2007/9/07, 08:07 PM
فردا آخرین مهلت ارسال جواب هست. :)

abc_ramak
2007/9/07, 08:09 PM
روش پیشنهادی من این است که اعداد 1 تا N را در نظر بگیریم برای اولین بار first=1 و end=N باشد در طول برنامه جایگاه عدد 13 ثابت باشد و ما برای هرMبا شروع از یک به اندازه M جلو برویم اگر عددی که با آن برخورد کردیم کوچکتر از 13 باشد first را یکی جلو می بریم واگر آن عدد بزرگتر از 13 بود last را یکی به عقب می بریم.(زیرا برای ما فقط تعداد اعداد قبل از 13 و تعداد اعداد بعد از آن مهم است.)
پیشنهاد می کنم با امتحان این روش خودتان به چند نکته ریز دیگر پی ببرید . برنامه من با این روش جواب داد اگر دوست داشته باشید می تونم اون چند نکته رو هم توضیح بدم.
موفق باشید..


ممنون :gol:
لطفا جواب کامل رو اینجا قرار بدین، و اگه ممکنه فایل اجرایی برنامه ای که نوشتین، ضمیمه کنین :smile:

saranet
2007/9/08, 03:49 PM
همانطور که میدونید این برنامه فقط با فایلها کار می کنه.ورودی از فایل input خونده مشه و خروجی در فایل output نوشته می شه . در آخر هم خروجی فقط در فایل output قابل مشاهده است (نه در console)
من برای مثال یه فایل input در مسیر برنامه قرار دادم که پس از اجرای برنامه ,خروجی رو در همین مکان می تونید ببینید.
هر اشکالی تو این برنامه دیدید (چه از طرف من چه از طرف خودتون ) حتما مطرح کنید.تا با کمک هم حتما اونا رو برطرف کنیم .:)
منتظر نظراتون هستم . موفق باشید. ;)
این هم جواب سوال:power crisis

abc_ramak
2007/9/08, 05:22 PM
:w23:

:king: SARANET :king:

:w31:
:w33:
:w32:



:w26:



تبریک می گم :gol:
قرار بود 100 credit جایزه باشه، ولی چون اولین سوال بود و خودتون مطرحش کردین و خیلی کمک کردین و تنها کسی بودین که تو بحث شرکت کردین و هیچ کس شرکت نکرد و اهمیتی نداد و .... :wallbash:
200 credit به حسابتون واریز شد :D
براتون آرزوی موفقیت دارم :smile:

saranet
2007/9/08, 05:41 PM
:eek::eek::eek::eek::eek::eek::eek::eek::eek::eek:



خیلی ممنون که این همه تشویقم کردین. اگه شما نبودید احتمالا تو این تاپیک من بودمو دیوار .



:gol::gol::gol::gol::gol::gol::gol::gol::gol:

abc_ramak
2007/9/08, 05:44 PM
اتفاقا منم داشتم به همین فکر می کردم که اگه شما نبودین حتما در اینجا رو تخته می کردم می رفتم :surprised:

yasin_d
2007/9/09, 02:36 AM
آفرین . بقیه بچه ها باید از شما یاد بگیرند.
یکیش خود من..... (ولی راستش رو بخوای من وقت نمی کنم سرم رو بخوارونم وگرنه می یومدم کمک)
اگه برای دوره های بعد کردیت کم آوردی به من بگو بهت بدم

saranet
2007/9/09, 11:16 AM
دومین سوال پیشنهادی :
لینک سوال: http://acm.uva.es/p/v1/149.html

راستش خودم هنوز صورت سوال رو درست نفهمیدم. ولی فکر می کنم یه خورده سخت باشه به هر حال اگه فکر می کنید این سوال خیلی برای شروع خوب نیست . سوال پیشنهادی خودتون رو تا آخر امروز (یکشنبه)مطرح کنید تا از فردا رو برنامه کار کنیم.:smile:

این هم خود سوال:



Forests


The saying ``You can't see the wood for the trees'' is not only a cliche, but is also incorrect. The real problem is that you can't see the trees for the wood. If you stand in the middle of a ``wood'' (in NZ terms, a patch of bush), the trees tend to obscure each other and the number of distinct trees you can actually see is quite small. This is especially true if the trees are planted in rows and columns (as in a pine plantation), because they tend to line up. The purpose of this problem is to find how many distinct trees you can see from an arbitrary point in a pine plantation (assumed to stretch ``for ever'').

http://acm.uva.es/p/v1/149img1.gif

You can only see a distinct tree if no part of its trunk is obscured by a nearer tree--that is if both sides of the trunk can be seen, with a discernible gap between them and the trunks of all trees closer to you. Also, you can't see a tree if it is apparently ``too small''. For definiteness, ``not too small'' and ``discernible gap'' will mean that the angle subtended at your eye is greater than 0.01 degrees (you are assumed to use one eye for observing). Thus the two trees marked http://acm.uva.es/p/v1/149img2.gif obscure at least the trees marked http://acm.uva.es/p/v1/149img3.gif from the given view point.

Write a program that will determine the number of trees visible under these assumptions, given the diameter of the trees, and the coordinates of a viewing position. Because the grid is infinite, the origin is unimportant, and the coordinates will be numbers between 0 and 1.
Input


Input will consist of a series of lines, each line containing three real numbers of the form 0.nn. The first number will be the trunk diameter--all trees will be assumed to be cylinders of exactly this diameter, with their centres placed exactly on the points of a rectangular grid with a spacing of one unit. The next two numbers will be the x and y coordinates of the observer. To avoid potential problems, say by being too close to a tree, we will guarantee that http://acm.uva.es/p/v1/149img4.gif . To avoid problems with trees being too small you may assume that http://acm.uva.es/p/v1/149img5.gif . The file will be terminated by a line consisting of three zeroes.
Output


Output will consist of a series of lines, one for each line of the input. Each line will consist of the number of trees of the given size, visible from the given position.
Sample input


0.10 0.46 0.380 0 0
Sample output


128

abc_ramak
2007/9/09, 04:33 PM
مرسی saranet
برم ببینم چیزی سر در میارم :)

abc_ramak
2007/9/09, 07:50 PM
راستی یادم رفت بگم
برنامه ای که نوشتین رو نتونستم ببینم :(
میشه سورس رو همینجا بنویسین؟
ممنون می شم
ضمنا فایل اجرایی برنامه رو بفرستین نه فایل سورس رو
بازم ممنون :smile:

abc_ramak
2007/9/09, 08:32 PM
راستش خودم هنوز صورت سوال رو درست نفهمیدم. ولی فکر می کنم یه خورده سخت باشه به هر حال اگه فکر می کنید این سوال خیلی برای شروع خوب نیست . سوال پیشنهادی خودتون رو تا آخر امروز (یکشنبه)مطرح کنید تا از فردا رو برنامه کار کنیم.:smile:


راستش منم هنوز چیزی نفهمیدم :surprised:
ولی عیبی نداره همین خوبه.
تا هفته بعد باشه ببینیم چی میشه :razz:

saranet
2007/9/09, 09:08 PM
source (البته به صورت pdf):redface::redface:
اول سعی کردم source رو اینجا بذارم .اما فرمتش کلا به هم ریخت . خلاصه مجبور شدم pdf ش کنم.

abc_ramak
2007/9/12, 11:28 AM
source (البته به صورت pdf):redface::redface:
اول سعی کردم source رو اینجا بذارم .اما فرمتش کلا به هم ریخت . خلاصه مجبور شدم pdf ش کنم.

همونطور که تو پیغام شخصی براتون نوشتم می تونین از علامت # برای نوشتن کد استفاده کنین:



#include "stdio.h"

#include "stdlib.h"

void main()
{

int first,last,N;

int m;//m is a counter

int index;
N=1;

////////////////////////////opening input &out put
files////////////////////////////////////////

FILE *fp1=fopen("input.txt","r");

if(!fp1)
{
printf("input file wasnot opened");

return;
}
FILE *fp2=fopen("output.txt","w");

if(!fp2)
{
printf("output file wasnot opened");

return;
}

/////////////////////////////////////////////////////////////////////
///////////////////////////

while(1) //external loop

{
fscanf(fp1,"%d",&N);

if(N==0) //condition for ending while loop

return;
first=1;
last=N;
index=1;
m=1;

while(1) //internal loop

{

if(index==13)
{

if(first==last)
{
fprintf(fp2,"%d\n",m); //it means 13 is a
last region(things that we want)

break; //exit from internal
loop and go to read the next input

}

else //the m isn't what we
want

{
first=1;
index=1;
last=N;
m++; //test the next "m"

}
}

else //index!=13

{

if(index<13 )
{
first++;
index+=m;
}

else

{
last--;
index+=(m-1); //because by omiting from
the last, we loose one of the next numbers

}

while(index>last)
index=first+(index-last-1);
}
}
}

return;
}

abc_ramak
2007/9/12, 11:30 AM
مثل اینکه خبری نیست.
پیشنهاد می کنم یه مدت تعطیلش کنیم تا اوضاع تالار و خونه تکونی هم معلوم بشه.
بعد باید یه فکر اساسی بکنیم.
saranet نظر شما چیه؟

jalili_hasan
2007/9/14, 01:08 AM
مثل اینکه خبری نیست.
پیشنهاد می کنم یه مدت تعطیلش کنیم تا اوضاع تالار و خونه تکونی هم معلوم بشه.
بعد باید یه فکر اساسی بکنیم.
saranet نظر شما چیه؟
چی چی رو خبری نیست بابا من تازه دارم راه میافتم
درسته که یه کم طول میکشه تا راه بیافته ولی خوب نباید که به این زودی نا امید بشیم که
شما هم مکلف به وظیفه اید نه نتیجه(خودم هم هستما!!!) چیکار دارید کسی میاد کسی نمیاد کارتونو بکنید بابا!!!!!!!!
اگه قبول کنید سومیتون منم و سفت و سخت تو کار ترجمه ی سوالم که احتمالا دو هفته ای طول بکشه!!! به هر حال سعی خودمو میکنم!!!;):):heart::gol:

saranet
2007/9/14, 05:33 AM
آقای jalili-hassan درست می فرمایند .به نظر من بهتره ادامه بدیم حتی اگه بحث روی یه سوال بیشتر از یه هفته طول بکشه .
حالا هم که دیگه 3 نفر شدیم.
متاسفا من که هنوز نتونستم روی این سوال فکر کنم. آخه کم کم دیگه دارم می رم
دانشگاه.
کلاسهامون از یکشنبه شروع می شه>:cry:
ولی تو اولین فرصتی که بدست بیارم حتما تو بحثتون شرکت می کنم.
موفق باشید:gol:

abc_ramak
2007/9/14, 12:10 PM
نگفتم که کلا تعطیلش کنیم.
گفتم یه مدت صبر کنیم و سوال جدید نذاریم.
jalili_hasan شما هم خوش اومدین. :)

mohandesmohammad
2007/9/14, 12:42 PM
سلام بچه ها اینجا محیطش خیلی خوب و علمیه سعی میکنم از این به بعد فعالتر باشم البته من مبتدیم . موفق باشین

mohandesmohammad
2007/9/14, 12:48 PM
منم چهارمی ام البته یه کم وقت میخوام تا برنامه نویسیم بهتر بشه!!!

abc_ramak
2007/9/14, 12:58 PM
منم چهارمی ام البته یه کم وقت میخوام تا برنامه نویسیم بهتر بشه!!!

خوش اومدی :gol: :)

oxision
2007/9/14, 02:55 PM
منم هستم البته چیز زیادی نمیدونم :redface:

abc_ramak
2007/9/27, 11:32 AM
چه خبر؟
خوبین؟ :surprised:

abc_ramak
2007/9/30, 11:52 AM
Problem A. Ancient Keyboard

Input file: A.IN

Program file: A.cpp/A.c/A.dpr/A.java


The scientists have found an ancient device that works in a strange way. The device has a keyboard and
an output tape. The keyboard has 26 keys, with symbols ‘A’ through ‘Z’ on them. Each key has an LED
on it (like the Caps Lock key on some keyboards). Each time you press a key, the LED on it toggles
(changes its state from off to on or vice versa). All LEDs are off initially.
To study the output written on the tape, we consider the device in discrete time steps. Suppose we are
in time t. If no LED is on, no output is written on the tape. If there are i LEDs on, the ith letter of the
English alphabet is written on the tape. For example, if three LEDs are on at a time step, a letter ‘C’ is
written on the tape. This process repeats at every time step.
You are asked to write a program that simulates the ancient device.

Input

The input contains multiple test cases. The first line of the input, contains t, the number of test cases
that follow. Each of the following t blocks, describes a test case.
The first line of each block contains one integer n (0 ≤ n ≤ 26). After this, there are n lines, each
containing one capital alphabet letter, followed by two integers a and b, (0 ≤ a < b ≤ 1000). The capital
letter shows the key pressed. The number a is the first time step at which the key is pressed and the
number b is the second time step at which the key is pressed. During the interval a, a+ 1, . . . , b − 1, the
LED of the key is on. You can assume that, in each test case, these letters are distinct.

Output

For each test case, output one line containing the output string that is written on the tape.


Sample input and output


A.IN

2
2
X 2 6
Y 4 9
3
A 1 5
B 4 8
C 9 10

Standard Output

AABBAAA
AAABAAAA

msmiran
2007/10/02, 08:59 AM
دانشمندان یک دستگاه قدیمی را که به طرز عجیبی کار میکرد پیدا کردند.دستگاه شامل یک صفحه کلید و یک نوار خروجی بود.صفحه کلید دارای 26 کلید بود که حروف A تا Z بر روی آنها نوشته شده بود.هر کلید یک چراغ داشت(مانند کلید Caps Lock) که با فشار بر روی هر کلید حالت این چراغ بین روشن و خاموش عوض میشد.تمام چراغ ها در حالت اولیه خاموش هستند.



در مطالعه روی خروجی نوشته شده بر روی نوار ما ملاحضه کردیم که دستگاه در Step زمانی مجزا کار میکند.فرض کنید ما در زمان t هستیم.هیچ چراغی روشن نیست و بنابراین هیچ خروجی ای بر روی نوار مشاهده نمیشود.اگر i چراغ روشن باشد iامین حرف از الفبای انگلیسی روی نوار نوشته میشود.به عنوان مثال اگر سه چراغ در یک Step زمانی روشن باشد یک حرف C بر روی نوار خروجی به نمایش در می آید.این روند هر بار تکرار میشود.



ورودی :

ورودی دارای چندین test case( این دو کلمه این طور معنی شده : قضیه در آزمایش) است.اولین خط ورودی شامل حرف t هست که تعداد test case ها در ادامه را تعیین میکند.هر کدام از t مجموعه (بلوک)بعد یک test case را تعریف میکند.

اولین خط هر مجموعه شامل یک عدد مانند n( بین 0 تا 26) است.بعد از آن n خط وجود دارد که هر خط شامل یک حرف از الفبای انگلیسی و دو عدد مانند a و b(بین 0 تا 1000)است.حرف بزرگ نشان دهنده کلید فشار داده شده است.عدد a نشان دهنده اولین Step زمانی هست که کلید فشار داده شده و عدد b نشان دهنده دومین Step زمانی مربوط به فشار دادن کلید است.در فاصله a,a+1 ,..., b-1 چراغ مربوط به کلید روشن است.شما میتونید در نظر بگیرید که در هر test case این حروف مجزا هستند.



خروجی:

برای هر test case خروجی یک خط شامل یک String است که روی نوار نوشته شده است.



یک ورودی و خروجی نمونه :

ورودی:

2
2
X 2 6
Y 4 9
3
A 1 5
B 4 8
C 9 10



خروجی استاندارد:

AABBAAA
AAABAAAA



------------------------

اگه ترجمه اشکالی داشت به بزرگی خودتون ببخشید.

-----------------------


منظور سوال رو اگه کسی متوجه شده بگه تا بتونیم بهتر کار کنیم.:cool:

abc_ramak
2007/10/02, 07:51 PM
سلام دوست عزیز خیلی خوش اومدین به بحث جذاب و جالب ACM :)
ممنون به خاطر ترجمه عالیتون




test case( این دو کلمه این طور معنی شده : قضیه در آزمایش)


فکر کنم بشه "نمونه آزمایشی" ترجمه ش کرد. به مفهوم متن نزدیک تره




منظور سوال رو اگه کسی متوجه شده بگه تا بتونیم بهتر کار کنیم.:cool:


ورودي:
2
2
X 2 6
Y 4 9
3
A 1 5
B 4 8
C 9 10

سطر اول عدد 2: يعني خروجي ما دو تا سطر داره (همونtest case)
سطر دوم عدد 2: يعني دو سطر بعدي ورودي، مربوط به يک سطر از خروجي هستن:

X 2 6
Y 4 9

ميتونيم يه بازه زماني از 2 تا 9 در نظر بگيريم و تو يه جدول تعداد چراغ هاي روشن در هر لحظه رو ثبت کنيم




2 3 4 5 6 7 8 9 بازه زمانی

1 1 2 2 1 1 1 0 تعداد چراغ روشن

A A B B A A A - کاراکتر چاپ شده



براي test case دوم داريم:



A 1 5


B 4 8

C 9 10




1 2 3 4 5 6 7 8 9 10 بازه زمانی


1 1 1 2 1 1 1 0 1 0 تعداد چراغ روشن

A A A B A A A - A - کاراکتر چاپ شده

msmiran
2007/10/03, 10:52 PM
سلام دوست عزیز خیلی خوش اومدین به بحث جذاب و جالب ACM :)
ممنون به خاطر ترجمه عالیتون


فکر کنم بشه "نمونه آزمایشی" ترجمه ش کرد. به مفهوم متن نزدیک تره



ورودي:
2
2
X 2 6
Y 4 9
3
A 1 5
B 4 8
C 9 10

سطر اول عدد 2: يعني خروجي ما دو تا سطر داره (همونtest case)
سطر دوم عدد 2: يعني دو سطر بعدي ورودي، مربوط به يک سطر از خروجي هستن:

X 2 6
Y 4 9

ميتونيم يه بازه زماني از 2 تا 9 در نظر بگيريم و تو يه جدول تعداد چراغ هاي روشن در هر لحظه رو ثبت کنيم




2 3 4 5 6 7 8 9 بازه زمانی

1 1 2 2 1 1 1 0 تعداد چراغ روشن

A A B B A A A - کاراکتر چاپ شده


براي test case دوم داريم:



A 1 5


B 4 8

C 9 10




1 2 3 4 5 6 7 8 9 10 بازه زمانی


1 1 1 2 1 1 1 0 1 0 تعداد چراغ روشن

A A A B A A A - A - کاراکتر چاپ شده




معذرت میخوام ولی زیاد چیزی متوجه نشدم.چطور این صفرها رو تشخیص دادید؟;)

oxision
2007/10/04, 04:57 AM
منم نمی فهمم پس اون x,y کجا رفتن ؟

abc_ramak
2007/10/04, 11:49 AM
X 2 6
Y 4 9
2 3 4 5 6 7 8 9 بازه زمانی
1 1 2 2 1 1 1 0 تعداد چراغ روشن
A A B B A A A - کاراکتر چاپ شده



خوب ببینین متن میگه هر کلیدی که فشار میدیم یه چراغ روشن میشه و وقتی همون کلید رو دوباره فشار میدیم چراغش خاموش میشه
اگه واحد زمان رو مثلا ثانیه در نظر بگیریم، تو هر ثانیه هر چند تا چراغ که روشن باشه، کاراکتر مربوط به اون تعداد چاپ میشه.
برای 1، حرف A، برای 2، حرف B و ...
حالا تو ثانیه اول هیچ چراغی روشن نیست
X 2 6 میگه تو ثانیه دوم و ثانیه ششم حرف X رو فشار داده
پس ثانیه 2 یه چراغ روشن شده و ثانیه 6 خاموش شده
Y 4 9 میگه ثانیه 4 یه چراغ (توجه کنین غیر از چراغ X) روشن شده و ثانیه 9 خاموش شده
حالا جدولی که درست کردیم :
ثانیه 2و3 فقط چراغ مربوط به X روشنه
ثانیه 4 چراغ Y هم روشن میشه، یعنی 2 چراغ
ثانیه 5 هم هر دوتا چراغ هنوز روشن هستن
ثانیه 6 حرف x دوباره فشار داده میشه و چراغش خاموش میشه، پس 1 چراغ روشن میمونه
ثانیه 7و8 هم که هیچ اتفاقی نیفتاده و همون 1 چراغ روشنه
ثانیه 9 حرف Y فشار داده شده و چراغ اونم خاموش میشه، پس هیچ چراغی تو ثانیه 9 روشن نیس


امیدوارم تونسته باشم خوب توضیح بدم :D

msmiran
2007/10/04, 02:07 PM
X 2 6
Y 4 9
2 3 4 5 6 7 8 9 بازه زمانی
1 1 2 2 1 1 1 0 تعداد چراغ روشن
A A B B A A A - کاراکتر چاپ شده

خوب ببینین متن میگه هر کلیدی که فشار میدیم یه چراغ روشن میشه و وقتی همون کلید رو دوباره فشار میدیم چراغش خاموش میشه
اگه واحد زمان رو مثلا ثانیه در نظر بگیریم، تو هر ثانیه هر چند تا چراغ که روشن باشه، کاراکتر مربوط به اون تعداد چاپ میشه.
برای 1، حرف A، برای 2، حرف B و ...
حالا تو ثانیه اول هیچ چراغی روشن نیست
X 2 6 میگه تو ثانیه دوم و ثانیه ششم حرف X رو فشار داده
پس ثانیه 2 یه چراغ روشن شده و ثانیه 6 خاموش شده
Y 4 9 میگه ثانیه 4 یه چراغ (توجه کنین غیر از چراغ X) روشن شده و ثانیه 9 خاموش شده
حالا جدولی که درست کردیم :
ثانیه 2و3 فقط چراغ مربوط به X روشنه
ثانیه 4 چراغ Y هم روشن میشه، یعنی 2 چراغ
ثانیه 5 هم هر دوتا چراغ هنوز روشن هستن
ثانیه 6 حرف x دوباره فشار داده میشه و چراغش خاموش میشه، پس 1 چراغ روشن میمونه
ثانیه 7و8 هم که هیچ اتفاقی نیفتاده و همون 1 چراغ روشنه
ثانیه 9 حرف Y فشار داده شده و چراغ اونم خاموش میشه، پس هیچ چراغی تو ثانیه 9 روشن نیس


امیدوارم تونسته باشم خوب توضیح بدم :D


دستت درد نکنه.
حالا میرم ببینم میتونم حلش کنم یا نه.:razz:
راستی C Shap هم قبوله؟
:gol::gol::gol:

abc_ramak
2007/10/04, 07:37 PM
دستت درد نکنه.
حالا میرم ببینم میتونم حلش کنم یا نه.:razz:
راستی C Shap هم قبوله؟
:gol::gol::gol:

خواهش می کنم وظیفم بود :D
راستش من فقط پاسکال و دلفی بلدم
ولی اینجا فایل اجرایی رو بذارین کافیه
زحمت توضیح دادن روش کار هم با خودتونه
فقط بگین چی کار کردین :)

saranet
2007/10/06, 02:23 PM
:smile:خیلی خوشحال شدم دیدم دوباره فعالیتتون رو شروع کردین . براتون آرزوی موفقیت می کنم .
منم سعی می کنم با شما همراه بشم.

abc_ramak
2007/10/09, 12:06 PM
:smile:خیلی خوشحال شدم دیدم دوباره فعالیتتون رو شروع کردین . براتون آرزوی موفقیت می کنم .
منم سعی می کنم با شما همراه بشم.

این دفعه جواب بدی جایزه نمی گیری هااااا :surprised:
:D شوخی کردم
منتظریم :smile:

msmiran
2007/10/09, 12:30 PM
هنوز نتونستم برنامه رو بنویسم.ولی ایده من اینه:اول برنامه رو توی یه آرایه n در 3 ذخیره کنیم و بعد عناصر دوم و سوم هر سطر آرایه رو به طور جداگانه وارد آرایه های یک بعدی کنیم.(البته به این صورت : مثلا 1 و4 که باشه 1و2و3و4 رو توی یه آرایه ذخیره میکنیم.)و از کوچکترین عدد بازه زمانی شروع میکنیم و تا بزرگترین عدد بازه زمانی ادامه میدیم.در هر مرحله این عدد رو با اعداد تمام آرایه های یک بعدی چک میکنیم و با توجه به دفعات تکرار حرف مورد نظر رو چاپ میکنیم.

نظرتون رو دربارش بگید;)

abc_ramak
2007/10/09, 04:20 PM
راستش من چیزی نفهمیدم:surprised:
البته شاید حواسم اینجا نبود که نفهمیدم :confused:
تا حالا خودم فرصت نکردم رو این سوال فکر کنم، همین الان میرم این کارو میکنم ;)

msmiran
2007/10/14, 03:07 PM
سلام
برنامه رو نوشتم البته شیوه ورودی اون فرق میکنه یعنی هر قسمت توی یه خط نیست.بعد از نوشتن حرف یا عدد مورد نظر باید اینتر رو بزنید تا بره خط بعد.مثل عکس زیر:
http://www.uploadgeek.com/uploads456/38/Untitled.jpg

من نتونستم Setup درست کنم نمیدونم روی کامپیوترتون اجرا بشه یا نه .این لینکشه:

http://www.4shared.com/file/26426529/f914e655/ConsoleApplication1.html

abc_ramak
2007/10/17, 03:39 PM
msmiran (http://www.iran-eng.com/member.php?u=11568)
شما برنده شدید :w23:
لطفا سورس برنامه رو هم برای بقیه اینجا بذارین
متن سورس رو در قسمت کد بنویسین
ممنون

msmiran
2007/10/18, 08:40 PM
class Program
{

static void Main(string[] args)
{
int n;
int[,] array;
char char1;
int min, max;
Console.WriteLine("Please Enter t:");
int t = Int32.Parse(Console.ReadLine());
int f;

for (int i = 0; i < t; i++)
{
Console.WriteLine();
max = 0;
min = 27;
Console.WriteLine("Please Enter n:");
n = Int32.Parse(Console.ReadLine());
Console.WriteLine();
array = new int[n,2];
for (int j = 0; j < n; j++)
{
char1 = Char.Parse(Console.ReadLine());
for (int k = 0; k < 2; k++)
{
array[j, k] = Int32.Parse(Console.ReadLine());
}
Console.WriteLine();
}
for (int j = 0; j < n; j++)
for (int k = 0; k < 2; k++)
{
if (array[j, k] > max)
max = array[j, k];
if (array[j, k] < min)
min = array[j, k];
}

for (int m = min; m <= max; m++)
{
f = 0;
for (int j = 0; j < n; j++)
{
if (m >= array[j, 0] && m < array[j, 1])
f++;
}
Console.Write(Alphabets(f));

}
Console.WriteLine();

}
Console.ReadKey();
}
static string Alphabets(int f)
{
string d = "";
switch (f)
{
case 1:
d = "A";
break;
case 2:
d = "B";
break;
case 3:
d = "C";
break;
case 4:
d = "D";
break;
case 5:
d = "E";
break;
case 6:
d = "F";
break;
case 7:
d = "G";
break;
case 8:
d = "H";
break;
case 9:
d = "I";
break;
case 10:
d = "J";
break;
case 11:
d = "K";
break;
case 12:
d = "L";
break;
case 13:
d = "M";
break;
case 14:
d = "N";
break;
case 15:
d = "O";
break;
case 16:
d = "P";
break;
case 17:
d = "Q";
break;
case 18:
d = "R";
break;
case 19:
d = "S";
break;
case 20:
d = "T";
break;
case 21:
d = "U";
break;
case 22:
d = "V";
break;
case 23:
d = "W";
break;
case 24:
d = "X";
break;
case 25:
d = "Y";
break;
case 26:
d = "Z";
break;
}
return d;
}
}

kolak2
2007/10/18, 08:47 PM
سلام
يكي بگه اينACM چيه كه همه در موردش بحث مي كنند ؟ :surprised:

msmiran
2007/10/18, 09:01 PM
سلام
يكي بگه اينACM چيه كه همه در موردش بحث مي كنند ؟ :surprised:

مسابقه بین المللی برنامه نویسی دانشگاهی.یه مسابقه است که مغزای برنامه نویسی توی اون شرکت میکنند و پشتیبانش هم شرکت IBM است.
سایت رسمی:

http://icpc.baylor.edu/icpc

msmiran
2007/10/19, 12:18 AM
منتظر سوال بعدی هستیم;)

RED-C0DE
2007/10/21, 11:00 AM
سوال 11233 سایت UVA :

دانلود PDF سوال(صورت سوال به همراه ترجمه فارسی) (http://redc0de.persiangig.com/other/ACM/PRBs/11233.pdf)



2007/2008 ACM International Collegiate Programming Contest
University of Ulm Local Contest

Deli Deli



خانم دِلی فروشگاه اغذیه "Deli Deli" را اداره می کند. پارسال خانم دلی تصمیم گرفت تا کار و بارش رو توسعه دهد و یک فروشگاه آنلاین برپا کند. او یک برنامه نویس را اجاره کرد تا فروشگاه آنلاین راه بیاندازد.

قبلا چند تا از مشتری های آنلاین جدید خانم دلی در مورد صورتحسابهای الکترونیکی شکایت کرده بودند. آن برنامه نویس فراموش کرده بود زمانی که یک آیتم چند بار خریده می شود از شکل جمع اسامی استفاده کند. متاسفانه برنامه نویس خانم دلی در تعطیلات است و اکنون وظیفه شماست تا این ویژگی را برای خانم دلی پیاده کنید. در زیر توضیحاتی برای ساختن شکل جمع مشاهده می کنید :

1. اگر کلمه در لیست کلمات غیرمجاز باشد ، باید با شکل جمع خود جایگزین شود.
2. در غیر اینصورت اگر کلمه با یک حرف بی صدا به همراه "y" ختم شود، "y" با "ies" جایگزین می شود.
3. در غیر اینصورت اگر کلمه با یکی از "o" , "s" , "ch" , "sh" یا "x" به پایان برسد ، "es" به آخر آن اضافه می شود.
4. در غیر اینصورت "s" به آخر کلمه اضافه می شود.

توضیحات ورودی

خط اول ورودی شامل دو عدد integer می باشد L , N (0<= L <=20 , 1<= N <=100) . سپس L خط بعدی شامل توضیحات کلمات غیر مجاز و شکل جمع آنها می باشند. هر خط شامل دو کلمه که با کارکتر فاصله از هم جدا شده اند می باشد ، که کلمه اول به حالت مفرد و کلمه دوم شکل جمع آن می باشد. بعد از لیست کلمات غیر مجاز ، N خط بعدی هرکدام شامل یک کلمه می باشد، که شما باید شکل جمع آنها را بسازید. می توانید فرض کنید هر کلمه شامل حداکثر 20 کارکتر حروف کوچک الفبای انگلیسی می باشد (از 'a' تا 'z').

توضیحات خروجی

شما باید N خط در خروجی چاپ کنید ، که i امین خط ، شکل جمع برای i امین کلمه ورودی می باشد.


ورودی نمونه


7 3
rice rice
spaghetti spaghetti
octopus octopi
rice
lobster
spaghetti
strawberry
octopus
peach
turkey

خروجی نمونه


lobsters
spaghetti
strawberries
octopi
peaches
turkeys


---------


2007/2008 ACM International Collegiate Programming Contest
University of Ulm Local Contest

Problem D: Deli Deli



Mrs. Deli is running the delicatessen store "Deli Deli". Last year Mrs. Deli has decided to expand her business and build up an online store. She has hired a programmer who has implemented the online store.

Recently some of her new online customers complained about the electronic bills. The programmer had forgotten to use the plural form in case that an item is purchased multiple times. Unfortunaly the programmer of Mrs. Deli is on holiday and now it is your task to implement this feature for Mrs. Deli. Here is a description how to make the plural form:

1. If the word is in the list of irregular words replace it with the given plural.
2. Else if the word ends in a consonant followed by "y", replace "y" with "ies".
3. Else if the word ends in "o", "s", "ch", "sh" or "x", append "es" to the word.
4. Else append "s" to the word.

Input Specification

The first line of the input consists of two integers L and N (0 ≤ L ≤ 20, 1 ≤ N ≤ 100). The following L lines contain the description of the irregular words and their plural form. Each line consists of two words separated by a space character, where the first word is the singular, the second word the plural form of some irregular word. After the list of irregular words, the following N lines contain one word each, which you have to make plural. You may assume that each word consists of at most 20 lowercase letters from the english alphabet ('a' to 'z').

Output Specification

Print N lines of output, where the ith line is the plural form of the ith input word.

Sample Input

3 7
rice rice
spaghetti spaghetti
octopus octopi
rice
lobster
spaghetti
strawberry
octopus
peach
turkey

Sample Output

rice
lobsters
spaghetti
strawberries
octopi
peaches
turkeys

msmiran
2007/10/21, 01:02 PM
دستتون درد نکنه.
توی ACM از این سوالها هم میدن؟
این که خیلی ساده است.
یه دو سه روز دیگه میزنمش تا بقیه دوستان هم روش فکر کنند.;)
--------------------------
یه سوال فنی:
من یه آرایه معرفی میکنم تا دو عدد رو بخونه.وقتی میخوام دو عدد جداگانه رو توی یک خط چاپ کنم مثلا 32 37 که این دو در دو خانه آرایه به طور جداگانه قرار بگیرند برنامه خطا میگیره.(مثل همین آخری که نوشتم نتونستم کاری کنم که اعداد توی یه خط وارد بشند.)

RED-C0DE
2007/10/21, 01:19 PM
توی ACM از این سوالها هم میدن؟
این که خیلی ساده است.
خوب هر کی در حد وسعش می تونه سوال حل کنه...ما هم تازه اول راهیم دیگه...:smile:

اگه مشکلی نباشه منم کد خودم رو برای سوال اول (Ancient keyboard) اینجا می ذارم لطفا راهنمایی کنید اگه مشکلی هست...اصلا درست جواب می ده؟


#include <iostream>
#include <fstream>
using namespace std;

int main()
{
ifstream cin("A.in");
// ofstream cout("test.out");
int T,N;
cin >> T;
while(T--)
{
int arr[1000]={0},a,b,mx=-1;
char ch;

cin >> N;
for(int n=0; n<N; n++)
{
cin >> ch >> a >> b;
mx = b>mx ? b : mx;
for(;a<b; a++)
arr[a]++;
}

for(int i=0; i<mx; i++)
if(arr[i])
cout << ((char)(arr[i] -1 + 'A')) ;
cout << endl;
}

return 0;
}

ممنون...

msmiran
2007/10/21, 01:32 PM
خوب هر کی در حد وسعش می تونه سوال حل کنه...ما هم تازه اول راهیم دیگه...:smile:

اگه مشکلی نباشه منم کد خودم رو برای سوال اول (Ancient keyboard) اینجا می ذارم لطفا راهنمایی کنید اگه مشکلی هست...اصلا درست جواب می ده؟


#include <iostream>
#include <fstream>
using namespace std;

int main()
{
ifstream cin("A.in");
// ofstream cout("test.out");
int T,N;
cin >> T;
while(T--)
{
int arr[1000]={0},a,b,mx=-1;
char ch;

cin >> N;
for(int n=0; n<N; n++)
{
cin >> ch >> a >> b;
mx = b>mx ? b : mx;
for(;a<b; a++)
arr[a]++;
}

for(int i=0; i<mx; i++)
if(arr[i])
cout << ((char)(arr[i] -1 + 'A')) ;
cout << endl;
}

return 0;
}ممنون...

من تعجبم از این بود که این سوال نسبت به سوال جنگل و بحران نیرو یه دنیا تفاوت داشته.حتی نسبت به Ancient keyboard.
------------------------
من که چیزی از C++ سر در نمیارم.

RED-C0DE
2007/10/21, 01:40 PM
من تعجبم از این بود که این سوال نسبت به سوال جنگل و بحران نیرو یه دنیا تفاوت داشته.حتی نسبت به Ancient keyboard.
------------------------
من که چیزی از C++ سر در نمیارم.

منظورت رو متوجه نشدم...
این کدی که من فرستادم با C++ مربوط به سوال Ancient Keyboard هست...مشکلش چیه؟
یعنی چی یه دنیا تفاوت داره!!!:surprised:

RED-C0DE
2007/10/21, 05:35 PM
منم این کد رو برای سوال Power Crisis نوشتم :



//uva 151 by RED-C0DE
#include <iostream>
//#include <fstream>
using namespace std;

struct node
{
int val;
node * next;
node * prev;
};

void make_List(node * p, int n)
{
p->val= 2;
node * tmp= p;
for(int i=3; i<=n; i++)
{
tmp->next = new node();
tmp->next->prev = tmp;
tmp =tmp->next;
tmp->val = i;
}
tmp->next = p;
p->prev = tmp;
}

int main()
{
//ifstream cin("test.in");
int N;
while(cin >> N && N)
{
if(N==13)
{
cout << 1 << endl;
continue;
}

node * head = new node();
make_List(head,N);

int m=2;
while(1)
{
for(int i=1; i<m; i++)
head= head->next;

if(head->next == head )
{
if(head->val ==13)
{
cout << m << endl;
break;
}
else
{
m++;
make_List(head,N);
}
}
else
{
node * tmp= head;
head->prev->next = head->next;
head->next->prev = head->prev;
head = NULL;
head = tmp->next ;
}
}
}

return 0;
}

msmiran
2007/10/21, 06:28 PM
منظورت رو متوجه نشدم...
این کدی که من فرستادم با C++ مربوط به سوال Ancient Keyboard هست...مشکلش چیه؟
یعنی چی یه دنیا تفاوت داره!!!:surprised:

نه در مورد برنامه شما نگفتم.در مورد کدهای C++ گفتم.
میتونید در مورد برنامه ای که نوشتین یه کم توضیح بدین.
مثلا نوشتن T-- در حلقه While درسته و حلقه تموم میشه؟چون در هر مرحله فقط یکی از T کم میکنه.در حالی که توی While باید یه شرط باشه.یا return 0 رو برای چی نوشتین؟return که برای بازگشت یک مقدار به خروجی تابع است ولی اینجا تابعی وجود نداره.
اگه برنامه اجرایی رو قرار بدید خیلی بهتره.


------------------------------------------------------
کسی از دوستان میتونه در مورد خواندن از فایل و نوشتن در فایل کمی برام توضیح بده.

RED-C0DE
2007/10/21, 09:57 PM
الگوریتمی که من به ذهنم رسید : زمان ما از 0 تا 1000 هست و ممکنه در این بازه 0تا ، یکی یا چند تا LED روشن باشه...من اومدم برای هر a,b که از ورودی می خونم ، توی این بازه (بین a,b) مقادیر داخل آرایه ام (arr) رو یکی اضافه می کنم...
آرایه ام در ابتدا به اینصورت است :
0,0,0,0,0,0,0,0,0,0,0,0,0,0,...

مثلا توی تست کیس اولی ما دوتا بازه داریم ، یکی از 2 تا 6 و یکی از 4 تا 9 که در نتیجه ما یک بازه مشترک بین این دو داریم ، یعنی از 4 تا 6 ...خوب من اولین a,b رو که می خونم (2و6) توی یک حلقه می یام و مقادیر بین این دو رو در آرایه یکی اضافه می کنم...در نتیجه آرایم به این صورت می شه :
(از سمت چپ بخونید ...اندازه آرایه 1000 تا است و از 0 شروع می شه اندیسها)
0,0,1,1,1,1,0,0,0,0,0,0,0,0,...

یعنی خونه های 2و3و4و5و6 برابر با 1 می شن...حالا a,b بعدی (4و9) رو می خونم و توی آرایه ام از 4 تا 9 رو یکی اضافه می کنم که در نتیجه به اینصورت می شه :
0,0,1,1,2,2,1,1,1,0,0,0,0,0,0,...

خوب کار تمومه...حالا توی آرایم حرکت می کنم و جاهایی که غیر از 0 هستند رو باید چاپ کنم اما باید کارکتر معادلش رو چاپ کنم...


cout << ((char)(arr[i] -1 + 'A')) ;
این خط اینکار رو انجام میده...چون آرایم نوع عددی است باید با کرکتر 'A' (یعنی 65 تا) جمعش کنم تا درست بشه و گذاشتن (char) پشتش باعث می شه که بصورت کرکتری چاپ کنه (casting) و نه بصورت عددی...



کسی از دوستان میتونه در مورد خواندن از فایل و نوشتن در فایل کمی برام توضیح بده.با همین برنامه می تونین با نحوه کار کردن با فایلها در C++ آشنا بشین...




//Ancient keyboard - sharif 2005
#include <iostream>
#include <fstream> کتابخانه fstream برای کار کردن با فایلها
using namespace std;

int main()
{
ifstream cin("A.in"); به اینصورت استفاده می کنم...از این به بعد توی تابع main هر جا که cin استفاده کنم یعنی داره از فایل می خونه ifstream برای اینکه بتونم توی برنامم از یک فایل بصورت ورودی استفاده کنم از،

ofstream cout("test.out"); تمام چیزایی که برای ifstream گفته شد برای ofstream هم صادقه و در اینجا cout رو یک نوع فایل خروجی تعریف کردم تا بتونم توش بنویسم...هر جا که cout استفاده کردم یعنی توی فایل بنویس

int T,N;
cin >> T; تعداد تست کیسا رو می خونه
while(T--) این حلقه هر دفعه مقدار T رو یکی کم می کنه تا به صفر برسه که در اونصورت می یاد بیرون
{
int arr[1000]={0},a,b,mx=-1;
char ch;
...
...

kolak2
2007/10/21, 10:03 PM
من نفهميدم كه اين acm چيه ؟:surprised:

RED-C0DE
2007/10/21, 10:22 PM
من نفهميدم كه اين acm چيه ؟
اگه برنامه نویسی دوست داشته باشی می تونی توی این وادی چیزای خوبی ببینی و یاد بگیری...

RED-C0DE
2007/10/23, 03:13 PM
یکی ادامه بده باز تا این تاپیک از رونق نیفتاده...

abc_ramak
2007/10/23, 05:03 PM
کسی سوال نداره؟ :surprised:

msmiran
2007/10/23, 07:36 PM
ایده من برای حل مسئله Deli Deli:
یه آرایه دو بعدی L در 2 تعریف میکنیم که برای نوشتن شکل جمع کلمات خاص هست.ستون اول خود کلمات و ستون دوم شکل جمع آنها.به یک آرایه تک بعدی به طول N تعریف میکنیم که کلماتی که قراره شکل جمعشون نوشته بشه توی اون قرار میگیرند.در یک مرحله با چند شرط شکل جمع اونا رو مینویسیم.یعنی اول چک میکنیم اگه توی ستون اول آرایه مربوط به کلمات خاص بود کلمه موجود در ستون دوم همان سطر را چاپ میکنیم.در غیر این صورت به سراغ سایر حالتها میریم.

msmiran
2007/10/25, 09:24 PM
http://www.4shared.com/file/27419057/ee92fe4c/Deli_Deli.html
اگه OK بود بگید تا کدها رو هم قرار بدم.

RED-C0DE
2007/10/29, 08:59 AM
خوب بود...کدتون رو همینجا بذارین...

-----

کسی سوال نداره؟ :surprised:
خودت سوالای خوبی می ذاری ... یک سوال دیگه هم خودت انتخاب کن و بذار...

msmiran
2007/10/29, 03:28 PM
static void Mobadel(string Word)
{
char[] Sedadar = { char.Parse("a"), char.Parse("i"), char.Parse("o"), char.Parse("u"), char.Parse("e") };
int k;
bool found = false ;
char[] Tempword = Word.ToCharArray();
int a = Word.Length;
if (Tempword[a - 1] == char.Parse("y"))
{
found = false ;
for (k = 0; k < 5; k++)
if (Tempword[a - 2] == Sedadar[k])
found = true;
if (found == true)
{
for (k = 0; k < a; k++)
Console.Write(Tempword[k]);
Console.Write("s");
}
else
{
for (k = 0; k < a-1; k++)
Console.Write(Tempword[k]);
Console.Write("ies");
}
}
else if ((Tempword[a - 1] == char.Parse("h") && (Tempword[a - 2] == char.Parse("c") || Tempword[a - 2] == char.Parse("s")))

|| Tempword[a - 1] == char.Parse("s") || Tempword[a - 1] == char.Parse("o")
|| Tempword[a - 1] == char.Parse("x"))
{
for (k = 0; k < a; k++)
Console.Write(Tempword[k]);
Console.Write("es");
}
else
{
for (k = 0; k < a; k++)
Console.Write(Tempword[k]);
Console.Write("s");
}
Console.WriteLine();

}
static void Main(string[] args)
{
string[,] Special;
string[] Words;
int i, j;
int N, L;
Console.WriteLine("Please Enter L:");
while (true)
{
L = Int32.Parse(Console.ReadLine());
if (1 <= L && L <= 20)
break;
else
Console.WriteLine("Please Enter L between 1 and 20:");
}
Console.WriteLine("Please Enter N:");
while (true)
{
N = Int32.Parse(Console.ReadLine());
if (1 <= N && N <= 100)
break;
else
Console.WriteLine("Please Enter L between 1 and 100:");
}

Console.WriteLine("Please Enter Special Words:");
Special = new string[L, 2];
Words = new string[N];
for (i = 0; i < L; i++)
{
Console.Write("Word: ");
Special[i, 0] = Console.ReadLine();
Console.Write("Shekle Jam: ");
Special[i, 1] = Console.ReadLine();
}
Console.WriteLine("Enter Words:");
for (i = 0; i < N; i++)
Words[i] = Console.ReadLine();

Console.WriteLine();

for (i = 0; i < N; i++)
{
for (j = 0; j < L; j++)
if (Words[i] == Special[j, 0])
{
Console.WriteLine(Special[j, 1]);
break;
}
else
{
Mobadel(Words[i]);
continue;
}

}
}

itse
2007/10/29, 05:35 PM
درایه های یک ماتریس 5x6 را از ورودی گرفته
الف)میانگین درایه های هر سطر را چاپ کند
ب)" " " هر ستون " " "
ج)بزرگترینمقدار هر سطر را چاپ کند
د) " " " " هر ستون " " " "
نکته : به کمک تابع حل شوذ;):)

abc_ramak
2007/10/29, 06:45 PM
درایه های یک ماتریس 5x6 را از ورودی گرفته
الف)میانگین درایه های هر سطر را چاپ کند
ب)" " " هر ستون " " "
ج)بزرگترینمقدار هر سطر را چاپ کند
د) " " " " هر ستون " " " "
نکته : به کمک تابع حل شوذ;):)

ممنون که توی بحث ما شرکت کردی :gol:
مطمئنی این سوال ACM هست؟ :razz:

RED-C0DE
2007/10/29, 09:44 PM
درایه های یک ماتریس 5x6 را از ورودی گرفته
الف)میانگین درایه های هر سطر را چاپ کند
ب)" " " هر ستون " " "
ج)بزرگترینمقدار هر سطر را چاپ کند
د) " " " " هر ستون " " " "
نکته : به کمک تابع حل شوذ;):)

احتمالا این یک تمرین درسی که نیست؟!؟!؟

اینم کد من برای Deli Deli :


//uva#11233 "Deli Deli" ~ C0DED by RED-C0DE
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
#include <vector>
//#include <fstream>
using namespace std;
int main()
{
//ifstream cin("test.in");
int L , N;
string irregular , plural , word;
string vowels = "aeiou";

while(cin >> L >> N)
{
map <string , string> mp;

for(int l=0; l<L; l++)
{
cin >> irregular >> plural;
mp[irregular] = plural;
}

for(int n=0; n<N; n++)
{
cin >> word;
//rule#1 :
if(mp[word]!="")
{
cout << mp[word] << endl;
continue;
}

size_t sz = word.size();
//rule#2 : vowels + y > ies :
if(sz>=2 && (vowels.find(word[sz-2])==-1) && word[sz-1]=='y')
{
word[sz-1]= 'i';
word+= "es";
}
//rule#3 :
else if(sz>=2 && ( (word[sz-2]=='c' && word[sz-1]=='h') || ((word[sz-2]=='s' && word[sz-1]=='h')) ))
word += "es";
else if(word[sz-1] =='o' || word[sz-1]=='s' || word[sz-1]=='x')
word += "es";
//rule#4 :
else
word+="s";

cout << word << endl;
}
}
return 0;
}


پیشنهاد می کنم به دوستان علاقه مند، توی سایت uva و همینطور TopCoder عضو بشن و به حل سوالای مختلف بپردازن...می تونین برای هزاران سوالی که در این سایتها هست کد بنویسین و براشون بفرستین تا نتیجه اش رو براتون بفرستن...
سایتهای زیادی از اینکارا می کنن (Online Judge) که این دو تا از معروفترینهاشون هستن...
البته یه جورایی با هم فرق دارن این دو تا سایت...اگه مایل بودین بگین تا بیشتر راجع بهشون صحبت کنیم...
بهتره خودتون هم یک سر برید و ثبت نام کنید...
http://www.topcoder.com (http://www.topcoder.com/)
http://icpcres.ecs.baylor.edu/onlinejudge/

RED-C0DE
2007/11/06, 03:23 PM
یک مسئله ساده دیگه :
http://acm.uva.es/p/v108/10878.html

msmiran
2007/11/08, 09:35 AM
یک مسئله ساده دیگه :
http://acm.uva.es/p/v108/10878.html

میگم جریان این چیه؟
این ورودی رو اصلا چطور میشه بهش داد؟

RED-C0DE
2007/11/08, 01:19 PM
این سوال فقط یک ورودی داره (و قطعا یک خروجی) ...همونطور که سوال رو خودنین و فهمیدین ، سوال می گه یک نوار (Tape) وجود داره که روش اطلاعاتی ذخیره شده (روی نوار ، اطلاعات بصورت بایت به بایت در امتداد نوار ، پشت سر هم نوشته می شن)
اگه یکم توی ورودی و خروجی ای که داده دقت کنین متوجه رابطه مورد نظر می شین...
(نکته مهم سوال فقط فهمیدن همین موضوع هست)
اگه کسی متوجه نشد دفعه بعد می گم که رابطش چیه...بعدش فقط یک پردازش String باید روی ورودی انجام بدین...

RED-C0DE
2007/11/08, 01:24 PM
اینم یک سایت خوب کمکی برای تست کردن ورودی/خروجیهای سوالای مختلف (بیشتر سوالای UVA رو داره)

http://uva.xgd.dk/problemssolve.php

چند هزار سوال توی دیتابیسش داره...مثلا شما یک سوال رو حل کردید ولی مطمئن نیستید با test case ای که ساختین و بهش دادین آیا جواب درست داره می ده یا نه...در اینصورت می تونین سوال مورد نظرتون رو در این سایت پیدا کنین و روش کلیک کنین و ورودی ای که ساختین رو بهش بدین تا خروجی درست رو نشون بده...

msmiran
2007/11/09, 04:26 PM
سلام
یه سوال داشتم که زیاد ربطی به این تاپیک نداره.ولی گفتم ممکنه شما اساتید گرامی جوابشو بدونید:
همون طور که میدونید توی زبانهای برنامه نویسی از اسمبلی گرفته تا سی شارپ یه قاعده هست که میگه نام متغیر نباید با عدد شروع بشه.میخواستم بپرسم کسی از دوستان دلیلش رو میدونه؟یعنی قاعده خاصی داره که نمیشه عدد رو اول نام متغیر گذاشت یا نه فقط یه قرارداده؟

yasin_d
2007/11/09, 06:12 PM
خودم دلیلش رو نمی دونم.
ولی فکر کنم از اونجایی که ما برای نوشتن یک رشته برای مقایسه یا مقدار دهی از کوتیشن یا تک کوت استفاده می کنیم کامپایلر می تونه بین رشته ای که ما می خواهیم و متغیر ها تفاوت قایل بشه
ولی چون اعداد بدون کوتیشن نوشته می شوند و به صورت ساده هستند برای تفاوت بین یک متغیر و عدد این قانون اجرا می شود که شروع متغیر با حروف باشد.

برای اطلاعات بیشتر به کتاب های طراحی زبان و کامپایلر مراجعه کن

poorya.pzm
2007/12/12, 06:35 PM
سلام
من الان ترم اول نرم افزارم می خواستم ببینم از کجا باید برای ACM شروع کنم و از چه زبان هایی میشه استفاده کرد.vb.net هم تا حدودی یاد دارم و نهایت برنامه ای که نوشتم تبدیل عدد به حروف بوده.

yasin_d
2007/12/13, 01:20 PM
سلام دوست عزیز
امیدوارم موفق باشی.
یک نکته ای که تو ACM مهم هست الگوریتم نویسی است . یعنی اینکه حالا برای مثالهایی که راه حلش خیلی طولانی هست بتونی یه الگوریتم خوب بنویسی
به نظر یاد داشتن یک یا چند زبان در درجه دوم هست و مسئله مهم هوش فرد هست که می تونه بهش کمک کنه اگه تو توانایی حل یک مسئله رو به صورت الگوریتم وار داشته باشی مطمئنا در تبدیل اون الگوریتم به هر syntax زبانی مشکلی نداری

msmiran
2007/12/19, 11:36 AM
سلام خدمت دوستان عزیز
مثل این که تاپیک به طور کل خوابیده.
------------------------------
ترم قبل که برنامه نویسی داشتیم استادمون یه برنامه داد که گفت این هم مربوط به مسابقات ACM بوده:

برنامه ای که دو عدد بسیار بزرگ (حداکثر 500 رقم) را دریافت کرده و آنها را با هم جمع کند.
این برنامه رو تونستم بنویسم ولی توی یه حالت مشکل داره اونم وقتی که دو عدد از نظر تعداد ارقام با هم برابر باشند.
کد برنامه رو براتون میزارم.امیدوارم بتونید مشکل اونو رفع کنید.
فزض کنید دو عدد 5 رقمی رو با هم جمع میکنید.اگه حاصل 5 رقمی شد که هیچ ولی اگه حاصل یه عدد 6 رقمی بشه برنامه خطا میگیره و به همین ترتیب.



using System;

using System.Collections.Generic;

using System.Text;


namespace ConsoleApplication7

{

class Program

{

static void Main(string[] args)

{

string temp;

string num1 = Console.ReadLine();

string num2 = Console.ReadLine();

if (num1.Length < num2.Length)

{

temp = num1;

num1 = num2;

num2 = temp;

}

int[] sum = new int[num1.Length];

int m = num1.Length - 1;

int n = num2.Length - 1;

while (n >= 0)

{


sum[m] += (num1[m] + num2[n] - 96);

if (sum[m] >= 10)

{

sum[m] -= 10;

sum[m - 1] += 1;

}

n--;

m--;

}

while (m >= 0)

{

sum[m] += num1[m] - 48;

if (sum[m] >= 10)

{

if (m != 0)

sum[m] -= 10;

if (m - 1 == -1)

break;

sum[m - 1] += 1;

}

m--;

}

for (int i = 0; i < num1.Length; i++)

Console.Write("{0}", sum[i]);

Console.ReadLine();

}

}

}

abc_ramak
2007/12/23, 09:31 PM
متاسفانه C بلد نیستم و نتونستم چیز زیادی از کدی که نوشتین بفهمم، ولی سعی میکنم روی پاسکال بنویسم :)
اگه به نتیجه ای رسیدم خبرتون میکنم :smoke:

pnustudent110
2008/4/14, 06:28 PM
سلام دوستان ما هم انشا الله با هاتون همراه مي شيم البته از شما مي خوايم يه چيزايي ياد بگيريم
خلاصه دست ما رو هم بگيريد..

maimos
2008/10/17, 07:38 AM
سلام . لطفا در ابتدا اگر ممکنه برنامه Ancient Keyboard را در زبان c هم بنویسید.(نیاز شدید است)
اگر ممکن بود در تمامی برنامه ها این کار انجام شود.

sutak
2008/10/17, 08:45 AM
سلام
می شه درباره acmیه کم توضیح بدین؟!

server
2008/10/20, 03:11 PM
سلام
می شه درباره acmیه کم توضیح بدین؟!
معتبرترین مسابقات جهانی و بین المللی برنامه نویسی که همه ساله برگزار می شود
برای اطلاعات بیشتر بر روی لینک زیر کلیک نمایید
http://pnucomputer.blogfa.com/post-275.aspx

server
2008/10/20, 03:12 PM
سلام . لطفا در ابتدا اگر ممکنه برنامه Ancient Keyboard را در زبان c هم بنویسید.(نیاز شدید است)
اگر ممکن بود در تمامی برنامه ها این کار انجام شود.
من دارم روی این برنامه کار می کنم به زودی وقتی تموم شد بروی اینترنت می زارم تا همه استفاده کنن

maimos
2008/10/31, 05:30 AM
اینم جواب سوالی که خودم درخواست کردم.
امیدوارم برای شما مفید باشه.


//*******mohammadi
#include <stdio.h>
#include <conio.h>
int main(void)
{
int a, b, i, j, t, n, mint, ns, timj[1002];
char le[3];
clrscr();
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
mint=0;
for(j=0; j<1002; j++)
timj[j]=0;
for(i=0; i<n; i++)
{
scanf("%s%d%d", &le, &a, &b);
if(b>mint)
mint=b;
for(j=a; j<b; j++)
timj[j]++;
}
for(i=0; i<mint; i++)
{
if(timj[i]>0)
printf("%c", timj[i]+'A'-1);
}
printf("\n");
}
getch();
return 0;
{

genius47
2009/2/15, 09:11 PM
سلام منم 1 سوال ای سی امی دارم میشه سریع جواب بدین تو تحلیلش ایراد دارم

Problem D: Blast the Enemy!

A new computer game has just arrived and as an active and always-in-the-scene player, you should finish it before the
next university term starts. At each stage of this game, you have to shoot an enemy robot on its weakness point. The
weakness point of a robot is always the “center of mass” of its 2D shape in the screen. Fortunately, all robot shapes are
simple polygons with uniform density and you can write programs to calculate exactly the center of mass for each
polygon.
Let's have a more formal definition for center of mass (COM). The center of mass for a square, (also circle, and other
symmetric shapes) is its center point. And, if a simple shape C is partitioned into two simple shapes A and B with areas

SA and SB, then COM(C) (as a vector) can be calculated by

A B
A B

S S
COM C S COM A S COM B


  

( )  ( ) ( ) .
As a more formal definition, for a simple shape A with area SA:

A
A

S
a ds
COM A





.
( )



.

Input (Standard Input)

The input contains a number of robot definitions. Each robot definition starts with a line containing n, the number of
vertices in robot’s polygon (n <= 100). The polygon vertices are specified in the next n lines (in either clockwise or
counter-clock-wise order). Each of these lines contains two space-separated integers showing the coordinates of the
corresponding vertex. The absolute value of the coordinates does not exceed 100. The case of n=0 shows the end of
input and should not be processed.

Output (Standard Output)

The ith line of the output should be of the form “Stage #i: x y” (omit the quotes), where (x,y) is the center of mass
for the ith robot in the input. The coordinates must be rounded to exactly 6 digits after the decimal point.

Sample Input and Output

Standard Input Standard Output
4
0 0
0 1
1 1
1 0
3
0 1
1 0
2 2
8
1 1
2 1
2 7
3 7
3 0
0 0
0 7
1 7
0
out puts
Stage #1: 0.500000 0.500000
Stage #2: 1.000000 1.000000
Stage #3: 1.500000 3.300000
4

genius47
2009/2/15, 09:23 PM
فک کنم خودتون دانلود کنین بهتره;)