برای استفاده از تمام امکانات سایت از جمله مرکز دانلود باید در سایت عضو شوید. برای ثبت نام تنها 1 دقیقه زمان نیاز دارید ، برای ثبت نام اینجا کلیک کنید

صفحه اول انجمنها
ثبت نامجستجوراهنماي انجمنليست اعضااتاق چت (0)گروه هاي كاربرانمرکز دانلودورود

پاسخ به يك موضوع صفحه 1 از 7
برو به صفحه 1, 2, 3, 4, 5, 6, 7  بعدي
بررسی سوالات ACM_ICPC ( فعلا شریف 2001)
نويسنده پيغام

پاسخ بصورت نقل قول
ارسال بررسی سوالات ACM_ICPC ( فعلا شریف 2001) 
سلام

ان شاءالله می خوایم اینجا هر چند وقت یه بار ( حدودا یه هفته ) سوالاتی مطرح کنیم و به حل کردن اونها بپردازیم.

اول هاش رو نگاه نکنین ! آخراش سخت میشه  Razz  

از سال 99 سوال B و از سال 2000 سوال های G , H حل نشده باقی موندن .



این پست آخرین بار توسط ملایی ویرایش شده است در تاریخ 3 شنبه Dec 18, 2007 12:59 am. در مجموع این پست 3 بار ویرایش شده است.

_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
سلام
جوابی که من برای این قسمت در نظر گرفتم اینه

اگر اشکالی داشت حتما بگین
اگر با visual کار می کنین باید stdio.h و stdlib.h رو بزارین و اگر با borland c کار می کنید باید تمام h. ها رو بزارین و using namespace std رو پاک کنید
code:
#include <fstream>
#include <stdio>
#include <stdlib>
#include <iostream>
using namespace std;
int main(){
   ifstream in("testb.txt");
   if (!in)
      cout<<"error";
   char h[3],m[3],s[3];
   short int t; long int seconds,x1,x2; float f,ans;
   for (in>>t;t>0;--t){
      in >> f;
      in.getline(h,10,':');
      seconds=x1=x2=0;
      seconds+=atoi(h)*3600;
      in.getline(m,10,':');
      seconds+=atoi(m)*60;
      in>>s;
      seconds+=atoi(s);
      if (seconds){
         for (register long int i=1; ;++i){
            x1+=f*3600; x2+=f*3600+seconds;
            if (x1>43200)
               x1=x1%43200;
            if (x2>43200)
               x2=x2%43200;
            if (x1==x2){
               ans=i*f/24;
               printf("%.3f\n",ans);
               break;
            }
         }//for
      }//if
      else
         cout<<"0.000"<<endl;
   }//for
   return 0;
}



_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
امید وارم مفید بوده باشه اگه کسی در مورد جواب نظری یا سوالی داره بگه.

سوال بعدی :

به کمک پشته برنامه ای بنویسید که رشته ای را از ورودی بگیرد و مشخص کند آیا متقارن هست یا نه؟

جوابی من در نظر گرفتم به کمک لیست پیوندیه اگه کسی با آرایه بنویسه میتونه به اسم خودش اینجا بزاره.


_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
کسی نظری نداره؟

ان شاءالله فردا شب جواب رو به همراه یه سوال جدید می زارم


_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
اینم جواب:

code:
#include "iostream"
#include "fstream"
using namespace std;
struct node {
   char data;
   node *next;
};
class linklist {
   node *start;
   node *top;
public:
   linklist(){start=top=NULL;}
   void push(char x);
   char pop();
};
void linklist::push(char x){
   node *p=new node;
   p->data=x;
   if (!top) {
      top=p;
      top->next=NULL;
   }
   else {
      p->next=top;
      top=p;
   }
}
char linklist::pop(){
   if (!top)
      cerr<<"stack is empty";
   else {
      int x=top->data;
      node *p=top;
      top=top->next;
      free (p);
      return x;
   }
   return 0;
}
int main(){
   char a[30],b[30],ch;
   linklist f;
   gets(a);
   int i=0;
   ch=a[i];
   while (ch!=NULL){
      f.push(ch);
      ++i;
      ch=a[i];
   }
   int j=0;
   while (j<i){
      b[j]=f.pop();
      ++j;
   }
   b[j]=NULL;
   if (strcmp(a,b)==0)
      cout<<"motagharen an";
   else
      cout<<"nistan";
   return 0;
}



حالا یه سوال نسبتا ساده:


_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

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

در مورد آرایه های پویا در تاپیک " یه دوره برنامه نویسی" توضیح داده شد.

حالا سوال بعد:

بهتون توصیه می کنم صورت سوال رو خوب بخونین . سوال لذت بخشیه !


_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
جالب بود نه؟

code:
#include "iostream.h"
#include "conio.h"
#include "stdio.h"
void main()  {
FILE *fp;
fp=fopen("d.in","rb");
int r,c,t,i,j,cnt=0;
fscanf(fp,"%d",&t);
for (int k=1;k<t>=1;--i)
   for (j=c;j>=1;--j)
      if (i!=j)
         cnt+=(r-i+1)*(c-j+1);
}
cout<<cnt;
getch();
fclose(fp);
}



_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

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

من این جواب رو تصحیح نمی کنم.

سوال بعد:

برنامه ای بنویسید که دو چند جمله ای با دو متغیر را با هم جمع کند.
ورودی از یک فایل به این صورت است:

خط اول تعداد جملات چند جمله ای اول
خط دوم ضریب توان x و توان y برای هر کدام از جملات
خط سوم تعداد جملات چند جمله ای دوم
خط چهارم ضریب توان x و توان y برای هر کدام از جملات


مثلا:
code:
2
1 2 3 4 5 1
3
2 5 1 0 2 3 1 0 1


تمام اعداد ورودی بزگتر مساوی با صفر اند.


_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
این سوال یه جورایی به سوال 2 میان ترم خانم حلمی مربوطه.

code:
#include <iostream>
#include <fstream>
using namespace std;
struct node{
      int c,x,y;
      node *link;
   };
class list{
public:
   node *start;
   void addnode(int,int,int);
   list add(list b);
   list(){start=NULL;}
   node* del(list,node*);
   void print();
};
void list::addnode (int cc,int xx,int yy){
   node *p=new node;
   p->c=cc; p->x=xx; p->y=yy;
   node *q=start;
   if (!start){
      start=p; start->link=NULL;}
   else {
      while (q->link)
         q=q->link;
      q->link=p;
      p->link=NULL;
   }
}
void list::print(){
   node *q=start;
   int a;
   while (q){
      a=0;
      while (!q->c){
         q=q->link; a=1;
      }
      if (a==1) continue;
      if (q->c!=1)
         cout<<q>c;
      if (q->x==1)
         cout<<"x";
      else if (q->x!=0)
         cout<<"x^"<<q>x;
      if (q->y==1)
         cout<<"y";
      else if (q->y!=0)
         cout<<"y^"<<q>y;
      cout<<q>link;
   }
   printf("\b \n");
}
list list::add(list b){
   list ans;
   node *q=start;
   node *p;
   while (q) {
      int co=0;
      co=q->c;
      p=b.start;
      while (p) {
         int a=0;
         if ( p->x==q->x && p->y==q->y ) {
            co+=p->c;
            if (p==b.start){//az in if ta
               b.start=b.start->link;
               free(p);
               p=b.start;
            }
            else //in else bayad too tabe del bashe yani bayad az inja pak beshe
               p=del(b,p);
            a=1;
         }
         if (!a)
            p=p->link;
      }
      ans.addnode (co,q->x,q->y);
      q=q->link;
   }
   p=b.start;
   while (p) {
      ans.addnode(p->c,p->x,p->y);
      p=p->link;
   }
   return ans;
}
node * list::del(list b,node * p){
   /*if (p==b.start){
      b.start=p->link;//inja vaghti dasture free(p);
      free(p);
      return b.start;}*/ //ro bezarim bad az kharej shodan az
   node *q=b.start;//tabe b.start=p; ro az tarafe khodesh
   while (q->link!=p)//ejra mikone!! bayad chi kar konam?
      q=q->link;
   q->link=p->link;
   free(p);
   return q->link;
}
int main(){
   list a,b,ans;
   int cc,xx,yy,n;
   ifstream in("rajabiyun.txt");
   if (!in)
      cerr<<"error";
    in >> n;
   while (n--){
      in>>cc>>xx>>yy;
      a.addnode(cc,xx,yy);
   }
   in >> n;
   while (n--){
      in>>cc>>xx>>yy;
      b.addnode(cc,xx,yy);
   }
   cout<<"f(x,y)= "; a.print();
   cout<<"g(x,y)= "; b.print();
   ans=a.add(b);
   cout<<"sum of them= "; ans.print();
   return 0;
}


سوال بعدی که دارم روش کار می کنم mazing اٍ . فعلا مشکل داره ولی انشاءالله بزودی اونم می زارم.


_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
فعلا یه سوال داشته باشین تا ببینم این mazing  رو چی کارش میشه کرد.

برنامه ای بنویسید که دو ماتریس اسپارس را از فایل بگیرد و حاصلضرب آنها( یا جمع) را نمایش بده (یا تو فایل بریزه)

اینم فردا پس فردا میزارم چون احتمالا واسه پایان ترم به درد می خوره.


_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی

پاسخ بصورت نقل قول
ارسال  
این دفعه به طور کامل با borland c یا turbo c می تونید اجرا کنید:

code:
#include "fstream.h"
#include "iostream.h"
ifstream in("multsp~1.in");
short int max;
struct term{
   int raw,col;
   float data;
};
class sparse{
public:
   term *list;
   sparse();
   void read();
   void print();
   sparse mult(sparse);
};
int main(){
   if (!in)
      cout<<"error";
   in>>max;
   sparse a,b,c;
   a.read();
   b.read();
   if (a.list[0].col==b.list[0].raw){
      c=a.mult(b);
      c.print();
   }
   else
      cout<<"zarb nemishan";
   return 0;
}
void sparse::sparse(){
   list = new term[max];
   }
void sparse::read() {
   in>>list[0].raw>>list[0].col>>list[0].data;
   for (int i=1;i<int>>list[i].raw>>list[i].col>>list[i].data;
}
sparse sparse::mult(sparse b) {  //har kodoom az moaleefe haye matrise avval
   int flag,cnt=0;      //ke col = satre matris dovvom bashe zarb mishe
   register int i;      //va agar hamchin satri(az avvali) va sotooni(az dovoomi) dar c bashe behesh ezafe
   sparse c;      //mishe va gar na ye satre jadid dar c bevojood miyad.
   c.list[0].raw=list[0].raw;
   c.list[0].col=b.list[0].col;
   c.list[0].data=cnt;
   for ( i=1 ;i<=list[0].data;++i)
      for (register j=1;j<=b.list[0].data;++j){
         flag=1;
         if (list[i].col==b.list[j].raw){
            for ( register k=1; k<=cnt ; ++k)
               if (list[i].raw==c.list[k].raw && b.list[j].col==c.list[k].col){
                  flag=0;
                  c.list[k].data+=list[i].data*b.list[j].data;
               }
            if (flag){
               ++cnt;
               c.list[cnt].raw=list[i].raw;
               c.list[cnt].col=b.list[j].col;
               c.list[cnt].data=list[i].data*b.list[j].data;
            }
         }
      }
   return c;
}
void sparse::print(){
   int k=1;
   for (register int i=0;i<list[0].raw;++i){
      for (register int j=0;j<list[0].col;++j)
         if (list[k].raw==i && list[k].col==j){
            cout.width(5);
            cout<<list[k].data;
            ++k;
         }
         else {
            cout.width(5);
            cout<<"0";
         }
      cout<<endl;
   }
}



_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !

محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003

سوابق کاریه من :

معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
نمايش نامه هاي ارسال شده قبلي:
پاسخ به يك موضوع صفحه 1 از 7
برو به صفحه 1, 2, 3, 4, 5, 6, 7  بعدي