# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C > گفتگو: تمرین های زبان برنامه نویسی ++C

## smahdi1991

سلام به تمامی دوستان من این تاپیک رو برای دوستانبرنامه نویسیه زبان C++‎‎  زدم و امید واروم کهبرنامه نویسان به زبانC++‎‎  بیان و در این تاپیک مثل تا پیک C فعالیت کنند و یک نفر هم مسولیت آموزش این بخش رو به عهده بگیره.قوانین هم مثل قوانین تاپیک C هست .
با تشکر سید مهدی

----------


## بانوی ایران

اگر میشه تو این تاپیک یکم اموزش هم باشه من اصلا cppبلد نیستم
دوست دارم یاد بگیرم

----------


## smahdi1991

کسی حاضر نیست مسئولیت آموزش این بخش رو بعهده بگیره؟

----------


## #Elahe#

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

برنامه ای بنویسید که اسم شما را در خروجی مثل نمونه زیر چاپ کند

----------


## rak6993

سلام
من تا حدودی با ++c کار کردم میتونم آموزش و تمارین مختصری بذارم رو سایت و اگه کسی سوالی داشت کمکش کنم.

----------


## smahdi1991

سلام به دوستان یعنی واقعا زبان C++‎‎ این قدر کم طرفدار در بین برنامه نویسان که از این تاپیک استقبالی نشد یعنی کسی نمی خواد مسولیت آموزش این بخش رو مثل بخش C به عهده بگیره خواهشا یک نفر بیاد و این لطف رو بکنه و همه بتونیم از این فرصت خوب برای آموزش استفاده کنیم

----------


## farid_mov2006

سلام دوستان
با اجازتون من یک سوال میگم تا حلش کنیم
سوال:
برنامه ای بنویسید تا یک مستطیل/بیضی/پیکان{علامت فلش}/لوزی را در کنار هم با کمی فاصله رسم کند؟{این مثال گرفته شده از کتاب دیتل است/راستش خودم نتونستم حلش کنم}

----------


## smahdi1991

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

----------


## mabbaszadegan

با عرض سلام خدمت دوستان عزیز
به نظرم کار خوبیه ، من که چیز زیادی بلد نیستم ولی تا اونجایی که از دستم بر بیاد و بلد باشم در خدمتم

اگه دوستان موافقند از پست بعدی با همدیگه شروع کنیم به یادگیری C++‎ ، البته توی این کار همه (مخصوصا مدیران بخش) باید کمک کنند تا یه بحث منسجم و مفیدی از آب در بیاد

----------


## farid_mov2006

سلام دوستان 
با ستاره درستش کنید{داخل کتاب گفته با ستاره}

----------


## farid_mov2006

سلام دوستان
کسی نتونسته حلش کنه{منم نتونستم :خیلی عصبانی: }

----------


## fshb_ 1370

سلام
این جا تاپیک خیلی خوبیه، ولی اصلا هیچ کس فعالیت نمیکنه.
من کدم میذارم ولی نتونستم شکل بیضی رو رسم کنم، حالا ببینید درسته :متفکر: 

#include<iostream>
using namespace std;
void main()
{
 //rectangle
 for (int i=0;i<4;i++)
 {
  if (i==0||i==3)
  { 
   for (int j=0;j<5;j++)
    cout<<"* ";
   cout<<endl;
  }
  else 
  { for (int j=0;j<2;j++)
   { 
    cout<<"*";
    for (int space=0;space<7;space++)
     cout<<" ";
   }  
  cout<<endl;
  }
 }
 cout<<endl;
 //beyzi???
 //peykan
 int x=1,t=0,j;
 for (int i=0;i<5;i++)
 {
  for (j=0;j<x;j++)
   cout<<"* ";
  if (x<3&&t==0)
   x++;
  if (t==1)
   x--;
  cout<<endl;
  if(j==3)
  { 
   x=2;
   t++;
  }
 }
 //lozi
 x=3;
 int y=1;
 for (int i=0;i<7;i++)
 {
  if (i<4)
  {
   for (int j=0;j<x;j++)
    cout<<" ";
   x--;
   if (i==0)
    cout<<"*";
   else
   { 
    cout<<"*";
    for(int j=0;j<y;j++)
     cout<<" ";
    cout<<"*";
    y+=2;
   }
   cout<<endl;
  }
  else
  {
   if (i==4)
    x=1,y=3;
   for (int j=0;j<x;j++)
    cout<<" ";
   x++;
   if (i==6)
    cout<<"*";
   else
   {  
    cout<<"*";
    for(int j=0;j<y;j++)
     cout<<" ";
    cout<<"*";
    y-=2;
   }
   cout<<endl;
  }
 }
}

----------


## farid_mov2006

سلام دوست عزیز
من اولین بارمه دارم یه جا سوال میدم نمیدونم چرا دارم اینقدر گاف میدم{بزرگ میشم یاد میگیرم :کف کرده!: }
تو کتاب گفته افقی نه عمودی 
راستی شما #include"stdafx.h"را یادت رفته
ولی خوب بود
امیدوارم هر چی زودتر این تاپیک پا بگیره تا ما هم راه بیفتیم

----------


## fshb_ 1370

> سلام دوست عزیز
> من اولین بارمه دارم یه جا سوال میدم نمیدونم چرا دارم اینقدر گاف میدم{بزرگ میشم یاد میگیرم}
> تو کتاب گفته افقی نه عمودی 
> راستی شما #include"stdafx.h"را یادت رفته
> ولی خوب بود
> امیدوارم هر چی زودتر این تاپیک پا بگیره تا ما هم راه بیفتیم


چرا باید اینو بنویسم، راستش من اصلا نمیدونم این چی هست؟ :متفکر:  :گیج: 
من بیضی رو نتونستم بنویسم، هر کی بلده بگه یا یه راهنمایی بکنه.

----------


## farid_mov2006

شما بگو تا روی یه چیز دیگه کار کنیم 
راستش من نتونستم اینو حلش کنم میخواستم یاد بگیرم
سوال بده تا حل کنیم/از مبتدی تا پیشرفته/

----------


## lvlina_r

به نظر من سوال های acm را حل کنیم، هم یه چیزی یاد می گیریم هم واسه آیندمونم هم خوبه، می تونیم از ساده شروع کنیم و با هم بریم جلو.....

----------


## farid_mov2006

اگه سوال دارین بدین تا حل کنیم
از ساده تا پیشرفته/acmهم میخواین بدین/

----------


## lvlina_r

اینم یه سوال فکر کنم آسون، هر کی زودتر حل کرد بذاره بقیه هم ببینند

----------


## farid_mov2006

من این فایل ضمیمه را گرفتم اما چیزی توش نیست /نمیشه سوال را خودتون مطرح کنید/3بار گرفتم اما.....

----------


## amin1softco

محتویات فایل و سوال:

   *Broken Necklace*  You have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, others blue, and others white, arranged at random. Here are two examples for n=29: 
                  1 2                               1 2
              r b b r                           b r r b
            r         b                       b         b
           r           r                     b           r
          r             r                   w             r
         b               r                 w               w
        b                 b               r                 r
        b                 b               b                 b
        b                 b               r                 b
         r               r                 b               r
          b             r                   r             r
           b           r                     r           r
             r       r                         r       b
               r b r                             r r w
              Figure A                         Figure B
                          r red bead
                          b blue bead
                          w white bead
  The beads considered first and second in the text that follows have been marked in the picture. 
  The configuration in Figure A may be represented as a string of b's and r's, where b represents a blue bead and r represents a red one, as follows: brbrrrbbbrrrrrbrrbbrbbbbrrrrb . 
  Suppose you are to break the necklace at some point, lay it out straight, and then collect beads of the same color from one end until you reach a bead of a different color, and do the same for the other end (which might not be of the same color as the beads collected before this). 
  Determine the point where the necklace should be broken so that the most number of beads can be collected. 
  *Example* 
  For example, for the necklace in Figure A, 8 beads can be collected, with the breaking point either between bead 9 and bead 10 or else between bead 24 and bead 25. 
  In some necklaces, white beads had been included as shown in Figure B above. When collecting beads, *a white bead that is encountered may be treated as either red or blue and then painted with the desired color*. The string that represents this configuration will include the three symbols r, b and w. 
  Write a program to determine the largest number of beads that can be collected from a supplied necklace. 
  *PROGRAM NAME: beads*
  *INPUT FORMAT*
          Line 1: 
         N, the number of beads
             Line 2: 
         a string of N characters, each of   which is r, b, or w
        *SAMPLE INPUT (file beads.in)* 
  29
  wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
  *OUTPUT FORMAT*
  A single line containing the maximum of number of beads that can be collected from the supplied necklace. 
  *SAMPLE OUTPUT (file beads.out)*
  11
  *OUTPUT EXPLANATION*
  Consider two copies of the beads (kind of like being able to runaround the ends). The string of 11 is marked. 
  wwwbbrwrbrbrrbrbrwrwwrbwrwrrb wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
                         ****** *****

----------


## lvlina_r

من خودم به جواب نرسيدم، ولي يکي تو تاپيک الگوريتم جوابشا گذاشت، اگه رو جوابشم يکم تحليل کنيم خوبه .....
/*
ID: amir.ju1
LANG: C++‎‎‎‎‎‎‎
TASK: beads
*/
//Author: Amir Joudaki

#include <iostream>
using namespace std;

int Break_R(char *beads, int k, int len) {
    char c = beads[k];
    int i = 0;
    while(beads[k]=='w' && i<len) {
        k = k < len-1 ? k+1 : 0;
        i++;
    }
    c = beads[k];
    while((beads[k]==c || beads[k]=='w') && i < len) {
        i++;
        k = k < len-1 ? k+1 : 0;
    }
    return i;
}
int Break_L(char *beads, int k, int len) {
    k = k > 0 ? k-1 : len-1;
    char c = beads[k];
    int i = 0;
    while(beads[k]=='w' && i<len) {    
        k = k > 0 ? k-1 : len-1;
        i++;
    }
    c = beads[k];
    while((beads[k]==c || beads[k]=='w') && i < len) {
        i++;
        k = k > 0 ? k-1 : len-1;
    }
    return i;
}
int Break(char* beads, int k, int len) {
    int r = Break_R(beads, k, len),
        l = Break_L(beads, k, len);

    if( r + l >= len )
        return len;
    else
        return r + l;
}
int main() {
    FILE *fin, *fout;
    fin = fopen("beads.in", "r");
    fout = fopen("beads.out", "w");

    int N, // number of beads
        collectedBeads,
        max = 0;

    fscanf(fin, "%d", &N);
    char* beads = new char[N+1]; // the beads
    fscanf(fin, "%s", beads);

    for(int i=0; i<N; i++) {
        collectedBeads = Break(beads, i, strlen(beads));
        max = max > collectedBeads ? max : collectedBeads;
    }
    fprintf(fout, "%d\n", max);
    return 0;
}

----------


## lvlina_r

> من این فایل ضمیمه را گرفتم اما چیزی توش نیست /نمیشه سوال را خودتون مطرح کنید/3بار گرفتم اما.....


با دانلود منيجر ها نبايد دانلود کني :چشمک:

----------


## alinaghiha

حس و وقت  ترجمه متن نيست
من تا الان 2 بار تو مسابقات acm سطح دانشگاهمون شركت كردم اما مشكل من ترجمه متن هستش فارسي بذاريد بنده هم هستم.

----------


## farid_mov2006

راست میگه منم انگلیسیم جالب نیست.لطفا یه نفر زحمت ترجمش را بکشه

----------


## lvlina_r

> راست میگه منم انگلیسیم جالب نیست.لطفا یه نفر زحمت ترجمش را بکشه


 منم انگلیسیم زیاد خوب نیست، ولی سعی می کنم بفهمم، شاید حتی یه روزم واسش وقت بزارم، ولی چشم،تا حدودی اون چیز هایی که فهمیدم را ، فارسیشا می گم
سوال این بود:
یه گردنبنده، که قرمز و آبیه،سفیدم می تونه باشه...، این گردنبند را به صورت رشته به ما می دهند، از اول و آخر گردنبند باید مهره های هم رنگ را جمع کنیم، و بیشترین تعدادی که جمع شده را به عنوان خروجی چاپ کنیم، ولی 2 تا نکته داره، 
1.سفید مهره ی خنثی است، یعنی هم میتونه نقش آبی را بازی کنه، هم قرمز
2.همنطوری که تو صورت سوال گفته برای این رشته
wwwbbrwrbrbrrbrbrwrwwrbwrwrrb wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
                       ****** *****

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

----------


## fshb_ 1370

> منم انگلیسیم زیاد خوب نیست، ولی سعی می کنم بفهمم، شاید حتی یه روزم واسش وقت بزارم، ولی چشم،تا حدودی اون چیز هایی که فهمیدم را ، فارسیشا می گم
> سوال این بود:
> یه گردنبنده، که قرمز و آبیه،سفیدم می تونه باشه...، این گردنبند را به صورت رشته به ما می دهند، از اول و آخر گردنبند باید مهره های هم رنگ را جمع کنیم، و بیشترین تعدادی که جمع شده را به عنوان خروجی چاپ کنیم، ولی 2 تا نکته داره، 
> 1.سفید مهره ی خنثی است، یعنی هم میتونه نقش آبی را بازی کنه، هم قرمز
> 2.همنطوری که تو صورت سوال گفته برای این رشته
> wwwbbrwrbrbrrbrbrwrwwrbwrwrrb wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
> ****** *****
> 
> آبی که آخر رشته است،با اول رشته حساب می شه....
> نمی دونم خوب گفتم یا نه، اگه خیلی مبهمه، بگید تا بیشتر توضیح بدم....


 این واسه شروع سخت نیست، من حتی نفهمیدم چه جوری باید شروع کنم. :ناراحت: 
اگه کدی گذاشتید، توضیح هم بدید

----------


## lvlina_r

> این واسه شروع سخت نیست، من حتی نفهمیدم چه جوری باید شروع کنم.
> اگه کدی گذاشتید، توضیح هم بدید


 فکر نکنم زیادم سخت باشه، به هر حال باید از یه جا شروع کرد، این مثلا جزء سوال های مبتدیش بود، البته منم خودم نتونستم کامل به جواب برسم، ولی می تونیم برنامه ی دوستمون را تحلیل کنیم....، ببینیم چی کار کرده و چرا :متفکر:  :متفکر:  :متفکر:

----------


## baghozi

سلام دوستان 

من هم تعدادی تمرین قرار میدم امیدوارم مفید باشه

1- تابعی به صورت *بازگشتی* بنویسید که دو عدد از ورودی دریافت کرده و *حاصل ضرب* آنها را به صورت *جمع متوالی* محاسبه نماید؟

2- تابعی به صورت *بازگشتی* بنویسید که عددی از ورودی گرفته و ارقام آنرا تفکیک و چاپ نماید؟

3- تابعی به صورت *بازگشتی* بنویسید که دو عدد گرفته و ب.م.م و ک.م.م انرا چاپ نماید؟

----------


## amin1softco

حاصلضرب بازگشتی با عملگر جمع :

#include <stdio.h>
int plural(int n,int m){
if(n==0) return 0; else
return plural(n-1,m)+m;
}
void main(){
    int m=6,n=9;
 printf("%d\n",plural(n,m));
}
تفکیک ارقام بازگشتی:

#include <stdio.h>
int crack(int n){
printf("%d\n",n%10);
    if ((n)>1) return crack(n/10);else
return 0;
}
void main(){
 
crack(43543);
}
اینم بازگشتی ب.م.م و ک.م.م

int bmm(int a,int b){
    if (b) return bmm(b,a%b);else
return a;
  }
void main(){
    int m=5,n=20;
 printf("bmm= %d\nkmm=%d\n",bmm(m,n),((m*n)/bmm(m,n)));
}

----------


## baghozi

برنامه ای بنویسید که عدد صحیح را گرفته ، اگر عدد مثبت بود مبنای 2 آنر و اگر منفی بود مکمل 2 آنرا نمایش دهد.

----------


## baghozi

برنامه ای بنویسید که مجموع عناصر دور یک ماتریس 5*5 را محاسبه نماید؟

برنامه ای بنویسید که یک ارایه 2 بعدی 5*5 را گرفته و مجموع سطرها و ستون های آنرا به صورت جداگانه در آرایه دیگری ذخیره و آرایه مورد نظر را چاپ نماید؟

----------


## amin1softco

سوال اول اگه مثبت باینری و اگه منفی مکمل 2 که خودش بشه:

#include <iostream.h>
#include <stdlib.h>
void main(){
int a;
char str[32];
cout<<"your number :\n";
cin>>a;
if(a>0){cout<<itoa(a, str, 2)<<endl;}else{cout<<itoa(((~a)+1), str, 2)<<endl;};
}


سوال دوم که مجموع عناصر دور یک ماترس رو بدست میاره :

#include <iostream>
#include <conio.h>
using namespace std;
void main(){
    int a[5][5];
    int sum=0;
for (int i=0;i<=4;i++){
for (int j=0;j<=4;j++){
a[i][j]=getch()-48;
cout<<" "<<a[i][j];
if(((i==0)||(i==4))&&((j!=0)&&(j!=4))) sum+=a[i][j];
    }cout<<endl;sum+=a[i][4]+a[i][0];}
    cout<<"\n sum of around digit equal to : "<<sum<<endl;
}


من منظور این سوال رو نفهمیدم:



> برنامه ای بنویسید که یک ارایه 2 بعدی 5*5 را گرفته و مجموع سطرها و ستون های آنرا به صورت جداگانه در آرایه دیگری ذخیره و آرایه مورد نظر را چاپ نماید؟

----------


## rak6993

سلام
از دوستان عذر می خوام که بعد از اولین پست نتونستم کار رو شروع کنم.یه مشکل برام پیش اومده بود، اما انشاا... از این به بعد کارمون ادامه پیدا کنه با کمک همه دوستان.
من یه برنامه پیشنهادی دارم ببینیم چطوره.
در ادامه کار سعی می کنم آموزش هم قرار بدم.
**برنامه ای بنویسید که یک عبارت میانوندی رو به پسوندی تبدیل کنه**
مثال: میانوندی a+b
پسوندی +ab
امیدوارم موفق باشید

----------


## amin1softco

اینم جوابش تبدیل میانوندی به پسوندی : اینو از یک سایتی گرفتم چون سوالت کلیشه ایی بود

#include<stdio.h>
#include<string.h>
#define size 10
char stack[size];
int tos=0,ele;
void push();
char pop();
void show();
int isempty();
int isfull();
char infix[30],output[30];
int prec(char);
//Functions for operations on stack
void push(int ele)
{
    stack[tos]=ele;
    tos++;
}
char pop()
{
    tos--;
    return(stack[tos]);
}
void show()
{
    int x=tos;    
    printf("--The Stack elements are.....");
    while(x!=0)
    printf("%c, ",stack[--x]);
}
//Function to get the precedence of an operator
int prec(char symbol)
{

if(symbol== '(')
return 0;
if(symbol== ')')
return 0;
if(symbol=='+' || symbol=='-')
return 1;
if(symbol=='*' || symbol=='/')
return 2;
if(symbol=='^')
return 3;
return 0;
}
int main()
{
        int i=0,j=0,k=0,length;
        char temp;
        printf("\nEnter an infix expression:");
        scanf("%s",infix);
        printf("\nThe infix expresson is %s",infix);
        length=strlen(infix);
        for(i=0;i<length;i++)
        {
            //Numbers are added to the out put QUE
            if(infix[i]!='+' && infix[i]!='-' && infix[i]!='*' && infix[i]!='/' && infix[i]!='^' && infix[i]!=')' && infix[i]!='(' )
            {
            output[j++]=infix[i];
            printf("\nThe element added to Q is:%c",infix[i]);
            }
            //If an operator or a bracket is encountered...
            else
            {
                if(tos==0) //If there are no elements in the stack, the operator is added to it
                {
                push(infix[i]);
                printf("\nThe pushed element is:%c",infix[i]);
                }
                else 
                {       //Operators or pushed or poped based on the order of precedence
                    if(infix[i]!=')' && infix[i]!='(')
                    {
                        if(    prec(infix[i]) <= prec(stack[tos-1])  )
                        {
                        temp=pop();
                        printf("\n the poped element is :%c",temp);
                        output[j++]=temp;
                        push(infix[i]);
                        printf("\n The pushed element is :%c",infix[i]);
                        show();
                        }
                        else
                        {
                        push(infix[i]);
                        printf("\nThe pushed element is:%c",infix[i]);
                        show();
                        }
                    }
                    else
                    {
                        if(infix[i]=='(')
                        {
                        push(infix[i]);
                        printf("\nThe pushed-- element is:%c",infix[i]);
                        }
                        if(infix[i]==')')
                        {
                        temp=pop();
                        while(temp!='(')
                        {output[j++]=temp;
                        printf("\nThe element added to Q is:%c",temp);
                        //temp=pop();
                        printf("\n the poped element is :%c",temp);
                        temp=pop();}
                        }
                    }

                }
                    
            }    
    
 printf("\nthe infix expression is: %s",output);

        }
        while(tos!=0)
        {
            output[j++]=pop();
        }
 printf("the infix expression is: %s\n",output);

}

----------


## Nima.M

سلام دوستان عزیز.

بنده تازه عضو شدم. و دانشجوی ترم دوم رشته کامپیوتر هستم. ما همین ترم سی ++ رو پاس میکنیم. و من خودم کتاب دیتل رو تا صفحه 450 خوندم تا حالا. در ضمن برنامه نویسی به زبان سی رو هم با بالاترین نمره (21!) پاس کردم. 
امیدورام بتونم کمکی بکنم.

----------


## Nima.M

سی ++ بیشتر به خاطر شی گرا بودنش معروفه. دوستان عزیز چرا روی این قسمت از این زبان کار نمیکنید و هرچی تمرین و مثال هست  مربوط به مسایل دیگه هست؟ 

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

----------


## amin1softco

دوست من شما یک کاری کن تمام این تابع هایی که از اول تا اینجا نوشتیم را در قالب یک کلاس پیاده سازی کن مفید میشه؟؟؟؟؟؟؟؟؟
و یک مبحثی هست به نام coalition detection در مورد تشخیص بر خورده این را با کلاس ها پیاده سازی کن :تشویق:  موفق باشی

----------


## lvlina_r

> سلام دوستان عزیز.
> 
> بنده تازه عضو شدم. و دانشجوی ترم دوم رشته کامپیوتر هستم. ما همین ترم سی ++ رو پاس میکنیم. و من خودم کتاب دیتل رو تا صفحه 450 خوندم تا حالا. در ضمن برنامه نویسی به زبان سی رو هم با بالاترین نمره (21!) پاس کردم. 
> امیدورام بتونم کمکی بکنم.


عجب موجود خارق العاده ای، واقعا سی را 21 شدن هنراست.... :چشمک:  :چشمک: 
موفق باشی، حالا کدوم دانشگاه؟؟

----------


## davood59

سلام دوستان،خسته نباشید؛
ضمن عذرخواهی من یک برگشت به عقب می کنم و *برنامه ضرب رو با استفاده از جمعهای متوالی و تابع بازگشتی* نوشتم. اگه احیاناً ایراد و نقصی داره لطفا اعلام کنید. 


#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int c;
int add(int a,int b)
{
  if(b==0)
   return c;
      else 
    c+=a;
     return add(a,b-1);
}
int main()
{
int a,b;
cin>>a;
cin>>b;
cout<<add(a,b)<<endl;
}

----------


## amin1softco

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


int m2=0;
int plural(int n,int m){
 m2+=m;
if ((n--)>1) return plural(n,m);else 
return m2;
  }
void main(){
    int m=100,n=5;
 printf("%d\n",plural(m,n));
}

----------


## rak6993

سلام
اولاً آقای amin1softco خوبه که شما به سایتهای برنامه نویسی زیادی مراجعه میکنید ولی خوب بهتر بود خودتون هم روش فکر میکردید و البته من هم میدونستم اون سوال زیاد طاقت فرسا نیست.
ثانیاً آقایNima.M ورود شما رو خوشامد میگم؛ وقتی من وارد این تاپیک شدم دوستان تقاضای آموزش++c رو از اول داشتن و من هم سعیم بر اینه.
اگه شما میتونید این کار رو بهتر ادامه بدید بسم ا...
و اما سوال 2:
برنامه بنویسید که شکلی رو که به ضمیمه فرستاده شده  چاپ کنه.

----------


## amin1softco

باشه چشم این تصویر که گذاشتی می خوای به صورت تصویر چاپ بشه یا کارکتر اسکی اگه تصویر دوست داری چاپ بشه با بورلند میشه اینجور چاپش کرد تو ویژالم که دیگه آب خوردن با api های ویندوز:

#include <iostream.h>
#include <graphics.h>
#include <fstream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
struct U{
unsigned char magic[2];
}mag;
struct master {
   // word bftype;
 unsigned long Size;
 unsigned short Reserved;
 unsigned short Reserved2;
 unsigned long BitsOffset;
} HEADER;
class info {public:
 unsigned long header_sz;
 unsigned long width;
 unsigned long height;
 unsigned short nplanes;
 unsigned short bitspp;
 unsigned long compress_type;
 unsigned long bmp_bytesz;
 unsigned long hres;
 unsigned long vres;
 unsigned long ncolors;
//  unsigned long nimpcolors;
} INFOHEADER;
huge DetectSvga()
{
   return 2;
}
void Show(char* filename,int xcor,int ycor)
{
   fstream File;
   File.open(filename,ios::in);
   char Ch;
   File.read((char*)&mag,2);// read te 2 frist byte for  know file
/*if (mag.magic!="BM"){
 printf("file not a bitmap");
 exit(0);
}*/
   File.read((char*)&HEADER,12); //read for get offst bye of bitmap data
   File.read((char*)&INFOHEADER,40); //read for width , heght and know 8 bit
   unsigned int i;
  File.seekg(HEADER.BitsOffset);
 for(i=0;i<INFOHEADER.height;i++)       //This for loop is used to display the bitmap.
   {
for(int j=0;j<INFOHEADER.width;j++)
{
    File.read(&Ch,1); // Here Ch reads the color of your bitmap.
    putpixel(xcor+j,ycor+INFOHEADER.height-i,Ch);//write pixel to screen 
}
   } 
   File.close();
}
void main()
{
clrscr();
   int gd = DETECT, md, a;
   initgraph(&gd,&md,"..\\bgi");
   installuserdriver("svga256",&DetectSvga);
   char msg[15];
 char* k;
 cout<<"plz write adress of 8-bit bitmap format file: (example: c:/test.bmp)"<<endl;
 cin>>k;
 Show(k,100,100);
 getch();
}
البته اینو من قدیما برای نوشتن فایل های بیتمپ 8 بیتی نوشته بودم
در ضمن میشه تبدیلشم کرد به کارکتر اسکی یک خطشو باید تغییر داد فقط فرمت jpg رو نمی دونم چطوری باید خوند که comppress شده ... میشه ها ولی یکم سخته خدا پدر مایکروسافت را بیامورزه با این api های خوب که سه سوته تصویرو نمایش میده

----------


## rak6993

برادر من شما با ++c با کارکتر ستاره اون رو چاپ کن
ضمنا شما استاد ما هستی این تمارین ابتدایی رو من برای شروع کار اونایی که از اول می خوان شروع کنن میزارم
التماس دعا
یا علی

----------


## amin1softco

در تابع بالا خط 

putpixel(xcor+j,ycor+INFOHEADER.height-i,Ch);//write pixel to screen 
 

با یک gotoxy و putch جایگزین کنی میشه اینکار رو انجام داد ولی عکست باید تقریبا برابر سایز کنسول باشه 80*20 یا کمتر چون در غیر اینصورت نمیشه کاریش کرد یعنی باید سایز عکست رو مناسب کنی و چاپش کنی
یک نکته دیگه من زیاد وارد نیستم فقط علاقمندم  :قلب:  شما خودت آقایی ببخشید اگه من سریع جواب میدم

----------


## davood59

سلام دوستان
در پستهای قبلی برنامه ای بود با این مضمون: دریافت یک عدد و نمایش ارقام آن بصورت تفکیک شده و با استفاده از توابع بازگشتی.
من یک برنامه نوشتم که رقم رو بصورت معکوس چاپ میکنه ولی در ادامه نیز ارقامهای دیگه رو هم چاپ میکنه!
دوستان میتونن بگن ایرادم از کجاست؟
با تشکر

#include <conio.h>
#include <iostream>

using namespace std;

void dav(int a)
    { 
       while(a)
       {
       cout<<(a%10)<<"\n";
       a/=10;  
       dav(a);          
       }
     } 
int main()
 {

     int m;
    m=95;
    dav(m);
     _getch();
 }

----------


## amin1softco

این تابع از ساختار بازگشتی تبعیت نمی کنه خط 
dav(a); 

را شما حذف کنی برنامه شما در ست عمل می کنه 

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

----------


## davood59

بخدا نه، نمیخوام سر خودم کلاه بذارم که! توی اداره یکم باهاش ور رفتم ولی هنوز به جواب نرسیدم. ضمنا از کجا میشه تقلب کرد؟
ثانیاً یه راهنمایی نمیشه بکنی؟ البته اگه زمان داشته باشم سعی می کنم همین امروز حلش کنم.
*در خصوص برنامه قبل میشه بگید چه جوری بصورت بازگشتی بنویسم؟*
ممنون

----------


## amin1softco

یک مروری صفحات قبلی رو بکن من خودم نوشتمش بدون متغیر سوم یعنی همونو عوضش کردم که این می شد:

 #include <stdio.h>
int plural(int n,int m){
if(n==0) return 0; else
return plural(n-1,m)+m;
}
void main(){
    int m=6,n=9;
 printf("%d\n",plural(n,m));
}


اصلاح این به صورت بازگشتی یه چیزی تو این مایه ها میشه :

#include <conio.h>
#include <iostream>

using namespace std;

void dav(int a)
    { 
    
       if (a) dav(a/10);
       cout<<(a%10)<<"\n";
           
}
void main()
 {

     int m;
    m=1234567890;
    dav(m);
     _getch();
 }

----------


## VESA_01

سه روش برای دسترسی به مقادیر یک آرایه دو بعدی

void ascendbsort(int column, int *list[][COL_SIZE])
{
    int i,j,k;
    for(i=0;i<(ROW_SIZE-1);i++)
    {
        for(j=0;j<(ROW_SIZE-(i+1));j++)
        {
            if(list[j][column] > list[j+1][column])
            {
                for(k=0; k < 4; k++)
                {
                    swap(&list[j][k], &list[j+1][k]);//switch the entire row, not just the element
                }
            }
        }
    }
}

printf ( "\n" ) ;
}
printf ("\n" ) ;
}
show ( int ( *q )[4], int row, int col )
{
int i, j ;
int *p ;
for ( i = 0 ; i < row ; i++ )
{
p = q + i ;
for ( j = 0 ; j < col ; j++ )
printf ( "%d ", * ( p + j ) ) ;
printf ( "\n" ) ;
}
printf ( "\n" ) ;
}
print ( int q[ ][4], int row, int col )
{
int i, j ;
for ( i = 0 ; i < row ; i++ )
{
for ( j = 0 ; j < col ; j++ )
printf ( "%d ", q[i][j] ) ;
printf ( "\n" ) ;
}
printf ( "\n" ) ;
}

----------


## VESA_01

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

main( )
{
char names[ ][10] = {
"akshay",
"parag",
"raman",
"srinivas",
"gopal",
"rajesh"
} ;
int i ;
char t ;
printf ( "\nOriginal: %s %s", &names[2][0], &names[3][0] ) ;
for ( i = 0 ; i <= 9 ; i++ )
{
t = names[2][i] ;
names[2][i] = names[3][i] ;
names[3][i] = t ;
}
printf ( "\nNew: %s %s", &names[2][0], &names[3][0] ) ;
}

----------


## VESA_01

کار با آدرس ها در ساختارها

struct book
{
char name[25] ;
char author[25] ;
int callno ;
} ;
main( )
{
struct book b1 = { "Let us C", "YPK", 101 } ;
display ( &b1 ) ;
}
display ( struct book *b )
{
printf ( "\n%s %s %d", b->name, b->author, b->callno ) ;
}

----------


## javadspy++

سلام;خسته نباشيد
من ميخوام كه در اين بخش فعاليت كنم

----------


## amin1softco

> سلام;خسته نباشيد
> من ميخوام كه در اين بخش فعاليت كنم


دوست من شما به تمرین های زیر جواب بده:
برنامه ایی که دو تا عدد رو از کاربر بگیره و با هم جمع کنه و در خروجی چاپ کنه؟
بدون استفاده از عملگر جمع جمع دوتا عدد را پیاده کن؟
برنامه ایی که مقدار لگاریتم (در هر مبنایی) یک عدد را بدون استفاده از سر فایل math بدست بیاره؟
برنامه ایی که رمز گذاری فایل های jpg یا gif را بتونه ترجمه کنه؟
برنامه ایی که نام پوشه را تغییر بده؟
برنامه ایی که ساعت سیستم را تغییر بده؟
برنامه یی که با پورت های کامپیوتر ارتباط برقرار کنه ؟
یک مفسر ساده بنویس؟

البته هر کدوم را که دوست داشتی بنویس؟ البته با توضیحات کامل و دقیق خط به خط تا به ین خصلت خوب عادت کنی :لبخند گشاده!:

----------


## Abdoullah

سلام دوستان عزیز امیدوارم که حال همگی خوب باشه من د ر حال حاضر چند وقتیه که دارم C++‎‎ کار می کنم و حال با مشکلی برخوردم که امیدوارم راهنماییم کنین:
می خواستم درباره دستور end1 در فایل های متنی اگه می شه با مثال یه توضیحی بدین ممنون می شم .
اگه می شه به ادرس میلم Send کنین ممنون:
dost.com0101@gmail.com

----------


## Arcsinos

سلام
چیزه سختی نیست که . این دستور مکان نما رو به خط بعدی منتقل میکنه و endl="\n" .
cout<<"mahdi\n"<<"mahdi";
خروجی :
mahdi
mahdi
cout<<"mahdi"<<endl<<"mahdi"<<"mahdi";
خروجی :
mahdi
mahdimahdi

----------


## #Elahe#

> سلام دوستان
> با اجازتون من یک سوال میگم تا حلش کنیم
> سوال:
> برنامه ای بنویسید تا یک مستطیل/بیضی/پیکان{علامت فلش}/لوزی را در کنار هم با کمی فاصله رسم کند؟{این مثال گرفته شده از کتاب دیتل است/راستش خودم نتونستم حلش کنم}


درسته كه اين پست بيات شده ، ولي واسه من كه هنوز تازگي داره  :چشمک: 
اين هم كد من :

#include<iostream.h>
#include<conio.h>
main()
{
   cout<<"               ****        *\n";
   cout<<"**********    *    *       **      *\n";
    cout<<"*        *   *      *   **** *    * *\n";
    cout<<"*        *   *      *   *     *  *   *\n";
    cout<<"**********    *    *    **** *    * *\n";
    cout<<"               ****        **      *\n";
   cout<<"                           *\n";
    getch();
}

----------


## sherlukholmz

خوب، کدوم سوالا جواب داده نشده؟؟؟

----------


## tactical

یکی بیاد اینو حل کنه

n نفر در یک حلقه دور هم ایستاده اند به نفر اول حلقه یک اسلحه  می دهیم تا نفر بغل دستی رو بکشد و بعد اسلحه را به نفر بعدی میدهد (یعنی نفر سوم ) تا اون نیز نفر بغل دستی خود را بکشد این روند تا زمانی ادامه میابد که فقط یک نفر زدنه بماند حالا برنامه ای می خوام که شماره نفر زنده رو بگه 

مثلا

1 2 3 4 5 6 7 

اگه 7 نفر باشه این حلقه نفر هفتم زنده می مونه اگه 8 نفر باشه نفر اول زنده می مونه

ممون میش یکی اتون حل کنه  :قلب:

----------


## amin1softco

این سوال شما یک اشکال داره  اون اینه که باید همیشه در یک جهت اسلحه جابه جا بشه و راه حلشم این که یک لیست پیوندی حلقوی می خواد که باید گره هاش رو یکی در میان حذف کنیم گرهی که در آخر کار باقی می مونه جواب سواله

----------


## tactical

چون من تازه من با ++c کار می کنم جوابتون زیاد باسم روشن نبود اگه یه راه حل ساده دارید ارائه بدید ممنونتون میشم یا به همین روش یا روشی دیگه حل کنید اینجا قرار بدید  :قلب:

----------


## amin1softco

خوب چه بهتر شما بهتره خودت اول یک کدی بنویسی بزاری اینجا تا با هم دیگه اصلاحش کنیم که خلاف قوانین سایت هم نباشه :تشویق:

----------


## #Elahe#

> یکی بیاد اینو حل کنه
> 
> n نفر در یک حلقه دور هم ایستاده اند به نفر اول حلقه یک اسلحه  می دهیم تا  نفر بغل دستی رو بکشد و بعد اسلحه را به نفر بعدی میدهد (یعنی نفر سوم )  تا اون نیز نفر بغل دستی خود را بکشد این روند تا زمانی ادامه میابد که فقط  یک نفر زدنه بماند حالا برنامه ای می خوام که شماره نفر زنده رو بگه 
> 
> مثلا
> 
> 1 2 3 4 5 6 7 
> 
> اگه 7 نفر باشه این حلقه نفر هفتم زنده می مونه اگه 8 نفر باشه نفر اول  زنده می مونه
> ...


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

----------


## amin1softco

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

char comp(string s){
    int i=0,j=0,st=0;
    bool flag=false,f2=false;
int sl=s.length();
   while(true){
       cout<<s[i]<<"-"<<i<<" ";
       if(flag){
           s[i]='~';flag=false;if(i==st) f2=true;
       }else flag=true;
       while(s[++i]=='~');
       if(f2) {st=i;f2=false;}
       if(!s[i]){ i=st;cout<<endl;
        }                
j++;      
if(j>((s.length()-1)*2)) {return s[i];break;}
     
   }
}
void main(){
cout<<"\n this man live : "<<comp("e12345678")<<endl;
}

----------


## davood59

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

----------


## amin1softco

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

1- برنامه ایی بنویسید که یک عدد را به صورت جمعی از توان های 10 بنویسید. مثلا 123 = 1*10^2+2*10+3   یا 123=100+20+3
2- برنامه ایی بنویسید که یک عدد را به صورت حروف بنویسد. مثال 21 = bist o yek
3- برنامه ایی بنویسید که مقلوب یک عدد را بنویسد. 
4- برنامه ایی بنویسید که ریشه های معادله درجه دو را بدست بیاورد.
5- برنامه ایی بنویسید که تعیین کند یک عدد زوج است یا فرد.
6- برنامه ایی بنویسید که یک عدد دریافت کند و بررسی کند که اول است یا نه
7- برنامه ایی بنویسید که به صورت مار پیچ دور تا دور صفحه نمایش را با ستاره * پر کند به صورت انیمیشن .

----------


## Salar Ashgi

> چون من تازه من با ++c کار می کنم جوابتون زیاد باسم روشن نبود اگه یه راه حل ساده دارید ارائه بدید ممنونتون میشم یا به همین روش یا روشی دیگه حل کنید اینجا قرار بدید


این مساله در بحث ریاضیات و الگوریتم ، به مساله ژوزفوس معروف است ، که به دلایلی ، یکسری

آدم دور یک دایره ایستاده اند و به ترتیب هر نفر ، نفر بعدی خود را میکشد ؛ یک الگوریتم خیلی

ساده برای حل مساله استفاده از یک تابع بازگشتی است :


#include <iostream>
#include <conio>
int Josephios(int n){
 if(n==1)
  return 1;
  else{
   if(n%2==1)
    return 2*Josephios((n-1)/2)+1;
    if(n%2==0)
     return 2*Josephios(n/2)-1;
     }
}
//==================================
int main(){
int n;
while(true){
cout<<"Enter number of people : \n";
cin>>n;
cout<<"Alive : "<<Josephios(n)<<endl;}
getch();
}
روش دیگر استفاده از مبناست !

*** تذکر : البته دوست عزیز ، شما چون یک کاربر تازه وارد بودید ،
 خواستم راهنمایی بیشتری کرده باشم و مثالم را همراه
با کد نشان دهم ، ولی لازم است بدانید که
 درخواست برنامه و انجام تمرینات دانشجویی مخالف قوانین سایت میباشد و
فقط درخواست راهنمایی معقولانه مجاز است !

حالا این یکسری رو چشم پوشی می کنیم ولی انتظار میرود از دفعات بعد به شدت روی این مساله دقت کنید .

موفق باشید .

----------


## amin1softco

حالا یعنی خودم جواب بدم به سوال ها خوب یکی یک حرکتی بکنه....؟ بابا 4 خط فکر کنید انشا می خواهید بنویسید.........

----------


## davood59

سلام امین آقا، من تازه تمرینات رو دیدم و چندتاییش رو سریع نوشتم، بقیه رو هم تو اولین فرصت می نویسم.
کد 3- مغلوب یک عدد:

#include <conio.h>
#include <iostream>
using namespace std;
  int main()
  {
    int a,b;
    cin>>a;
        while(a)
           {
         b=a%10;
         cout<<b;
         a/=10;
          }
    _getch();
  }

کد 5: تعیین زوج بودن یک عدد:

#include <conio.h>
#include <iostream>
using namespace std;
  int main()
  {
    int a,b;
    cin>>a;
        while(a)
           {
         b=a%10;
         cout<<b;
         a/=10;
          }
    _getch();
  }

کد 6: تعیین اول بودن یا نبودن یک عدد


#include <conio.h>
#include <iostream>
using namespace std;
int main()
  {
    int a;
    bool ret=false;
    cin>>a;
    //if(a==1 || a==2)
    //    cout<<"your number is prime";
    for(int i=(a/2);i>=2;i--)
    {
        if (a%i==0)
          {
             ret=true;
             break;
          }
    } 
    if(ret==false)
        cout<<"your number is prime";
        else cout<<"your number is'nt prime";
         _getch();
  }

----------


## davood59

امین جان سوال 2 خیلی جالب و قشنگه ولی هنوز حل نشده.
کد 4 : تعیین ریشه های معادله درجه دوم:

#include <conio.h>
#include<math.h>
#include <iostream>
using namespace std;
int main()
{
    float a,b,c;
    float delta,root1,root2;
//get numbers
    cout<<"please Enter 3 number:"<<'\n';
    cout<<"enter a: ";
    cin>>a;
    cout<<"enter b: ";
    cin>>b;
    cout<<"enter c: ";
    cin>>c;
//calculate Delta    
    delta= (b*b-(4*(a*c)));
//check condition
    if (delta>0) //2 roots
        {
          root1=(-b-sqrt(delta))/2*a;
          root2=(-b+sqrt(delta))/2*a;
          cout<<"root1 is:"<<root1<<'\n';
          cout<<"root2 is "<<root2;
        }

    if (delta==0) //1 root
    {
        cout<<"quadratic equation has one root:"<<(-b/(2*a));
    }    
    if (delta<0)  //without root
    {
        cout<<"quadratic equation does'nt have any root";
    }
    _getch();
}

----------


## amin1softco

شاید مسئله 2 به مسئله 1 مربوط باشه .....

----------


## amin1softco

ببین سوال یک رو می شه اینجوری جواب داد

#include <iostream>
using namespace std;
void main(){
int i=1,n=5423;
while(true){
    cout<<n%10<<"*"<<i<<"+";
    i*=10;
n/=10;
if(n<=0) break;
}   
}

شما با کیس ها (case) از 1 تا 20 را خودت بنویس hezar و sad و اینها رو با کیس پیاده سازی کن و بعضی استثناء ها رو در نظر بگیر مثلا دویست رو نمی شه نوشت دو و صد باید اینها رو هم با کیس پیاده کنی تا نهصد بعد میشه یک هزار دو هزار فقط یک هزار باید اضافه کنی به عدد اصلی فقط باید کیس بنوسی
موفق باشی

----------


## aminghaderi

یه سوال دوستان؟
 این C++‎ و حتی c به چه دردی می خوره؟؟
 منظورم اینکه موارد استفادش جز برنامه نویسی برای رباتیک و این صفحات تبلیغاتی که مملو از LED هست (اسمش رو فراموش کردم)، دیگه چه کاربردی داره؟؟؟
 من یه چندتا تمرین کوچیک دانشگاهی داشتم ، اگه پیدا کردم براتون اینجا آپ می کنم .
 البته تمرین های *من C/C++‎ تحت داس هست*؟! البته فکر می کنم شما هم با همون کار می کنید؟!

----------


## amin1softco

والا تو دانشگاه می گفتن سیستم عامل رو با سی نوشتن بیشتر بازی ها رو با این زبان می نویسند و کلاً دامنه سی وسیعه و زبان سی بنیاد خیلی از چیز هایی هست که ما الان داریم مشاهده می کنیم. در کل بچه خوبی نیست و زیاد گیر الکی میده سی شارپ راحت تره بچه خوبیه  :چشمک:

----------


## davood59

آره امین جان،
من هم پیش از راهنمایی شما به همین روش پی برده بودم. 
هرچی فکر می کنم می بینم که باید با case پیاده سازی بشه و راه دیگه ای به ذهنم نمیرسه.
بازهم از راهنماییت ممنونم.

----------


## sadegh-hut

يكي نمي تونه سوال 2  كه amin1softco گفته حل كنه :متعجب:  :متعجب:  
آخه سوالش يجوريه يعني بايد يكي يكي براي هركودوم آرايه اي خاص تعريف كنيم ؟؟؟؟؟؟ :متفکر:  :متفکر:  :متفکر:  اين جوري كه نميشه خوب  :خیلی عصبانی:  :خیلی عصبانی:

----------


## amin1softco

معلومه یکمی سخته اما اگه بتونی بنویسیش در آینده می تونی یک تلفن گویا طراحی کنی  :چشمک:

----------


## sorroshsaket

سلام دوستان 
من یه سوال تو یه کتا ب  انگلیسی برای C++‎ خوندم توش نوشته بود برنامه دو گزاره مثل این دو تا بگیره و با هم مقایسه کنه و بگه یکی ان یا نه  من یه چیزایی نوشتم ولی چون تا به حال از bool استفاده نکردم نمی دونم چی کار باید بکنم یه کمک مختصری می خواستم ممنون می شم
(a^b)         `(aub)
به زبان C++‎

----------


## amin1softco

شما اشتراک و اجتماع و اینها رو با چی می خواهید پیاده سازی کنید در سی پلاس پلاس میشه از سر فایل های وکتور و الگوریتم استفاده کرد. مثالی از اشتراک دو مجموعه در vc6

// set_intersection example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main () {
  int first[] = {5,10,15,20,25};
  int second[] = {50,40,30,20,10};
  vector<int> v(10);                           // 0  0  0  0  0  0  0  0  0  0
  vector<int>::iterator it;

  sort (first,first+5);     //  5 10 15 20 25
  sort (second,second+5);   // 10 20 30 40 50

  it=set_intersection (first, first+5, second, second+5, v.begin());
                                               // 10 20 0  0  0  0  0  0  0  0

  cout << "intersection has " << int(it - v.begin()) << " elements.\n";

  return 0;
}

----------


## sorroshsaket

bebin man mikham aval az hame masalan 2 ta majmoaro vared konam bad benvisam
a ejtemae b eshterakesh ba c ejtemash ba b
 va 
b ejtemash ba c eshterakesh ba naghize a
mikham behem bege yekian ya na :متفکر:

----------


## davood59

امین آقا من سوال یک رو بدون استفاده و نگاه کردن به الگوریتم شما نوشتم.
لطفا اگه نظری دارید اعلام کنید.
ضمناً یک مشکل کوچیک هم هست! نمیشه علامت + رو که در انتهای عبارت درج میشه حذفش کرد؟

#include <conio.h>
#include <iostream>
using namespace std;
int main()
  {
    int a,d=142324,i;
    int b=1;
    while(d)
    {
        int r=d%10;
        cout<<r<<'*'<<b<<'+';
        b*=10;
        d/=10;
    }
    _getch();
  }


همچنین پاسخ سوال 2 رو فعلا نذارید تا یه کم کلنجار بریم.
همچنین در خصوص case یک مثال ساده میشه بذارید؟

----------


## amin1softco

> همچنین در خصوص case یک مثال ساده میشه بذارید؟


یک نگاه به این لینک بنداز
http://www.intap.net/~drw/cpp/cpp04_02.htm
موفق باشی :تشویق:

----------


## amin1softco

> bebin man mikham aval az hame masalan 2 ta majmoaro vared konam bad benvisam
> a ejtemae b eshterakesh ba c ejtemash ba b
>  va 
> b ejtemash ba c eshterakesh ba naghize a
> mikham behem bege yekian ya na


دوست من مجموعه رو باید با آرایه تعریف کنی و اشتراکش رو من گفتم ولی اجتماع هم در این سر فایل ها موجوده پس این کار امکان پذیره ولی در صورتی که نخواهید از این سر فایل ها استفاده کنید قضیه یکم فرق می کنه در ضمن قوانین سایت رو رعایت کنید و *فارسی* بنویسید.

----------


## sorroshsaket

مشکل من اینه که من نمی دونم این گزاره ها رو چه نوعی تعریف کنم
ضمنا  من تازه کارم
وقتی مثلا
aاجتماعb رووارد می کنم خوب باید تو یه نوع متغییر ذخیره شه؟

----------


## Nima_NF

> مشکل من اینه که من نمی دونم این گزاره ها رو چه نوعی تعریف کنم
> ضمنا  من تازه کارم
> وقتی مثلا
> aاجتماعb رووارد می کنم خوب باید تو یه نوع متغییر ذخیره شه؟


گفتید a یک مجموعه هست، یعنی در C/C++‎ یک آرایه هست.
محتویان آن ها چه هست؟ عدد صحیح، اعشاری، رشته ، ؟؟

متناسب با آن نوع متغیر را تعریف کنید، یعنی آرایه ای از همان نوع متغیر.

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

لیست پیوندی را یا باید بسازید یا از vector / list در C++‎ استفاده کنید که دوستان برایتان مثال زدند.


اگر هم می خواهید به شکل حرفه ای تر برنامه بنویسید، در C++‎ از کلاس Set استفاده کنید که در آن، مجموعه تعریف می کنید و می توانید مقایسه انجام دهید و تغییرات لازم را بدون لیست پیوندی یا آرایه انجام دهید.
برای مثال این لینک

----------


## sorroshsaket

برای مثال عبارت زیر باید در چه نوع متغیری ذخیره شه
مقادیر مجموعه ها عدد صحیح است

----------


## amin1softco

> برای مثال عبارت زیر باید در چه نوع متغیری ذخیره شه
> مقادیر مجموعه ها عدد صحیح است


ببین شما وقتی که اجتماع و اشتراک رو داشته باشین هر طرف تساوی رو می تونید در یک آرایه نگه داری کنید و سپس با یک مقایسه از نوع Bool تعیین کنید که تساوی دو مجموعه برابر است یا نه.
اینم برای اجتماع دو مجموعه با استفاده از سر فایل الگوریتم

// set_union example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main () {
  int first[] = {5,10,15,20,25};
  int second[] = {50,40,30,20,10};
  vector<int> v(10);                           // 0  0  0  0  0  0  0  0  0  0
  vector<int>::iterator it;

  sort (first,first+5);     //  5 10 15 20 25
  sort (second,second+5);   // 10 20 30 40 50

  it=set_union (first, first+5, second, second+5, v.begin());
                                               // 5 10 15 20 25 30 40 50  0  0

  cout << "union has " << int(it - v.begin()) << " elements.\n";

  return 0;
}
شما بهتر سر فایل الگوریتم را مرور کنید ولی اگه دوست دارید بدون استفاده از این سر فایل برنامتون رو بنویسید راه نیما جون بهتره..... :تشویق:

----------


## davood59

سلام امین جان،
بابت لینک ارسالی فوق العاده مفیدت ممنونم.
ببین من برنامه 2 رو با این روش نوشتم؛ البته فعلا تا 4 رقم جواب میده که خب افزایش به ارقام بعدی با توجه به الگوریتمی که نوشتم کاری نداره (فقط به ازای هر رقم چند خطی به کد اضافه میشه) ولی میخواستم ببینم آیا این روش خوبه؟ منظور شما استفاده از همین روش بوده یا روش بهتری هم داریم؟ اگه داریم روشی که من نوشتم چه جوریه؟
*توجه:*  با توجه به اینکه برنامه هنوز کامل نیست و من حروف رو از اعداد جدا نکردم و داخل خود عبارت هستند ، لطفا عبارت حروفی رو از راست به چپ بخونید تا در صورت درست بودن الگوریتم اون رو هم اصلاح کنم. 
_با تشکر

_ 
#include <conio.h>
#include <iostream>
using namespace std;
int main()
  {
    int a,d=8547;
    int b=1;
    while(d)
    {
        int r=d%10;
        cout<<r<<'*'<<b<<'+';
//---------------- for first number(baraye raghame aval)
        switch(r*b)
                   {
                case 1:
                cout<<"yek";
                break;
                case 2:
                cout<<"do";
                break;
                case 3:
                cout<<"se";
                break;
                case 4:
                cout<<"chahar";
                break;
                case 5:
                cout<<"panj";
                break;
                case 6:
                cout<<"shesh";
                break;
                case 7:
                cout<<"haft";
                break;
                case 8:
                cout<<"hasht";
                break;
                case 9:
                cout<<"noh";
                break;
             }
//--------------------for second number(baraye raghame dovom)-----------------------
              switch(r*b)
                   {
                case 10:
                cout<<"dah";
                break;
                case 11:
                cout<<"yazdah";
                break;
                case 12:
                cout<<"davazdah";
                break;
                case 13:
                cout<<"sizdah";
                break;
                case 14:
                cout<<"chahardah";
                break;
                case 15:
                cout<<"panzdah";
                break;
                case 16:
                cout<<"shanzdah";
                break;
                case 17:
                cout<<"hefdah";
                break;
                case 18:
                cout<<"hejdah";
                break;
                case 19:
                cout<<"nozdah";
                break;
                case 20:
                cout<<"bisto";
                break;
                case 30:
                cout<<"sio";
                break;
                case 40:
                cout<<"chehelo";
                break;
                case 50:
                cout<<"panjaho";
                break;
                case 60:
                cout<<"shasto";
                break;
                case 70:
                cout<<"haftado";
                break;
                case 80:
                cout<<"hashtado";
                break;
                case 90:
                cout<<"navado";
                break;

             }
//--------------------for 3nd number(baraye raghame 3)-----------------------
             switch(r*b)
                   {
                case 100:
                cout<<"sado";
                break;
                case 200:
                cout<<"devisto";
                break;
                case 300:
                cout<<"sisado";
                break;
                case 400:
                cout<<"chaharsado";
                break;
                case 500:
                cout<<"pansado";
                break;
                case 600:
                cout<<"sheshsado";
                break;
                case 700:
                cout<<"haftsado";
                break;
                case 800:
                cout<<"hashtsado";
                break;
                case 900:
                cout<<"nohsado";
                break;
             }
//-------------------for number forth 4nd(baraye raghame chaharom)-----------------------
             switch(r*b)
                   {
                case 1000:
                cout<<"hezaro";
                break;
                case 2000:
                cout<<"dohezaro";
                break;
                case 3000:
                cout<<"sehezaro";
                break;
                case 4000:
                cout<<"chaharhezaro";
                break;
                case 5000:
                cout<<"panjhezaro";
                break;
                case 6000:
                cout<<"sheshhezaro";
                break;
                case 7000:
                cout<<"hafthezaro";
                break;
                case 8000:
                cout<<"hashhezaro";
                break;
                case 9000:
                cout<<"nohhezaro";
                break;
             }
        b*=10;
        d/=10;
}
    _getch();
  }

----------


## amin1softco

درسته همینه راهش فقط ببین دو رقم آخر رو درست بر نمی گردونه مثلا این عدد رو باید بنویسه 1111
hezar o sado o yazdah
ولی برنامه می نویسه 
hezar o sado o dah o yek
ولی خیلی خوبه :تشویق:

----------


## Arcsinos

سلام زحمت نکشید اینم برنامه :
#include<iostream.h>
#include<conio.h>
void write(int y)
{
int a,b;
a=y/100;
switch (a)
{
case 1:cout<<"sad";break;
case 2:cout<<"divist";break;
case 3:cout<<"sisad";break;
case 4:cout<<"chaharsad";break;
case 5:cout<<"ponsad";break;
case 6:cout<<"sheshsad";break;
case 7:cout<<"haftsad";break;
case 8:cout<<"hashtsad";break;
case 9:cout<<"nohsad";break;
default:;
}
y=y%100;
if((y>=10)&&(a>0))
cout<<" o ";
b=y/10;
if ((b>=2)||(b==0))
{
switch (b)
{
case 2:cout<<"bist ";break;
case 3:cout<<"si ";break;
case 4:cout<<"chehel ";break;
case 5:cout<<"panjah ";break;
case 6:cout<<"shast ";break;
case 7:cout<<"haftad ";break;
case 8:cout<<"hashtad ";break;
case 9:cout<<"navad ";break;
default:;
}
y=y%10;
if (y>0)
cout<<" o ";
switch (y)
{
case 1:cout<<"yek ";break;
case 2:cout<<"do ";break;
case 3:cout<<"se ";break;
case 4:cout<<"chahar ";break;
case 5:cout<<"panj ";break;
case 6:cout<<"shesh ";break;
case 7:cout<<"haft ";break;
case 8:cout<<"hasht ";break;
case 9:cout<<"noh ";break;
default:;
}
}
else if((y<20)&&(y>=10))
switch (y)
{
case 10:cout<<"dah";break;
case 11:cout<<"yazdah";break;
case 12:cout<<"davazdah";break;
case 13:cout<<"sinzdah";break;
case 14:cout<<"chahardah";break;
case 15:cout<<"poonzdah";break;
case 16:cout<<"shonzdah";break;
case 17:cout<<"hivdah";break;
case 18:cout<<"hijdah";break;
case 19:cout<<"noozdah";break;
default:;
}
}
int main()
{
unsigned long m1=1000,m2=1000000,m3=1000000000,M1=999999,M2=9999  99999,M3=4000000000,x;
int y;
clrscr();
cout << "pleas enter a number : ";
cin>>x;
if(x==0)
cout<<"sefr";
if ((x>=m3)&&(x<M3))
{
y=x/m3;
write(y);
x=x%m3;
if (x>0)
cout<<"milyard o ";
else
cout<<"milyard";
}
if ((x>=m2)&&(x<M2))
{
y=x/m2;
write(y);
x=x%m2;
if (x>0)
cout<<"melyon o ";
else
cout<<"melyon";
}
if ((x>=m1)&&(x<M1))
{
y=x/m1;
write(y);
x=x%m1;
if (x>0)
cout<<"hezar o ";
else
cout<<"hezar";
}
if ((x>=1)&&(x<1000))
write(x);
getch();
return 0;
}
این برنامه تا میلیارد هم جواب میده .
البته چون متغیر ها رو unsigned long تعریف کردم . شما میتون یه متغیر بهم معرفی کنید که بتونه اعااد خسلس بزرگ مثلا 30 رقمی رو بگه یا اعداد خیلی . البته نمب خوام از متغیر های double,float استفاده کنم میخوام متغیرم از نوع صحیح باشه .
ممنون

----------


## amin1softco

درسته جواب.....

----------


## sadegh-hut

:کف کرده!:  :کف کرده!:  :کف کرده!: .........Aaaaaaaaaaaaa
Arcsinos خودت نوشتيييييي؟؟؟
هم سوالش جالب بود هم جوابش
بازم مرسي :کف کرده!:  :کف کرده!:

----------


## Arcsinos

آره
مثل اینکه شک داری ؟ :لبخند گشاده!: 
ببین من دنیال یه سوالم که تا به حال کسی حلش نکرده اگه دارید بذارید تا استفاده کنیم البته سوالی باشه که جواب داشته باشه . ممنون میشم .

----------


## amin1softco

> ببین من دنیال یه سوالم که تا به حال کسی حلش نکرده اگه دارید بذارید تا استفاده کنیم البته سوالی باشه که جواب داشته باشه . ممنون میشم .


برنامه ایی بنویسید که جذر یک اعداد بزرگ(10 رقمی و  یا بیشتر) را شبیه سازی کند؟

----------


## Arcsinos

> برنامه ایی بنویسید که جذر یک اعداد بزرگ(10 رقمی و یا بیشتر) را شبیه سازی کند؟


 منظورت رو درست متوجه نشدم . الان که جدر تمامی اعداد رو با sqrt میشه گرفت من با متغیر float تونستم جدر یه عدد 12 رقمی رو بدست بیارم . باز میگم فکر کنم منظورت رو درست متوجه نشدم اگه سوالتو بهتر بپرسی ممنون میشم .

----------


## amin1softco

وقتی حرف از شبیه سازی هست یعنی اینکه بدون سرفایل math باید اینکار انجام بشه

----------


## Arcsinos

خب اینو از اول میگفتی دیگه :
این برنامه جذر اعداد رو میگیره . من برای 12 رقمی هم امتحان کردم درست بود . البته اعدادی که مربع هستند رو دقیق محاسبه میکنه و لی از اونجایی که اعدادی مثل رادیکال 2 گنگ هستند هر چقدر تکرار حلقه بالاتر باشه عدد دقیق تری به ما میده . ولی باز با 100 تکرار هم خوب جواب میده .
#include<iostream.h>
#include<conio.h>
float sqrt(float y)
{
int i;
float a;
a=y;
for (i=1;i<=100;i++)
y=(y+(a/y))/2;
return y;
}
int main()
{
float x;
clrscr();
cout << "pleas enter a number : ";
cin>>x;
cout<<sqrt(x);
getch();
return 0;
}

----------


## amin1softco

درسته....
برنامه ایی بنویسید که یک جدول ضرب 10*10 را با خطوط حاشیه جدول رسم کند در مد تکست.
(از کارکتر های ویژه استفاده کنید)

یک برنامه ایی هم بود این دوستمون گفتند پاکش کردند من اینجا می گم شاید جالب باشه

برنامه ایی بنویسید که یک قرعه کشی جوایز را شبیه سازی کند که در آن از توپ هایی که  از 1 تا 10 شماره گذاری شده اند استفاده شود.فرض بر این است که سه توپ به صورت  تصادفی انتخاب می شود. از کاربر تعداد دفعاتی که باید قرعه کشی انجام شود را دریافت کنید. و جواب سوالات زیر را بدهید :
چه زمان هایی بر حسب درصد نتیجه شامل سه عدد زوج می  شود؟
چه زمان هایی بر حسب درصد عدد 7 در بین اعداد شبیه سازی شده موجود است؟
چه زمان هایی بر حسب درصد اعداد 1 و 2 و 3 در شبیه سازی ظاهر می شوند؟

راهنمایی:
از تابع  randint() استفاده کنید و یک برنامه نویسی پیمانه ایی (ساخت یافته) را در این مثال  نمایش دهید.

نکته:
شما نمی توانید دو قرعه شبیه به هم انتخاب کنید و همه  توپ ها برای شبیه سازی بعدی وجود دارند. شما باید فقط یک بار و در ابتدای برنامه از  seed (هسته تابع راندوم) استفاده کنید.

سوال اصلی اینه شاید خوب ترجمه نکرده باشم:

write a program to simulate a lottery drawing that uses balls numbered from 1 to 10.Assume that three balls are drawn at 

random.Allow the user to enter the number of lottery drawings to simulate.What percentage of the time does the result contain 

three even numbers in the simulation?what percentage of the time does the number 7 occur in the three numbers in the simulation?what percentage of the time do the numbers 1,2, and 3 occur in the simulation?

Hint:Use the function randint() and demonstrate good modular programming with this problem.Note:you can not draw the same ball twice and all balls are returned for the next simulation.you should set the random number generator seed at least once at the beginning of the program.

----------


## Arcsinos

جواب جدول ضرب : فکر کنم اشتباهه و لی من بهتر ازین نمی تونم .
#include<iostream.h>
#include<conio.h>
int main()
{
int i,j,k;
clrscr();
for (i=1;i<=10;i++)
{
for(k=1;k<=41;k++)
cout<<"-";
cout<<endl;
for(k=1;k<=41;k++)
if (((k-1)%4)==0)
cout<<"|";
else
cout<<" ";
cout<<endl;
for (j=1;j<=10;j++)
{
if((i*j)<10)
cout<<"|  ";
else if(((i*j)>=10)&&((i*j)<100))
cout<<"| ";
else
cout<<"|";
cout<<i*j;
}
cout<<"|"<<endl;
for(k=1;k<=41;k++)
if (((k-1)%4)==0)
cout<<"|";
else
cout<<" ";
cout<<endl;
}
for(k=1;k<=41;k++)
cout<<"-";
getch();
return 0;
}

----------


## Arcsinos

ما چند تا انتخاب داریم ؟ یکی یا سه تا ؟ منظورم اینکه کاربر فقط یه بار و یه ورودی وارد میکنه بعد برنامه سه تا گوی از اون 7 تا گوی باقی مانده انتخاب مبکنه و به کاربر نشون میده درسته یا من بد متوجه شدم .

----------


## amin1softco

> ما چند تا انتخاب داریم ؟ یکی یا سه تا ؟ منظورم اینکه کاربر فقط یه بار و یه ورودی وارد میکنه بعد برنامه سه تا گوی از اون 7 تا گوی باقی مانده انتخاب مبکنه و به کاربر نشون میده درسته یا من بد متوجه شدم .


من خودم هنوز متوجه سوال نشدم من فقط ترجمه کردم اما فکر کنم منظور سوال اینه که از بین 10 تا توپ 3 تا رو به صورت تصادفی انتخاب کنیم و seed یا هسته تابع راندوم را از کاربر دریافت کنیم و ببینیم با هر seed نتیجه ها چطوری میشه ؟ که سوال ها رو جواب بدیم پس باید کاربر یک دفعه عدد رو وارد کنه با این حساب...
اما اگه سه توپ را کامپیوتر باید انتخاب کنه و 7 توپ رو کاربر مسئله یک چیزه دیگه است ؟
خواهشا کسایی که انگلیسی خوبی دارند ما رو یاری کنند...

----------


## Arcsinos

ببینید اگه بر فرض جواب رو هم بتونیم بدست بیاریم برای یه حالته رندومه . یعنی اون کل اتفاقات رو بررسی نمیکنه . من یه چرت و پرتایی که البته خیلی خنده داره رو نوشتم برای سوال 2 جواب داد و برای بقیه ی حالتها هم باید همین رو تغییر بدیم سوال 1 هم تقریبا درست بود ولی باز مشکل داره . اگه این برنامه رو قبول نداشته باشیم باید از راه محاسبات ریاضی بریم که مربوط به درس جبر و احتماله ولی تا اونجا که من درس جبر رو مرور کردم نمیشه این معادله رو محاسبه کرد . شایدم بشه ولی خیلی سخته . ما که عقلمون بیشتر از این راه نداشت . البته چون من مبتدیم این برنامه رو نوشتم .
#include<iostream.h>
#include<conio.h>
int main()
{
int h[10]={1,2,3,4,5,6,7,8,9,10};
int b[9],c[8],d[7],e[6],f[5],a[3];
int i,j,k,l,m,n,i1,j1,k1,l1,m1,n1;
float count,seven,tow;
float darsad;
tow=seven=count=0;
clrscr();
for(i=1;i<=10;i++)
{
for(i1=1;i1<i;i1++)
b[i1]=h[i1];
for(i1=i;i1<=9;i1++)
b[i1]=h[i1+1];
   for(j=1;j<=9;j++)
   for(i1=1;i1<j;i1++)
   c[i1]=b[i1];
   for(i1=i;i1<=8;i1++)
   c[i1]=b[i1+1];
      for(k=1;k<=8;k++)
      for(i1=1;i1<k;i1++)
      d[i1]=c[i1];
      for(i1=i;i1<=7;i1++)
      d[i1]=c[i1+1];
  for(l=1;l<=7;l++)
  {
  a[1]=d[l];
  for(i1=1;i1<l;i1++)
  e[i1]=d[i1];
  for(i1=i;i1<=6;i1++)
  e[i1]=d[i1+1];
  }
     for(m=1;m<=6;m++)
     {
     a[2]=e[m];
     for(i1=1;i1<m;i1++)
     f[i1]=e[i1];
     for(i1=i;i1<=5;i1++)
     f[i1]=e[i1+1];
     }
        for(n=1;n<=5;n++)
        a[3]=f[n];
if (((a[1]%2)==0)&&((a[2]%2)==0)&&((a[3]%2)==0))
count=count+1;
if ((a[1]==7)||(a[2]==7)||(a[3]==7))
seven=seven+1;
if (((a[1]==1)||(a[2]==2)||(a[3]==3))&&((a[2]==1)||(a[2]==2)||(a[2]==3))&&((a[3]==1)||(a[3]==2)||(a[3]==3)))
tow=tow+1;
}
darsad=(count/151200)*100;
cout<<"1-darsade in ke har se zooj bashad : "<<darsad<<"%"<<endl;
darsad=(seven/151200)*100;
cout<<"2-darsade in ke 7 biayad : "<<darsad<<"%"<<endl;
darsad=(tow/151200)*100;
cout<<"3-darsade in ke se adade 1,2,3 biayad : "<<darsad<<"%";
getch();
return 0;
}
 :لبخند گشاده!:

----------


## amin1softco

خودمونیم ها چقدرم سوال ساده ایی بوده گفته ما می خواهیم سه توپ از بین 10 توپ که از 1 تا 10 شماره گزاری شده را به تعداد دفعاتی که کاربر تعیین می کنه انتخاب کنیم و ببینیم که بر حسب درصد چه زمانی عدد 7 رخ میده تو این قرعه های سه تایی کی سه عدد زوج و کی 1 و 2 و 3 در اعدا قرعه کشی هستند.... واقعا یک ترجمه بد چقدر آدم رو از سوال اصلی دور می کنه


/*  This program simulates a lottery drawing that uses balls        */
/*  numbered from 1 to 10.                                          */
   
 #include <stdlib.h>
#include <stdio.h>
   
  #define MIN 1
  #define MAX 10
  #define NUMBER 7
  #define NUM_BALLS 3
/*******************************************/
/* this function generates a random integer*/
/* between specified limits  a  and b (a<b)*/
int rand_int(int a,int b){
return rand()%(b-a+1)+a;
}
  int main(void)
  {
     /*  Define variables and function prototypes.  */
     unsigned int alleven = 0, num_in_sim = 0, onetwothree = 0, first, 
                  second, third;
     int lotteries = 0, required = 0;
     int rand_int(int a ,int b);
   
     /*  Prompt user for the number of lotteries.  */
     printf("\n\nEnter number of lotteries: ");
     scanf("%i",&required);
     while (required <= 0)
     {
        printf("The number of lotteries must be an integer number, "
               "greater than zero.\n\n");
        printf("Enter number of lotteries: ");
        scanf("%i",&required);
     }
   
     /*  Get three lottery balls, check for even or odd, and NUMBER.  */
     /*  Also check for the 1-2-3 sequence and its permutations.      */
     while (lotteries < required)
     {
        lotteries++;
   
         /*  Draw three unique balls.  */
        first = rand_int(MIN,MAX);
        do
           second = rand_int(MIN,MAX);
        while (second == first);
        do
           third = rand_int(MIN,MAX);
        while ((second==third) || (first==third));
   
        printf("Lottery number is: %u-%u-%u\n",first,second,third);
   
        /*  Are they all even?  */
        if ((first % 2 == 0) && (second % 2 == 0) && (third %2 == 0))
           alleven++;
   
        /*  Are any of them equal to NUMBER?  */
        if ((first == NUMBER) || (second==NUMBER) || (third == NUMBER))
           num_in_sim++;
   
        /*  Are they 1-2-3 in any order?  */
        if ((first <= 3) && (second <= 3) && (third <= 3))
           if ((first != second) && (first != third) && (second != third))
              onetwothree++;
     }
   
     /* Print results.  */
     printf("\nPercentage of time the result contains three even numbers:" 
            " %f\n",100.0*alleven/lotteries);
     printf("Percentage of time the number %u occurs in the three"
            " numbers:  %f\n",NUMBER,100.0*num_in_sim/lotteries);
     printf("Percentage of time the numbers 1,2,3 occur (not necessarily"
            " in order): %f\n",100.0*onetwothree/lotteries);
   
     /*  Exit program.  */
     return 0;
  }

ببین این جواب سواله می تونی تحلیلش کنی

----------


## amin1softco

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

        * *
     *      * 
  *             *
*                  * *********

البته باید این موج حرکت کند به سمت راست صفحه نمایش اگر امکان اضافه کردن قسمت طول موج و غیره وجود داشته باشد بهتر است

----------


## sorroshsaket

سوالات خوبی بودن سوال 3 رو نفهمیدم بقیه سوال ها رو حل کردم ولی چون بقیه نوشتن و دیر کردم نمی ذارم لطفا یه سری سوال دیگه مطرح کنید

----------


## amin1softco

هنوز سوال 7 رو کسی حل نکرده 



> 7- برنامه ایی بنویسید که به صورت مار پیچ دور تا دور صفحه نمایش را با ستاره * پر کند به صورت انیمیشن .


سوال 3 مقلوب یک عدد یعنی اینکه عدد رو به صورت برعکس بنویسیم 987 مقلوبش می شه 789

برنامه ایی بنویسید که کار یک دستگاه خود پرداز را شبیه سازی کند مثلا به برنامه عدد 100 هزار داده می شود و برنامه بایدبوسیله 1000 و 500 و 200 و 100 این عدد را خرد  کند

برنامه ایی بنویسید که محاسبه کند به چند طریق می توان سوال قبل را حل کرد

برنامه ایی بنویسید که لگاریتم یک عدد را شبیه سازی کند. (بدون سر فایل math)

اینم یک پازل به قبل و بعد قطعه کد زیر دستوراتی اضافه کنید تا بدون خطا کامپایل شود

// inja mitavan code ezafe kard
void ta(){
yek = 1;
}
// inja mitavan code ezafe kard

----------


## sadegh-hut

اینم یک پازل به قبل و بعد قطعه کد زیر دستوراتی اضافه کنید تا بدون خطا کامپایل شود

// inja mitavan code ezafe kard
void ta(){
yek = 1;
}
// inja mitavan code ezafe kard
[/quote]

خوب اولش  */    و آخرش  /*   اینو می زنیم ، به کل منتفی میشه  :لبخند گشاده!:  :لبخند گشاده!: 
خوب خیلی کارا میشه کرد !!!!   اصلا نوع yek  گفته نشده  :خیلی عصبانی:  :خیلی عصبانی: 
 :گیج:

----------


## amin1softco

نگفتم که کلا حذفش کن 
 باید بشه از تابع استفاده کرد :تشویق:

----------


## Negative_Se7en

سلام.
int yek;
void ta(){
yek = 1;
}
void main(){ta();}

----------


## aminghaderi

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

موفق باشید.

----------


## aminghaderi

توابع گرافیک c/C++‎ :
مد: گرافیک
نمونه: فایل زیپ بالا چند تا تابع رو استفاده کرده.

*امیدوارم مفید واقع بشه.*

رسم کمان : 

arc(x,y,s,e,r)


رسم خط:

line(x1,y1,x2,y2)


مربع یا مستطیل تو پر:

bar(x1,y1,x2,y2)


مکعب مربع :

bar3d(x1,y1,x2,y2,DEPTH,STATUS)

STATUS (وضعیت) شامل 2 مقدار 0 و 1
DEPTH (عمق)

بیضی یا دایره تو پر:

fillellipse(x,y,r1,r2)


دایره تو خالی:

circle(x,y,r)


رنگ امیزی اشکال تو پر:

setfillstyle(MOULD,COLOR)

MOULD تا جایی که یادم می یاد مقادیر بین 0 تا 12 می گیره و حالات مختلفی نظیر هاشور ، خط راست ، خط چپ و ... رنگ امیزی انجام می دهد.

تنظیم خصوصیات متن:

settextstyle(Font,SAKE,size)

SAKE (جهت)

رنگ امیزی نواحی بسته :

floodfill(x,y,color)


رنگ امیزی کادر ها:

setcolor(color)

لازم به ذکر هست که ما چیزی به نام ، نام رنگ نداریم!! و باید شماره ی رنگ داده شود که مجموع اعداد 1 تا 15 هست اگر اشتباه نکنم.
این موضوع در تمام ارگمان ها توابع باید رعایت شود .
ننویسید :
setfillstyle(5,red)

باید نوشته شود مثلا :
setfillstyle(7,4)


نوشتن متن در مکان نمای فعال:

outtex("Text")


نوشتن متن در یک مختصات مشخص :

outtextxy(x,y,"Text")


جابجا کردن محل مکان نما:

moveto(x,y)


رسم نقطه:

putpixel(x,y,color)


نقطه :

lineto(x,y)


گرفتن یک کلید برای اتمام کار:
این تابع رو ما داخل حلقه ، برای خاتمه حلقه استفاده می کردیم ، دقیق یادم نمی یاد ، ولی فکر کنم خروجی true یا false دارد که این خروجی با توجه به فشردن کلیدی از صفحه کلید ، رخ می دهد.

kbhit()

 تابع بالا ورودی نداره!!!


این هم در حلقه می یاد و مثل یه تایمر عمل می کنه :
مقداری که به این تابع فرستاده می شه ، فاصله زمان اجرای دستور بعد ( گردش بعدی حلقه) هست.

delaye(x)



موفق باشید.

----------


## amin1softco

> سلام.
> int yek;
> void ta(){
> yek = 1;
> }
> void main(){ta();}


درسته.... این یک راهشه در ضمن مد گرافیک داس که BGI باشه دورانش سر رسیده ولی برای استفاده از این ها در محیط ویژوال 2008 میشه از کتابخانه هایی که نوشتند و کامل نیست استفاده کرد یک نمونشو ضمیمه کردم باید محتویاتشو به پوشه include کامپایلر اضافه کنید و  graphic2.h را اول برنامه تون include کنید.

----------


## sorroshsaket

سلام دوستان
مي خوام يه راهنمايي بكنين مي خوام يه رشته به صورت زير بگيرم

بعد مي خوام با استفاده از درخت ها يا هر روش ديگه اي (البته به درخت ها علاقه مندم) اين گزاره رو جدا كنم و بعد اجتماع و اشتراك و .... رو حساب كنم 
راهي رو لطفا پيش پام بزارين كه راحت تره دفعه قبل يه سوال پرسيم بيشتر گيج شدم تا راهنمايي
خيلي ممنون

----------


## s.farahani

سلام دوستان.
برنامه ای بنویسید که با تابع بازگشتی  + *  )( را محاسبه کند؟

----------


## fakhradin

> سلام 
> با استفاده از چه چیزی اینو حل کنیم با استفاده از گرافیک؟ یا محیط متنی ؟


 سلام به دوسته عزیز راستش برای این که چنین برنامه ای را بنویسی بهتره ار گرافیک استفاده کنی

----------


## ebrahim1988

سلام
اكه ما هم بخوايم شركت كنيم بايد جكار كنيم؟
برنامه اي كه قراره بنويسيم جيه؟(البته من حرفه اي نيستما)ولي دوس دارم سعي خودمو كنم

----------


## baghozi

سلام

چندتا تمرین هم من میذارم

1- برنامه ای بنویسید که با استفاده ازتوابع آرایه ای به طول n را به صورت پویا ایجاد و سپس مقادیر آنرا بخواند و درنهایت انرا در خروجی چاپ نماید.

2- تابعی بنویسید که دو عدد صحیح گرفته ، عدد اول را به مبنای عدد دوم ببرد.(عدد دوم می تواند عددی در مبناهای 2 ، 8 ، 16 باشد)

3- تابعی بنویسید که رشته ای ه طول حداکثر 80 کاراکتر را گرفته ، تماممی کلمه های انرا معکوس نماید.
(مثال : s i h t  s i  a  k o o b <------------- This is a book)

----------


## baghozi

اینم یکی دیگه

این خیلی سخته خودم هنوز نتونستم بنویسمش :خیلی عصبانی: 

برنامه ای بنویسید که نام فایلی را گرفته و آنرا Zip کند؟

----------


## amin1softco

> اینم یکی دیگه
> 
> این خیلی سخته خودم هنوز نتونستم بنویسمش
> 
> برنامه ای بنویسید که نام فایلی را گرفته و آنرا Zip کند؟


بیا این برنامشه اولش توضیح دادiه که کی نوشتتش :چشمک:  اما این zip  نمی کنه unzip می کنه :چشمک: 



/*
 * Copyright 1987, 1989 Samuel H. Smith;  All rights reserved
 *
 * This is a component of the ProDoor System.
 * Do not distribute modified versions without my permission.
 * Do not remove or alter this notice or any other copyright notice.
 * If you use this in your own program you must distribute source code.
 * Do not use any of this in a commercial product.
 *
 */

/*
 * UnZip - A simple zipfile extract utility
 *
 */ 

#define version  "UnZip:  Zipfile Extract v1.0ل of 03-05-89;  (C) 1989 S.H.Smith"

typedef unsigned char byte;
typedef long longint;
typedef unsigned word;
typedef char boolean;
#define STRSIZ  256

#include <stdio.h>
#include <io.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>



/* ----------------------------------------------------------- */ 
/*
 * Zipfile layout declarations
 *
 */ 

   typedef longint       signature_type;


   #define local_file_header_signature  0x04034b50L


   typedef struct local_file_header { 
      word         version_needed_to_extract; 
      word         general_purpose_bit_flag; 
      word         compression_method; 
      word         last_mod_file_time; 
      word         last_mod_file_date; 
      longint      crc32; 
      longint      compressed_size; 
      longint      uncompressed_size; 
      word         filename_length; 
      word         extra_field_length; 
   } local_file_header; 


   #define central_file_header_signature  0x02014b50L


   typedef struct central_directory_file_header { 
      word         version_made_by; 
      word         version_needed_to_extract; 
      word         general_purpose_bit_flag; 
      word         compression_method; 
      word         last_mod_file_time; 
      word         last_mod_file_date; 
      longint      crc32; 
      longint      compressed_size; 
      longint      uncompressed_size; 
      word         filename_length; 
      word         extra_field_length; 
      word         file_comment_length; 
      word         disk_number_start; 
      word         internal_file_attributes; 
      longint      external_file_attributes; 
      longint      relative_offset_local_header; 
   } central_directory_file_header; 


   #define end_central_dir_signature  0x06054b50L


   typedef struct end_central_dir_record { 
      word         number_this_disk; 
      word         number_disk_with_start_central_directory; 
      word         total_entries_central_dir_on_this_disk; 
      word         total_entries_central_dir; 
      longint      size_central_directory; 
      longint      offset_start_central_directory; 
      word         zipfile_comment_length; 
   } end_central_dir_record; 



/* ----------------------------------------------------------- */ 
/*
 * input file variables
 *
 */ 


   #define  uinbufsize    512L   /* input buffer size */
   byte     inbuf[uinbufsize];

   boolean  zipeof;
   longint  csize;
   int      cmethod;
   int      inpos;
   int      incnt;
   int      pc;
   int      pcbits;
   int      pcbitv;
   
   int      zipfd;
   char     zipfn[STRSIZ];
   local_file_header lrec;




/* ----------------------------------------------------------- */ 
/*
 * output stream variables
 *
 */ 


   byte     outbuf[4096];   /* for rle look-back */
   longint  outpos;         /* absolute position in outfile */
   int      outcnt;

   int      outfd;
   char     filename[STRSIZ];
   char     extra[STRSIZ];



/* ----------------------------------------------------------- */ 
/*
 * shrink/reduce working storage
 *
 */ 


   int      factor;
   byte     followers[256][64];
   byte     Slen[256];
   int      ExState;
   int      C;
   int      V;
   int      Len;

   #define max_bits      13
   #define init_bits     9
   #define hsize         8192
   #define first_ent     257
   #define clear         256

   typedef int  hsize_array_integer[hsize+1];
   typedef byte hsize_array_byte[hsize+1];

   hsize_array_integer prefix_of;
   hsize_array_byte    suffix_of;
   hsize_array_byte    stack;

   int      cbits;
   int      maxcode;
   int      free_ent;
   int      maxcodemax;
   int      offset;
   int      sizex;


/* ------------------------------------------------------------- */ 

void         skip_csize(void)
{ 
   lseek(zipfd,csize,SEEK_CUR);
   zipeof = 1;
   csize = 0L; 
   incnt = 0; 
} 


/* ------------------------------------------------------------- */ 

void         ReadByte(int *       x)
{ 
   if (incnt == 0) 
   { 
      if (csize == 0L) 
      { 
         zipeof = 1;
         return;
      } 

      inpos = sizeof(inbuf);
      if (inpos > csize) 
         inpos = (int)csize;
      incnt = read(zipfd,inbuf,inpos);

      inpos = 1; 
      csize -= incnt; 
   } 

   *x = inbuf[inpos-1]; 
   inpos++; 
   incnt--; 
} 


/* ------------------------------------------------------------- */ 

void         ReadBits(int      bits,
                      int *    x)
     /* read the specified number of bits */ 
{ 
   int      bit;
   int      bitv;

   *x = 0;
   bitv = 1;

   for (bit = 0; bit <= bits-1; bit++)
   { 

      if (pcbits > 0) 
      { 
         pcbits--; 
         pcbitv = pcbitv << 1; 
      } 
      else 

      { 
         ReadByte(&pc); 
         pcbits = 7; 
         pcbitv = 1; 
      } 

      if ((pc & pcbitv) != 0) 
         *x = *x | bitv; 

      bitv = (int) (bitv << 1);
   } 

} 


/* ---------------------------------------------------------- */ 

void         get_string(int      len,
                        char *   s)
{ 
   read(zipfd,s,len);
   s[len] = 0;
} 


/* ------------------------------------------------------------- */ 

void         OutByte(int      c)
   /* output each character from archive to screen */ 
{ 
   outbuf[outcnt /* outpos % sizeof(outbuf) */] = c;
   outpos++; 
   outcnt++;
 
   if (outcnt == sizeof(outbuf)) 
   { 
      write(outfd,outbuf,outcnt);
      outcnt = 0; 
      printf("."); 
   } 
} 


/* ----------------------------------------------------------- */
   
int         reduce_L(int         x)
   { 
      switch (factor) {
         case 1:   return x & 0x7f; 
         case 2:   return x & 0x3f; 
         case 3:   return x & 0x1f; 
         case 4:   return x & 0x0f; 
      } 
    return 0; /* error */
   } 

   
int         reduce_F(int         x)
   { 
      switch (factor) {
         case 1:   if (x == 127) return 2;  else return 3;
         case 2:   if (x == 63) return 2;   else return 3;
         case 3:   if (x == 31) return 2;   else return 3;
         case 4:   if (x == 15) return 2;   else return 3;
      } 
    return 0; /* error */
   } 

   
int         reduce_D(int         x,
                     int         y)
   { 
      switch (factor) {
         case 1:   return ((x >> 7) & 0x01) * 256 + y + 1; 
         case 2:   return ((x >> 6) & 0x03) * 256 + y + 1; 
         case 3:   return ((x >> 5) & 0x07) * 256 + y + 1; 
         case 4:   return ((x >> 4) & 0x0f) * 256 + y + 1; 
      } 
    return 0; /* error */
   } 


int         reduce_B(int         x)
        /* number of bits needed to encode the specified number */ 
   { 
      switch (x - 1) {
         
         case 0:   
         case 1:   return 1; 
         
         case 2:   
         case 3:   return 2; 
         
         case 4:
         case 5:   
         case 6:   
         case 7:   return 3; 
         
         case 8:   
         case 9:   
         case 10:   
         case 11:   
         case 12:   
         case 13:   
         case 14:   
         case 15:   return 4; 
        
         case 16:
         case 17:
         case 18:
         case 19:
         case 20:
         case 21:
         case 22:
         case 23:
         case 24:
         case 25:
         case 26:
         case 27:
         case 28:
         case 29:
         case 30:
         case 31:   return 5;
        
         case 32:
         case 33:
         case 34:
         case 35:
         case 36:
         case 37:
         case 38:
         case 39:
         case 40:
         case 41:
         case 42:
         case 43:
         case 44:
         case 45:
         case 46:
         case 47:
         case 48:
         case 49:
         case 50:
         case 51:
         case 52:
         case 53:
         case 54:
         case 55:
         case 56:
         case 57:
         case 58:
         case 59:
         case 60:
         case 61:
         case 62:
         case 63:   return 6;

         case 64:
         case 65:
         case 66:
         case 67:
         case 68:
         case 69:
         case 70:
         case 71:
         case 72:
         case 73:
         case 74:
         case 75:
         case 76:
         case 77:
         case 78:
         case 79:
         case 80:
         case 81:
         case 82:
         case 83:
         case 84:
         case 85:
         case 86:
         case 87:
         case 88:
         case 89:
         case 90:
         case 91:
         case 92:
         case 93:
         case 94:
         case 95:
         case 96:
         case 97:
         case 98:
         case 99:
         case 100:
         case 101:
         case 102:
         case 103:
         case 104:
         case 105:
         case 106:
         case 107:
         case 108:
         case 109:
         case 110:
         case 111:
         case 112:
         case 113:
         case 114:
         case 115:
         case 116:
         case 117:
         case 118:
         case 119:
         case 120:
         case 121:
         case 122:
         case 123:
         case 124:
         case 125:
         case 126:
         case 127:   return 7;
      
      default:       return 8;
      } 
   } 



/* ----------------------------------------------------------- */

void         Expand(int      c)
   { 
      #define DLE           144
   
      switch (ExState) {
           
           case 0:
               if (c != DLE)
                   OutByte(c);
               else 
                   ExState = 1; 
           break; 
           
           case 1:
               if (c != 0)
               { 
                   V = c; 
                   Len = reduce_L(V);
                   ExState = reduce_F(Len);
               } 
               else 
               { 
                   OutByte(DLE); 
                   ExState = 0; 
               } 
           break; 
           
           case 2:   { 
                  Len = Len + c; 
                  ExState = 3; 
               } 
           break; 
           
           case 3:   { 
                  int i;
                  longint offset = reduce_D(V,c);
                  longint op = outpos - offset;

                  for (i = 0; i <= Len + 2; i++) 
                  { 
                     if (op < 0L) 
                        OutByte(0);
                     else 
                        OutByte(outbuf[(int)(op % sizeof(outbuf))]);
                     op++; 
                  } 

                  ExState = 0; 
               } 
         break;
      } 
   } 


/* ----------------------------------------------------------- */
   
void         LoadFollowers(void)
   { 
      int      x;
      int      i;
      int      b;

      for (x = 255; x >= 0; x--) 
      { 
         ReadBits(6,&b); 
         Slen[x] = b;

         for (i = 0; i < Slen[x]; i++)
         { 
            ReadBits(8,&b); 
            followers[x][i] = b;
         } 
      } 
   } 


   
/* ----------------------------------------------------------- */ 

/*
 * The Reducing algorithm is actually a combination of two
 * distinct algorithms.  The first algorithm compresses repeated
 * byte sequences, and the second algorithm takes the compressed
 * stream from the first algorithm and applies a probabilistic
 * compression method.
 *
 */ 

void         unReduce(void)
     /* expand probablisticly reduced data */ 

   { 

   int    lchar;
   int    lout;
   int    I;

   factor = cmethod - 1; 
   if ((factor < 1) || (factor > 4)) 
   { 
      skip_csize(); 
      return;
   } 

   ExState = 0; 
   LoadFollowers(); 
   lchar =  0;

   while ((!zipeof)) 
   { 

      if (Slen[lchar] == 0)
         ReadBits(8,&lout);
      else 

      { 
         ReadBits(1,&lout); 
         if (lout != 0) 
            ReadBits(8,&lout);
         else 
         { 
            ReadBits(reduce_B(Slen[lchar]),&I);
            lout = followers[lchar][i];
         } 
      } 

      Expand(lout); 
      lchar = lout; 
   } 
} 


/* ------------------------------------------------------------- */
/*
 * Shrinking is a Dynamic Ziv-Lempel-Welch compression algorithm
 * with partial clearing.
 *
 */ 

void         partial_clear(void)
{ 
   int      pr;
   int      cd;


   /* mark all nodes as potentially unused */
   for (cd = first_ent; cd < free_ent; cd++)
      prefix_of[cd] |= 0x8000;


   /* unmark those that are used by other nodes */
   for (cd = first_ent; cd < free_ent; cd++)
   { 
      pr = prefix_of[cd] & 0x7fff;   /* reference to another node? */ 
      if (pr >= first_ent)           /* flag node as referenced */
         prefix_of[pr] &= 0x7fff;
   } 


   /* clear the ones that are still marked */ 
   for (cd = first_ent; cd < free_ent; cd++)
      if ((prefix_of[cd] & 0x8000) != 0) 
         prefix_of[cd] = -1;


   /* find first cleared node as next free_ent */ 
   free_ent = first_ent; 
   while ((free_ent < maxcodemax) && (prefix_of[free_ent] != -1)) 
      free_ent++; 
} 


/* ------------------------------------------------------------- */

void         unShrink(void)

{ 
   int      stackp;
   int      finchar;
   int      code;
   int      oldcode;
   int      incode;


   /* decompress the file */ 
   maxcodemax = 1 << max_bits; 
   cbits = init_bits; 
   maxcode = (1 << cbits) - 1; 
   free_ent = first_ent; 
   offset = 0; 
   sizex = 0; 

   for (code = maxcodemax; code > 255; code--)
      prefix_of[code] = -1;

   for (code = 255; code >= 0; code--) 
   { 
      prefix_of[code] = 0;
      suffix_of[code] = code;
   } 

   ReadBits(cbits,&oldcode); 
   finchar = oldcode; 
   if (zipeof) 
      return;

   OutByte(finchar); 

   stackp = 0; 

   while ((!zipeof)) 
   { 
      ReadBits(cbits,&code); 

      while (code == clear)
      { 
         ReadBits(cbits,&code); 

         switch (code) {
            
            case 1:   { 
                  cbits++; 
                  if (cbits == max_bits) 
                     maxcode = maxcodemax;
                  else 
                     maxcode = (1 << cbits) - 1; 
               } 
            break;

            case 2:
                  partial_clear();
            break;
         } 

         ReadBits(cbits,&code); 
      } 

   
      /* special case for KwKwK string */
      incode = code;
      if (prefix_of[code] == -1)
      { 
         stack[stackp] = finchar;
         stackp++; 
         code = oldcode; 
      } 


      /* generate output characters in reverse order */
      while (code >= first_ent)
      { 
         stack[stackp] = suffix_of[code];
         stackp++; 
         code = prefix_of[code];
      } 

      finchar = suffix_of[code];
      stack[stackp] = finchar;
      stackp++; 


      /* and put them out in forward order */
      while (stackp > 0)
      { 
         stackp--; 
         OutByte(stack[stackp]);
      } 


      /* generate new entry */
      code = free_ent;
      if (code < maxcodemax) 
      { 
         prefix_of[code] = oldcode;
         suffix_of[code] = finchar;
         while ((free_ent < maxcodemax) && (prefix_of[free_ent] != -1))
            free_ent++;
      } 


      /* remember previous code */
      oldcode = incode; 
   } 

} 


/* ---------------------------------------------------------- */ 

void         extract_member(void)
{ 
   int    b;

   union {
        struct ftime ft;
        struct {
            word ztime;
            word zdate;
        } zt;
    } td;

for (b=0; b<sizeof(outbuf); b++) outbuf[b]=0;
   pcbits = 0; 
   incnt = 0; 
   outpos = 0L; 
   outcnt = 0; 
   zipeof = 0;

   outfd = creat(filename,S_IWRITE|S_IREAD);
   if (outfd < 1)
   { 
      printf("Can't create output: %s\n",filename); 
      exit(0);
   } 

   close(outfd);
   outfd = open(filename,O_RDWR|O_BINARY);


   switch (cmethod) {
      
      case 0:     /* stored */ 
            { 
               printf(" Extract: %s ...",filename); 
               while ((!zipeof)) 
               { 
                  ReadByte(&b); 
                  OutByte(b); 
               } 
            } 
      break; 
      
      case 1:   { 
               printf("UnShrink: %s ...",filename); 
               unShrink(); 
            } 
      break; 
      
      case 2:   
      case 3:   
      case 4:   
      case 5:   { 
               printf("  Expand: %s ...",filename); 
               unReduce(); 
            } 
      break; 
      
      default: printf("Unknown compression method."); 
   } 

   if (outcnt > 0) 
      write(outfd,outbuf,outcnt);


   /* set output file date and time */
   td.zt.ztime = lrec.last_mod_file_time;
   td.zt.zdate = lrec.last_mod_file_date;
   setftime(outfd,&td.ft);

   close(outfd);
   printf("  done.\n"); 
} 


/* ---------------------------------------------------------- */ 

void         process_local_file_header(void)
{ 
   read(zipfd,&lrec,sizeof(lrec));
   get_string(lrec.filename_length,filename);
   get_string(lrec.extra_field_length,extra);
   csize = lrec.compressed_size;
   cmethod = lrec.compression_method;
   extract_member(); 
} 


/* ---------------------------------------------------------- */ 

void         process_central_file_header(void)
{ 
   central_directory_file_header rec; 
   char filename[STRSIZ];
   char extra[STRSIZ];
   char comment[STRSIZ];

   read(zipfd,&rec,sizeof(rec));
   get_string(rec.filename_length,filename); 
   get_string(rec.extra_field_length,extra); 
   get_string(rec.file_comment_length,comment); 
} 


/* ---------------------------------------------------------- */ 

void         process_end_central_dir(void)
{ 
   end_central_dir_record rec; 
   char comment[STRSIZ];

   read(zipfd,&rec,sizeof(rec));
   get_string(rec.zipfile_comment_length,comment); 
} 


/* ---------------------------------------------------------- */ 

void         process_headers(void)
{ 
   longint sig;

   while (1)
   { 
      if (read(zipfd,&sig,sizeof(sig)) != sizeof(sig))
         return;
      else 

      if (sig == local_file_header_signature) 
         process_local_file_header();
      else 

      if (sig == central_file_header_signature) 
         process_central_file_header();
      else 

      if (sig == end_central_dir_signature) 
      { 
         process_end_central_dir(); 
         return;
      } 

      else 
      { 
         printf("Invalid Zipfile Header\n"); 
         return;
      } 
   } 

} 


/* ---------------------------------------------------------- */ 

void         extract_zipfile(void)
{ 
   zipfd = open(zipfn,O_RDONLY|O_BINARY);
   if (zipfd < 1) {
      printf("Can't open input file: %s\n",zipfn);
      return;
   }

   process_headers();
 
   close(zipfd);
} 


/* ---------------------------------------------------------- */
/*
 * main program
 *
 */ 

void main(int argc, char **argv)
{
   printf("\n"); 
   printf("%s\n",version); 
   printf("Courtesy of:  S.H.Smith  and  The Tool Shop BBS,  (602) 279-2673.\n"); 
   printf("\n");
 
   if (argc != 2)
   { 
      printf("Usage:  UnZip FILE.zip\n");
      exit(0);
   } 

   strcpy(zipfn,argv[1]);
   extract_zipfile(); 
   exit(0);
}





در ضمن میشه از کتابخونه های آماده استفاده کرد یا یک نرم افزار خارجی رو فرا خوانی کرد تا این کار رو انجام بده...برنامه های قبلیتم کاری نداره نوشتنش :چشمک:

----------


## amin1softco

اینم یک مثال خوب از کپری و آن کمپرس در توربو سی

----------


## ebrahim1988

[quote=baghozi;947121]سلام

چندتا تمرین هم من میذارم

1- برنامه ای بنویسید که با استفاده ازتوابع آرایه ای به طول n را به صورت پویا ایجاد و سپس مقادیر آنرا بخواند و درنهایت انرا در خروجی چاپ نماید.

2- تابعی بنویسید که دو عدد صحیح گرفته ، عدد اول را به مبنای عدد دوم ببرد.(عدد دوم می تواند عددی در مبناهای 2 ، 8 ، 16 باشد)




#include<conio.h>
#include<iostream.h>
void func(int n)
{
 int *arr=new int[n];
 int i;
 for(i=0;i<n;i++)
  cin>>arr[i];
 for(i=0;i<n;i++)
  cout<<endl<<arr[i];
}
main()
{
 int n;
 cout<<"lotfan toole araye ra vared konid:";
 cin>>n;
 func(n);
 getch();
}




#include<conio.h>
#include<iostream.h>
int mabna(int n,int m)
{
 if(m==10)
 {
  cout<<n;
  return 0;
 }
 int temp=0,remain;
 while(n!=0)
 {
  remain=n%m;
  temp=temp*10+remain;
  n=n/m;
 }
 cout<<temp;
 return 0;
}
main()
{
 clrscr();
 int n;
 int m;
 cout<<"lotfan adad ra vared konid: ";
 cin>>n;
 cout<<"\nlotfan mabna ra vared konid: ";
 cin>>m;
 mabna(n,m);
 getch();
}

----------


## شیلانینوایی

لطفابگوییدکلاسهای ازنوع  interfaceچهگونه ایجاد میشوند؟با تشکر

----------


## sorroshsaket

لطفا یه سری برنامه جدید بزارین تا حل کنیم
خسته شدم

----------


## ebrahim1988

> *سلام.*
> *3* تا تمرین زیر از درس "برنامه سازی(نویسی) کامپیوتر " را میخواستم مثل تمرین آخری حل کنید. متشکرم. زبان c ...
> 
> اگه عکس تمرین (1) معلوم نبود همینه : x2 + 2x +1 */* x3-2x-9


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

----------


## djsohrab2007

سلام

برای برنامه عوض کردن جای دو عدد a , b :
a=a+b
b=a-b
a=a-b
بقیه اش که زیادی آسون هستند

----------


## shabgard2oo9

حالا خوبه گفتن تازه شروع كنيم شمارفتي مستقيما سراغ گرافيك

----------


## djsohrab2007

> salam
> man vahede daneshgahime C++‎‎ vali aslan balad nistam khaheshan komak


یک سری به سایت www.cpp-coder.com بزنی خوبه! از صفر داره درس میده

----------


## Salar Ashgi

**** یک یادآوری و تذکر به تمام کاربرانی که در این تاپیک پست ارسال می کنند* ***

مدت زیادی است که این تاپیک را زیر نظر دارم ، متاسفانه بجای اینکه روی مسائل برنامه نویسی 

بحث بشه و از اونا ایده گرفته بشه ، گاها و شاید اکثر وقتا تبدیل میشه به جایی برای حل تمرین ها و پروژه 

های دانشجویی ، که خلاف قوانین سایت میباشد ؛ بنابراین خواستم تذکر دهم اگر این تاپیک بخواهد

به مکانی تبدیل شود برای حل تمرین های دانشجویی و درخواست پروژه  ، *مطمئنا تاپیک قفل خواهد شد* ، ولی اگر 

جایی باشد برای تفکر و بحث روی مسائل برنامه نویسی و راههای مختلف حل یک مساله و ...

*میتواند تاپیک مفید و مثمر ثمری باشد .*

با تشکر ، مدیریت بخش .

----------


## ali_system

سلام دوستان 
حاصل عبارت پسوندی عبارت زیر برابر 2 هست چطوری میتونم برنامه ای بنویسم که اونها رو دریافت کنم ! 
/-3.6*3.2
خروجی =2

----------


## R_ahmadi1515

سلام
من میخوام که یک کلاس بسازم برا مشخصات فردی 
و به یک تابع هم نیاز دارم که بتونه سن شخص رو از روی تاریخ تولد حساب کنه
به صورت روز/ماه/سال 
فرمولشو لطفا اگه دارین

مرسی

----------


## meryjooni

> سلام دوستان 
> حاصل عبارت پسوندی عبارت زیر برابر 2 هست چطوری میتونم برنامه ای بنویسم که  اونها رو دریافت کنم ! 
> /-3.6*3.2
> خروجی =2


از پشته استفاده کن.
به ترتیب مبندازی تو پشته ولی قبلش چک میکنی. مثلا اگه بود :
+5*23
اول دو تا عملوند 2 و 3 رو میریزی تو پشته . بعد به عملگر میرسی یعنی * پس دو عدد قبلیو در هم ضزب میکنی و همرو از پشته میندازی بیرون و حاصلضرب میره تو پشته . بعد کاربر عدد 5 میزنه ، که باز میره تو پشته هنوز به عملگری نرسیدی. بعد + میاد که 2 تا عدد قبلشو جمع میکنی ....

----------


## Cool.X90

سلام دوستان
میخوام ببینم کسی کد برنامه ای نداره که طول ، عرض و ارتفاع رو بگیره و حجم رو حساب کنه
نمیدونم باید چطوری بنویسم خیلی برام سخته خواستم برام یک آموزش بشه
من الان در مقطع راهنمایی هستم دوست دارم از الان با این زبان آشنا بشم
ممنون

----------


## ebrahim1988

برو شناسنامت رو بیار اگه راست بگی من خودم دربست در خدمتتم

----------


## dana2020

با عرض سلام خدمت اساتید محترم کسی هست در مورد این سئوال به من کمک کنه
فرض کنید جنگلی با بیست ردیف بیستایی درخت در هر مکان درخت می تواند درخت باشد یا نباشد به این جنگل قواعدی حاکم است به نحوی که چیدمان درختان در هر سال با هم متفاوت است تغییرات سالیانه با قواعد زیر مشخص می گردد
1.اگر اطراف درختی بیش ازچهار درخت وجود داشت باشد ان درخت در سال اینده نخواهد بود
2.اگر اطراف مکانی خالی درختی کمتر از چهار درخت وجود داشته با شد در سال آینده در خت خواهد روئید
در سال صفر تنها در قطر اصلی . فرعی ودر ستر های مضرب سه وستون های مضرب سه درخت وجود دارد 
جنگل را تا 50 سال شبیه سازی کنید

----------


## abejary

سلام
میشه لطفا بگی پشته چییه عزیز.

----------


## R_ahmadi1515

سلام دوستان

یه کلاس برای تاریخ (date) میخوام بسازم که روز/ ماه/سال داشته باشه/و از این کلاس تو یه کلاس دیگه به نام person ( مشخصات فردی) به استفاده بشه.
یعنی تاریخ تولد اشخاص از نوع کلاس date و همچنین سن شخص(چند سال و چند ماه و چند روز) از طریق یک متد یا تابع در کلاس person محاسبه شود

اگه میشه / کد رو برا مبزارین/ خیلی ضروریه  :ناراحت:  :ناراحت:  :ناراحت:  :ناراحت:  :ناراحت: 



class date:
 {
   private:
        int year,month,day;
   public:
        void setdate( int year1;int month1;int day1)
          {
            year=year1;month=month1;day=day1;
          }
  }
class person:
  {
    private:
        char name[35];
        char family[40];
        date birthday;
        date age;
    public:
        date getage(date birthday)
                {
                  
                  
                  }                



کدش تقریبا مثل این/ یه چیزی نوشتیم/ کد تابع محاسبه سن به صورت چند سال و چند ماه و چند روز/ خالیه/ اگه میشه/ ببینید مشکلش چیه/ درستشو برام بزارین

----------


## dana2020

> با عرض سلام خدمت اساتید محترم کسی هست در مورد این سئوال به من کمک کنه
> فرض کنید جنگلی با بیست ردیف بیستایی درخت در هر مکان درخت می تواند درخت باشد یا نباشد به این جنگل قواعدی حاکم است به نحوی که چیدمان درختان در هر سال با هم متفاوت است تغییرات سالیانه با قواعد زیر مشخص می گردد
> 1.اگر اطراف درختی بیش ازچهار درخت وجود داشت باشد ان درخت در سال اینده نخواهد بود
> 2.اگر اطراف مکانی خالی درختی کمتر از چهار درخت وجود داشته با شد در سال آینده در خت خواهد روئید
> در سال صفر تنها در قطر اصلی . فرعی ودر ستر های مضرب سه وستون های مضرب سه درخت وجود دارد 
> جنگل را تا 50 سال شبیه سازی کنید


من سال صفر رو درست کردم مشکلم اینه که چطوری از این ارایه استفاده کنم

----------


## maryam126

برنامه ای برای تاریخ وساعت میخوام بنویسم که روز/ ماه/سال داشته باشه خودم ساعت رونوشتم اما نمیدونم کجابایدتاریخ توی برنامه جابدم؟میشه واسم توضیح بدید

----------


## mohsensaghafi

> برنامه ای برای تاریخ وساعت میخوام بنویسم که روز/ ماه/سال داشته باشه خودم ساعت رونوشتم اما نمیدونم کجابایدتاریخ توی برنامه جابدم؟میشه واسم توضیح بدید


دوست عزیز.
سوالتون رو تو یه تاپیک مجزا بپرسید و فقط یک بار هم بپرسید لطفا.

----------


## saber187518

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

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>
#include <time.h>
#include <stdio.h>

void main()
{
struct  time t;
time_t d;
float r,x,v;
int b=1,i=0,status=0,m=0,p=0,f=0,n;
int landing_time=0,landing_rate=5,taking_off=0,taking_  rate=5;
float tol_land=5,tol_take=5;
float time_land=0,time_take=0;
clrscr();
srand((unsigned) time(&d));
while (b)
{
if(status==1)
{
m--;
if(m==0)
{
if(p==1)
{
taking_rate--;
p=0;
status=0;
}//end of p
if(f==1)
{
landing_rate--;
f=0;
status=0;
}//end of f
}//end of m
}//end of status
delay(1000);
gettime(&t);
clrscr();
printf("The current time is: %2d:%02d:%02d\n",t.ti_hour, t.ti_min, t.ti_sec);
if((t.ti_sec % 5) ==0)
{
r=random(60);
r/=60;
v=landing_rate;
x=v/60;
if(r<=x)
 landing_rate++;
 if(tol_land<landing_rate)
 tol_land=landing_rate;
r=random(60);
r/=60;
v=taking_rate;
x=v/60;
if(r<=x)
 taking_rate++;
 if(tol_take<taking_rate)
 tol_take=taking_rate;
if(status==0)
{
 if(landing_rate>0)
 {
   m=random(5);
   if(m==0)
   m++;
   status=1;
   f=1;
   time_land+=m;
   time_land/=2;
   goto l1;
 }//end of landing_rate
 if(taking_rate>0)
 {
  m=random(5);
  if(m==0)
  m++;
  status=1;
  p=1;
  time_take+=m;
  time_take/=2;
  goto l1;
 }//end of taking_rate
}//end of status
l1:
}//end of t.ti_sec
cout <<"\ntake_rate   land_rate   take_time   land_time   status   take   land   time\n";
cout <<"\n    "<<taking_rate<<"\t\t"<<landing_rate<<"\t    "<<taking_off<<"\t\t"<<landing_time<<"\t   "<<status<<"\t   "<<p<<"\t  "<<f<<"\t"<<m;
if(taking_rate==0 && landing_rate==0)
b=0;
}//end of while
clrscr();
cout <<"average length of queue landing is:\t"<<tol_land/2<<"\n";
cout <<"average length of queue taking  is:\t"<<tol_take/2<<"\n";
cout <<"average time of landing is:\t"<<time_land<<"\n";
cout <<"average time of taking  is:\t"<<time_take<<"\n";
getch();
}//end of program

----------


## saber187518

برنامه تمام زیر مجموعه های یک مجموعه برای 10 کاراکتر.

#include <iostream.h>
#include <conio.h>
void main()
{
char a[10];
int i,j,k,l,m,n,o,p,q,r,s,t,u;
cout <<"enter 10 character...\n";
for (i=0;i<10;i++)
cin >>a[i];
clrscr();
getch();
i=0;
cout <<i<<" \n";
for (j=0;j<10;j++)
{
i++;
cout <<i<<" "<<a[j]<<"\n";
}
for (j=0;j<9;j++)
 for (k=j+1;k<10;k++)
 {
 if(i % 20==0)
 {
  getch();
  clrscr();
 }
 i++;
 cout <<i<<" "<<a[j]<<","<<a[k]<<"\n";
 }
for (j=0;j<8;j++)
 for (k=j+1;j<9;j++)
  for (l=k+1;l<10;l++)
  {
   if(i%20==0)
   {
    getch();
    clrscr();
   }
   i++;
   cout <<i<<" "<<a[j]<<","<<a[k]<<","<<a[l]<<"\n";
  }
for (j=0;j<7;j++)
 for (k=j+1;k<8;k++)
  for (l=k+1;l<9;l++)
   for (m=l+1;m<10;m++)
    {
     if(i%20==0)
     {
      getch();
      clrscr();
     }
    i++;
    cout <<i<<" "<<a[j]<<","<<a[k]<<","<<a[l]<<","<<a[m]<<"\n";
   }
for (j=0;j<6;j++)
 for (k=j+1;k<7;k++)
  for (l=k+1;l<8;l++)
   for (m=l+1;m<9;m++)
    for (n=m+1;n<10;n++)
    {
     if(i%20==0)
     {
      getch();
      clrscr();
     }
    i++;
    cout <<i<<" "<<a[j]<<","<<a[k]<<","<<a[l]<<","<<a[m]<<","<<a[n]<<"\n";
   }
   for (j=0;j<5;j++)
 for (k=j+1;k<6;k++)
  for (l=k+1;l<7;l++)
   for (m=l+1;m<8;m++)
    for (n=m+1;n<9;n++)
    for(o=n+1;o<10;o++)
    {
     if(i%20==0)
     {
      getch();
      clrscr();
     }
    i++;
    cout <<i<<" "<<a[j]<<","<<a[k]<<","<<a[l]<<","<<a[m]<<","<<a[n]<<","<<a[o]<<"\n";
   }
      for (j=0;j<4;j++)
 for (k=j+1;k<5;k++)
  for (l=k+1;l<6;l++)
   for (m=l+1;m<7;m++)
    for (n=m+1;n<8;n++)
    for(o=n+1;o<9;o++)
    for (p=0+1;p<10;p++)
    {
     if(i%20==0)
     {
      getch();
      clrscr();
     }
    i++;
    cout <<i<<" "<<a[j]<<","<<a[k]<<","<<a[l]<<","<<a[m]<<","<<a[n]<<","<<a[o]<<","<<a[p]<<"\n";
   }
for (j=0;j<3;j++)
 for (k=j+1;k<4;k++)
  for (l=k+1;l<5;l++)
   for (m=l+1;m<6;m++)
    for (n=m+1;n<7;n++)
    for(o=n+1;o<8;o++)
    for (p=0+1;p<9;p++)
    for (q=p+1;q<10;q++)
    {
     if(i%20==0)
     {
      getch();
      clrscr();
     }
    i++;
    cout <<i<<" "<<a[j]<<","<<a[k]<<","<<a[l]<<","<<a[m]<<","<<a[n]<<","<<a[o]<<","<<a[p]<<","<<a[q]<<"\n";
   }
   for (j=0;j<2;j++)
 for (k=j+1;k<3;k++)
  for (l=k+1;l<4;l++)
   for (m=l+1;m<5;m++)
    for (n=m+1;n<6;n++)
    for(o=n+1;o<7;o++)
    for (p=0+1;p<8;p++)
    for (q=p+1;q<9;q++)
    for (r=q+1;r<10;r++)
    {
     if(i%20==0)
     {
      getch();
      clrscr();
     }
    i++;
    cout <<i<<" "<<a[j]<<","<<a[k]<<","<<a[l]<<","<<a[m]<<","<<a[n]<<","<<a[o]<<","<<a[p]<<","<<a[q]<<","<<a[r]<<"\n";
   }
   i++;
  cout <<i<<" "<<a[0]<<","<<a[1]<<","<<a[2]<<","<<a[3]<<","<<a[4]<<","<<a[5]<<","<<a[6]<<","<<a[7]<<","<<a[8]<<","<<a[9]<<"\n";
  }

----------


## saber187518

برنامه ای برای نجام برخی اعمال بر روی لیست پیوندی

#include <iostream.h>
#include <conio.h>
struct node{
int x;
node *prev,*next;
}*start,*p,*q;
void add(int,int);
void dell(int);
void print();
void main()
{
int x,n,i,y;
cout <<"enter number node:   ";
cin >>n;
start=new (node);
cout<<&start<<"\n";
getch();
cout <<"enter data:   ";
cin >>x;
start->x=x;
start->prev=NULL;
start->next=NULL;
p=start;
cout<<&p<<"\n";
for(i=2;i<=n;i++)
{
q=new (node);
cout<<&q<<"\n";
p->next=q;
q->prev=p;
q->next=NULL;
cout <<"enter data:   ";
cin >>x;
q->x=x;
p=q;
}
getch();
clrscr();
p=start;
while(p!=NULL)
{
cout <<&p<<p->x<<"\n";
p=p->next;
}
getch();
cout<<"enter data for add:   ";
cin >>x;
cout <<"this data add after ?:   ";
cin >>y;
add(x,y);
//print();
getch();
clrscr();
cout <<"enter data for delete:   ";
cin >>x;
dell(x);
//print();
getch();
}
//***************************
void add(int x,int y)
{
node *s,*z;
s=start;
while(s->x!=y)
s=s->next;
z=new(node);
z->next=s->next;
s->next=z;
s=z->next;
s->prev=z;
z->x=x;
}
//***************************
void dell(int x)
{
node *s,*t,*r;
s=start;
t=start;
r=start;
while(t->x!=x)
t=t->next;
s=t->prev;
r=t->next;
s->next=r;
r->prev=s;
}
//***************************
void print ()
{
node *u;
int d;
u=start;
while(u!=NULL)
{
d=u->x;
cout <<d<<"   ";
u=u->next;
}
}

----------


## saber187518

برنامه ای برای تبدیل اعداد از مبنای 10 به هر مبنایی

#include <iostream.h>
#include <conio.h>
void main()
{
int num,x,m,i=0,r,j;
char ch[10];
cin >>num;
x=num;
cout <<"enter mabna:\t";
cin>>m;
while(x>0)
{
r=x%m;
switch (r)
{
case 0:
       ch[i]=48;
       i++;
       break;
case 1:
       ch[i]=49;
       i++;
       break;
case 2:
       ch[i]=50;
       i++;
       break;
case 3:
       ch[i]=51;
       i++;
       break;
case 4:
       ch[i]=52;
       i++;
       break;
case 5:
       ch[i]=53;
       i++;
       break;
case 6:
       ch[i]=54;
       i++;
       break;
case 7:
       ch[i]=55;
       i++;
       break;
case 8:
       ch[i]=56;
       i++;
       break;
case 9:
       ch[i]=57;
       i++;
       break;
case 10:
       ch[i]='A';
       i++;
       break;
case 11:
       ch[i]='B';
       i++;
       break;
case 12:
       ch[i]='c';
       i++;
       break;
case 13:
       ch[i]='D';
       i++;
       break;
case 14:
       ch[i]='E';
       i++;
       break;
case 15:
       ch[i]='F';
       i++;
       break;
}
x/=m;
}
clrscr();
for (j=i-1;j>=0;j--)
cout <<ch[j];
getch();
}

----------


## dante2008

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

----------


## mohsensaghafi

سلام دوست عزیز.
می تونی به این روش انجامش بدی. اما این یه روش یه مقدار پیچیدس. یه روش راحت تر دیگه هم داره. من اون روش راحت تر رو گذاشتم تا خودت بش برسی.
int sum(int **p,int n,int i){
	if (n==0)
		return p[0][0];
	return p[n/i][n%i]+sum(p,n-1,i);
}
i  تعداد سطر های یک ماتریس مربعی است. n در واقع i*i-1 است. و p هم آدرس این ماتریس مربعی پویاست.
در گام اول سعی کن تابع رو به این روش تغییر بدی که بجای n با i , j که ابعاد ماتریس هستن تغییرش بدی. بعدهم ماتریس رو از شکل مربعی خارج کنی و به هر شکلی که خواستی درش بیاری.
موفق باشی.

----------


## aLiReza.ƒ

سلام دوستان من تازه يه كتاب ++C‌ خريدم و  يه بار خوندمش اما هيچي ياد نگرفتم الان ميخوام يه برنامه بنويسم كه كار يك دفترچه تلفن رو انجام بده يعني بشه اطلاعات رو بهش وارد كرد و يا اطلاعات قبلي رو ويرايش كرد و يا حذف كرد همچنين  بشه اطلاعات رو بر اساس شماره رديف يا شماره تلفن و يا نام جستجو كرد و همه اين شماره تلفن ها و نام اشخاص رو در يك فايل txt ذخيره كنه بدون اينكه قاطي بشن.
خواهش ميكنم يهويي يه كپي ور ندارين بزارين بگين اين برنامه برو حالشو ببر اصلا به هيچ وجه اين كار رو نكنيد  :عصبانی:  راستش خودم ميخوام كار كنم ياد بگيرم فقط اگه ميشه مرحله به مرحله راهنماييم كنيد.
تا اينجاش رو خودم ميدونم كه بايد از آرايه استفاده كنم ولي نميدونم چطور.
در ضمن ورژن ++C كه كار ميكنم 5.02 هست.

----------


## khalilimehdi

سلام دوستان من یه پروژه دارم کارم گیره از دوستان کسی هست کمکم کنه
(بازی حدس زدن یک عدد 5 رقمی)
برنامه ابتدا یک عدد 5رقمی تولید می کند وبدون آنکه این عدد را به کاربر نشان دهد 5علامت(مثلا *) نمایش می دهد . کاربر سعی میکند از سمت چپ به براست ارقام راحدس بزند هرگاه کاربر رقمی را درست حدس می زند رقم نمایش داده می شود وبعد کاربر باید عدد بعدی راحدس بزند:
1-عدد 5رقمی باید دارای رقم های غیرتکراری باشد
2-برنامه باید تعداد حدس های کاربر را(به ازای همه ارقام)مشخص کند ودرنهایت باتوجه به تعداد حدس های کاربر تعیین کند که برنده شده است یا نه.
3-پس از پایان هردوره ، برنامه ازکاربر بپرسد که آیا مایل است دوباره بازی کند واگر کاربر موافق بود ، بازی دوباره تکرار شود.
تروخدا اگه میتونید کمکم کنید برنامه رو باید خروجی بگیرم

----------


## mohsensaghafi

> khalilimehdi	
> نقل قول: تمرین های زبان برنامه نویسی ++C
> سلام دوستان من یه پروژه دارم کارم گیره از دوستان کسی هست کمکم کنه
> (بازی حدس زدن یک عدد 5 رقمی)
> برنامه ابتدا یک عدد 5رقمی تولید می کند وبدون آنکه این عدد را به کاربر نشان دهد 5علامت(مثلا *) نمایش می دهد . کاربر سعی میکند از سمت چپ به براست ارقام راحدس بزند هرگاه کاربر رقمی را درست حدس می زند رقم نمایش داده می شود وبعد کاربر باید عدد بعدی راحدس بزند:
> 1-عدد 5رقمی باید دارای رقم های غیرتکراری باشد
> 2-برنامه باید تعداد حدس های کاربر را(به ازای همه ارقام)مشخص کند ودرنهایت باتوجه به تعداد حدس های کاربر تعیین کند که برنده شده است یا نه.
> 3-پس از پایان هردوره ، برنامه ازکاربر بپرسد که آیا مایل است دوباره بازی کند واگر کاربر موافق بود ، بازی دوباره تکرار شود.
> تروخدا اگه میتونید کمکم کنید برنامه رو باید خروجی بگیرم


سلام دوست عزیز.
خوب هر چقدر کد نوشتی رو بذار تا یواش یواش تکمیل بشه.

----------


## m.misa

> سلام دوستان من یه پروژه دارم کارم گیره از دوستان کسی هست کمکم کنه
> (بازی حدس زدن یک عدد 5 رقمی)
> برنامه ابتدا یک عدد 5رقمی تولید می کند وبدون آنکه این عدد را به کاربر نشان دهد 5علامت(مثلا *) نمایش می دهد . کاربر سعی میکند از سمت چپ به براست ارقام راحدس بزند هرگاه کاربر رقمی را درست حدس می زند رقم نمایش داده می شود وبعد کاربر باید عدد بعدی راحدس بزند:
> 1-عدد 5رقمی باید دارای رقم های غیرتکراری باشد
> 2-برنامه باید تعداد حدس های کاربر را(به ازای همه ارقام)مشخص کند ودرنهایت باتوجه به تعداد حدس های کاربر تعیین کند که برنده شده است یا نه.
> 3-پس از پایان هردوره ، برنامه ازکاربر بپرسد که آیا مایل است دوباره بازی کند واگر کاربر موافق بود ، بازی دوباره تکرار شود.
> تروخدا اگه میتونید کمکم کنید برنامه رو باید خروجی بگیرم



من دانشجو رشته نرم افزار ،ترم دوم هستم. 
دوستان این پروژه به نظرم خیلی جالبه!
وقتی خوندمش ،علاقه مند شدم که بنویسم. میشه در ابتدا راهنماییم کنید؟؟؟؟؟؟؟؟؟؟؟
برنامه در ابتدا با استفاده از چه دستوری یه عدد 5 رقمی تولید میکنه؟

----------


## saeid6994

*سلام 
برنامه اي كه يك رشته و 2 كلمه از ورودي بگيرد و در رشته كلمه دوم را  جايگزين كلمه اول كند. 

من بر نامه رو بصورت زير نوشتم كه نقص داره  اگه راهنمايي كنيد كاملش كنم ممنون ميشم.

*#include<iostream.h>
#include<conio.h>
#include<string.h>
main(){
char s[100];
char sh1[20];
char sh2[20];
int k,l,o,j=0,z,n=0,w  ;
char m[20];
cin.get(s,99);
cout<<"s="<<s ;
cout<<endl;
cin>>sh1;
cin>>sh2;
k=strlen(sh1);
l=strlen(sh2);
o=l-k;
cout<<"k="<<k<<endl<<"l="<<l<<endl<<"o="<<o<<endl;


for (int i=0;s[i];i++)
if(s[i]==sh1[0]){
z=i;
w=i;

j=0;
for(int a=i;a<=i+k-1;a++){
m[j]=s[a];
j++;
}

if(strcmp(sh1,m)==0){
for(;s[a];a++){
s[w+o]=s[w];
w++;}
for(;z<=i+l;z++){
s[z]=sh2[n];
n++;
}
}
}
cout<<"sjadid="<<s;
getch();
return 0;
}

----------


## mohsensaghafi

> *سلام 
> برنامه اي كه يك رشته و 2 كلمه از ورودي بگيرد و در رشته كلمه دوم را  جايگزين كلمه اول كند. 
> 
> من بر نامه رو بصورت زير نوشتم كه نقص داره  اگه راهنمايي كنيد كاملش كنم ممنون ميشم.
> 
> *#include<iostream.h>
> #include<conio.h>
> #include<string.h>
> main(){
> ...


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

----------


## mohsensaghafi

> من دانشجو رشته نرم افزار ،ترم دوم هستم. 
> دوستان این پروژه به نظرم خیلی جالبه!
> وقتی خوندمش ،علاقه مند شدم که بنویسم. میشه در ابتدا راهنماییم کنید؟؟؟؟؟؟؟؟؟؟؟
> برنامه در ابتدا با استفاده از چه دستوری یه عدد 5 رقمی تولید میکنه؟


سلام دوست عزیز.
وقتی قراره که برنامه یه عدد تولید کنه، احتمالا اون عددی که باید تولید بشه جزء اعداد Random هست، نه؟!!!!
پس الان باید دنبال دستور تولید عدد تصادفی در C بگردید.
یا علی!

----------


## baghozi

سلام دوستان

برنامه ای بنویسید که یک فایل متنی را داخل یک فایل BMP مخفی نماید و بتواند فایل مخفی شده را آشکارکند.

----------


## baghozi

اینم یه تمرین دیگه

برنامه ای بنویسید که آدرس یک پوشه را گرفته و نام تمامی پوشه ها را به تاریخی که پوشه ساخته شده تغییر دهد؟ (تاریخ باید به شمسی تبدیل گردد)

----------


## baghozi

چرا دیگه کسی در این تایپک مطلب نمیذاره؟

----------


## saeid6994

> سلام دوست عزیز.
> اولین مشکل شما اینه که در رشته هایی که می سازید، مقدار NULL که نشاندهنده آخر رشته هست رو کپی نمی کنید. در این حالت رشته شما از نظر طول دچار اشکال می شه و شما نمی تونید این رشته رو با رشته های دیگه مقایسه کنید.
> مشکل دوم هم اینه که برنامه شما به اولین کارکتر مشترک که می رسه به اندازه طول رشته اول کپی می کنه و بعد مقایسه می کنه. اما اگه این رشته با رشته اول مساوی نباشه دریگه رشته های دیگه رو چک نمی کنه.
> مشکل NULL رو که حل کنی، مشکلات دیگه خودشون رو نشون می دن. یه دسترسی غیر مجاز به حافظه هم داری که بعد از حل NULL خودشو نشون می ده.
> این ها رو اصلاح کن، اگر باز هم جایی مشکل داشتی بگو.
> یا علی!


سلام و ممنون از كمكت 
من مشكل null رو حل كردم همون اول كه رشته ها رو تعريف كردم برابر با null قرار دادم اما مشكل دوم فكر نميكنم درست باشه چون For اول رو واسه اين گذاشتم كه تا آخر رشته رو دنبال كنه  :متفکر:  
اما در رابطه با دسترسي غير مجاز به حافظه چيزي نميدونم ميشه بيشتر توضيح بدي؟
من الان ميخوام رشته دوم رو در جمله كپي كنم چطوري ميتونم؟با حلقه for ارور ميده  :افسرده: 

ممنون

----------


## sayron

سلام اين دوبرنامه برام 6نمره داره اگه بلدين برام بذارين يابرام ايميل كنين:sayron_992000
1)دوليست مرتبL1,L2رادرهم الحاق كند به طوري كه حاصل مرتب باشند.(بااستفاده ازليست هاي پيوندي،ساختمان داده ها)
2)دوعددm,nرقمي رادرL1,L2ذخيره وحاصل جمع رادرL3قراردهد.(ليستهاي پيوندي،ساختمان داده ها) :خیلی عصبانی:

----------


## mohsensaghafi

> سلام و ممنون از كمكت 
> من مشكل null رو حل كردم همون اول كه رشته ها رو تعريف كردم برابر با null قرار دادم اما مشكل دوم فكر نميكنم درست باشه چون For اول رو واسه اين گذاشتم كه تا آخر رشته رو دنبال كنه  
> اما در رابطه با دسترسي غير مجاز به حافظه چيزي نميدونم ميشه بيشتر توضيح بدي؟
> من الان ميخوام رشته دوم رو در جمله كپي كنم چطوري ميتونم؟با حلقه for ارور ميده 
> 
> ممنون


دوست عزیز.
مهم اینه که در هر لحظه در آخرین خانه رشته شما NULL قرار بگیره. اول کار قرار دادم لازم هست اما کافی نیست. این رو حتما مد نظر داشته باش.
اما دسترسی غیر مجاز به حافظه، یعنی شما در محاسبه آدرس یه آدرسی بدست آوردی که متغلق به خودت نیست. یعنی اینکه آدرس خارج از محدوده حافظه ای است که سیستم عامل به برنامه شما اختصاص داده.
همیشه یادت باشه ، ایرادات برنامه نویسی رو باید از اولین Error دونه دونه حل کنی و بری جلو. وگر نه جواب نمی گیری.

----------


## pourkafi

برنامه ای بنویسید که یک عدد در مبنای 2 بگیرد و به مبنای 10 تبدیل کند

----------


## mahdi_barani68

> سلام دوستان من یه پروژه دارم کارم گیره از دوستان کسی هست کمکم کنه
> (بازی حدس زدن یک عدد 5 رقمی)
> برنامه ابتدا یک عدد 5رقمی تولید می کند وبدون آنکه این عدد را به کاربر نشان دهد 5علامت(مثلا *) نمایش می دهد . کاربر سعی میکند از سمت چپ به براست ارقام راحدس بزند هرگاه کاربر رقمی را درست حدس می زند رقم نمایش داده می شود وبعد کاربر باید عدد بعدی راحدس بزند:
> 1-عدد 5رقمی باید دارای رقم های غیرتکراری باشد
> 2-برنامه باید تعداد حدس های کاربر را(به ازای همه ارقام)مشخص کند ودرنهایت باتوجه به تعداد حدس های کاربر تعیین کند که برنده شده است یا نه.
> 3-پس از پایان هردوره ، برنامه ازکاربر بپرسد که آیا مایل است دوباره بازی کند واگر کاربر موافق بود ، بازی دوباره تکرار شود.
> تروخدا اگه میتونید کمکم کنید برنامه رو باید خروجی بگیرم




 :متفکر:  :لبخند: 
با سلام خدمت دوستان 
در جواب دوست عزیز آقای خلیلی مهدی باید عرض کنم من این برنامه رو نوشتم
شما 2 راه دارید 1- باید ابتدا یک عدد 5 رقمی تولید کنید بعد  اعداد را تفکیک و جستجو برای یافتن عدد تکراری کنید 
2- راه حل دوم از آرایه5 تایی استفاده کن و اعداد تک رقمی تولید کن و جستجو برای تکراری بودن آن کن.
در اخر از کاربر بخواه تا عدد را حدس بزند و چک کن برای درستی آن. اگه مشکلی داشتی بگو

----------


## mahdi_barani68

سلام دوستان
در جواب دوست عزیز آقای خلیلی مهدی باید بگم من الین برنامه رو با دو روش نوشتم اگه می خوای ایمیل بزن تا برات بفرستم

----------


## saber187518

سلام دوستان یک برنامه گرافیکی که یک خونه میسازه و نام و نام خانوادگی شما رو دور اون خونه میچرخونه.
فقط کافیه به جای your name ایم خدوتون و به جای your familly فامیلیتون رو بذارید.
اگه خوشتون اومد تشکر فراموش نشه.

#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
void main()
{
int i;
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
rectangle(250,200,350,300);
circle(200,225,10);
circle(400,225,10);
rectangle(285,350,315,380);
line(250,150,350,150);
line(250,150,300,100);
line(300,100,350,150);
delay(1000);
setcolor(0);
line(250,150,350,150);
line(250,150,300,100);
line(300,100,350,150);
for(i=1;i<=50;i++)
{
setcolor(15);
line(250,150+i,350,150+i);
line(250,150+i,300,100+i);
line(300,100+i,350,150+i);
delay(10);
setcolor(0);
line(250,150+i,350,150+i);
line(250,150+i,300,100+i);
line(300,100+i,350,150+i);
delay(10);
}
setcolor(15);
line(250,150+i,350,150+i);
line(250,150+i,300,100+i);
line(300,100+i,350,150+i);
setcolor(0);
circle(200,225,10);
for(i=1;i<=75;i++)
{
setcolor(15);
circle(200+i,225,10);
delay(10);
setcolor(0);
circle(200+i,225,10);
if(i==60)
{
setcolor(15);
rectangle(250,200,350,300);
}
}
setcolor(15);
circle(200+i,225,10);
setcolor(0);
circle(400,225,10);
for(i=1;i<=75;i++)
{
setcolor(15);
circle(400-i,225,10);
delay(10);
setcolor(0);
circle(400-i,225,10);
if(i==60)
{
setcolor(15);
rectangle(250,200,350,300);
}
}
setcolor(15);
circle(400-i,225,10);
setcolor(0);
rectangle(285,350,315,380);
for (i=1;i<=100;i++)
{
setcolor(15);
rectangle(285,350-i,315,380-i);
delay(10);
setcolor(0);
rectangle(285,350-i,315,380-i);
delay(10);
if(i==80)
{
setcolor(15);
rectangle(250,200,350,300);
}
}
setcolor(15);
rectangle(285,350-i,315,380-i);
outtextxy(250,310,"Ali");
outtextxy(280,310,"Salehinia");
for(i=0;i<=25;i++)
{
setcolor(15);
outtextxy(250-i,310,"your name");
delay(20);
setcolor(0);
outtextxy(250-i,310,"your name");
delay(20);
}
setcolor(15);
outtextxy(250-i,310,"your name");
delay(10);
for(i=0;i<=120;i++)
{
setcolor(15);
outtextxy(224,310-i,"your name");
delay(20);
setcolor(0);
outtextxy(224,310-i,"your name");
delay(20);
}
setcolor(15);
outtextxy(224,310-i,"your name");
delay(10);
for(i=0;i<=50;i++)
{
setcolor(15);
outtextxy(224+i,189-i,"your name");
delay(20);
setcolor(0);
outtextxy(224+i,189-i,"your name");
delay(20);
}
setcolor(15);
outtextxy(224+i,189-i,"your name");
delay(10);
for(i=0;i<=75;i++)
{
setcolor(15);
outtextxy(280+i,310,"your familly");
delay(20);
setcolor(0);
outtextxy(280+i,310,"your familly");
delay(20);
}
setcolor(15);
outtextxy(280+i,310,"your familly");
delay(10);
for(i=0;i<=120;i++)
{
setcolor(15);
outtextxy(356,310-i,"your familly");
delay(20);
setcolor(0);
outtextxy(356,310-i,"your familly");
delay(20);
}
setcolor(15);
outtextxy(356,310-i,"your familly");
delay(10);
for(i=0;i<=50;i++)
{
setcolor(15);
outtextxy(356-i,189-i,"your familly");
delay(20);
setcolor(0);
outtextxy(356-i,189-i,"your familly");
delay(20);
}
setcolor(15);
outtextxy(356-i,189-i,"your familly");
delay(10);
delay(10);
getch();
closegraph();
}

موفق باشید.

----------


## maryshayegh

به نام حق
سلام بچه ها 
اینطوری که نمیشه که !
حتما باید با آقا نیما مدیر بخش C هماهنگ بشه . تا یه انجمن آموزشی خوب راه اندازی بشه.
که اگه تاپیک اضافی هم داشتیم ایشون حذفشون کنند. این تاپیکم شده مثل بقیه رفع اشکال . چه فرقی کرد؟!  :متفکر: 
یاعلی

----------


## maryshayegh

> سلام به تمامی دوستان من این تاپیک رو برای دوستانبرنامه نویسیه زبان C++‎‎‎ زدم و امید واروم کهبرنامه نویسان به زبانC++‎‎‎ بیان و در این تاپیک مثل تا پیک C فعالیت کنند و یک نفر هم مسولیت آموزش این بخش رو به عهده بگیره.قوانین هم مثل قوانین تاپیک C هست .
> با تشکر سید مهدی


سلام بچه ها 
اینطوری که نمیشه که !
حتما باید با آقا نیما مدیر بخش C هماهنگ بشه . تا یه انجمن آموزشی خوب راه اندازی بشه.
که اگه تاپیک اضافی هم داشتیم ایشون حذفشون کنند. این تاپیکم شده مثل بقیه رفع اشکال . چه فرقی کرد؟!  :متفکر: 
یاعلی

----------

