PDA

View Full Version : گفتگو: تمرین های زبان برنامه نویسی ++C



smahdi1991
جمعه 06 آذر 1388, 19:01 عصر
سلام به تمامی دوستان من این تاپیک رو برای دوستانبرنامه نویسیه زبان C++‎ زدم و امید واروم کهبرنامه نویسان به زبانC++‎ بیان و در این تاپیک مثل تا پیک C فعالیت کنند و یک نفر هم مسولیت آموزش این بخش رو به عهده بگیره.قوانین هم مثل قوانین تاپیک C هست .
با تشکر سید مهدی

بانوی ایران
یک شنبه 08 آذر 1388, 15:31 عصر
اگر میشه تو این تاپیک یکم اموزش هم باشه من اصلا cppبلد نیستم
دوست دارم یاد بگیرم

smahdi1991
سه شنبه 10 آذر 1388, 13:25 عصر
کسی حاضر نیست مسئولیت آموزش این بخش رو بعهده بگیره؟

#Elahe#
یک شنبه 15 آذر 1388, 16:41 عصر
واسه اینکه این تایپیک زیر خاک مدفون نمیشه علی الحساب اینو بنویسید تا یه صاحابی واسه تایپیک پیدا شه :دی

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


http://azarteam.com/uploader/image/images/5112_6_2009_5_16_19_PM.png (http://azarteam.com/uploader/image/view.php?filename=5112_6_2009_5_16_19_PM.png)

rak6993
یک شنبه 15 آذر 1388, 19:29 عصر
سلام
من تا حدودی با ++c کار کردم میتونم آموزش و تمارین مختصری بذارم رو سایت و اگه کسی سوالی داشت کمکش کنم.

smahdi1991
پنج شنبه 19 آذر 1388, 15:21 عصر
سلام به دوستان یعنی واقعا زبان C++‎ این قدر کم طرفدار در بین برنامه نویسان که از این تاپیک استقبالی نشد یعنی کسی نمی خواد مسولیت آموزش این بخش رو مثل بخش C به عهده بگیره خواهشا یک نفر بیاد و این لطف رو بکنه و همه بتونیم از این فرصت خوب برای آموزش استفاده کنیم

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

smahdi1991
سه شنبه 27 بهمن 1388, 14:28 عصر
سلام
با استفاده از چه چیزی اینو حل کنیم با استفاده از گرافیک؟ یا محیط متنی ؟

mabbaszadegan
سه شنبه 27 بهمن 1388, 14:33 عصر
با عرض سلام خدمت دوستان عزیز
به نظرم کار خوبیه ، من که چیز زیادی بلد نیستم ولی تا اونجایی که از دستم بر بیاد و بلد باشم در خدمتم

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

farid_mov2006
سه شنبه 27 بهمن 1388, 16:14 عصر
سلام دوستان
با ستاره درستش کنید{داخل کتاب گفته با ستاره}

farid_mov2006
چهارشنبه 28 بهمن 1388, 14:14 عصر
سلام دوستان
کسی نتونسته حلش کنه{منم نتونستم:عصبانی++:}

fshb_ 1370
چهارشنبه 28 بهمن 1388, 20:00 عصر
سلام
این جا تاپیک خیلی خوبیه، ولی اصلا هیچ کس فعالیت نمیکنه.
من کدم میذارم ولی نتونستم شکل بیضی رو رسم کنم، حالا ببینید درسته:متفکر:


#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
چهارشنبه 28 بهمن 1388, 20:21 عصر
سلام دوست عزیز
من اولین بارمه دارم یه جا سوال میدم نمیدونم چرا دارم اینقدر گاف میدم{بزرگ میشم یاد میگیرم:کف:}
تو کتاب گفته افقی نه عمودی
راستی شما
#include"stdafx.h"را یادت رفته
ولی خوب بود
امیدوارم هر چی زودتر این تاپیک پا بگیره تا ما هم راه بیفتیم

fshb_ 1370
چهارشنبه 28 بهمن 1388, 20:55 عصر
سلام دوست عزیز
من اولین بارمه دارم یه جا سوال میدم نمیدونم چرا دارم اینقدر گاف میدم{بزرگ میشم یاد میگیرم:کف:}
تو کتاب گفته افقی نه عمودی
راستی شما
#include"stdafx.h"را یادت رفته
ولی خوب بود
امیدوارم هر چی زودتر این تاپیک پا بگیره تا ما هم راه بیفتیم
چرا باید اینو بنویسم، راستش من اصلا نمیدونم این چی هست؟:متفکر::گیج:
من بیضی رو نتونستم بنویسم، هر کی بلده بگه یا یه راهنمایی بکنه.

farid_mov2006
چهارشنبه 28 بهمن 1388, 21:57 عصر
شما بگو تا روی یه چیز دیگه کار کنیم
راستش من نتونستم اینو حلش کنم میخواستم یاد بگیرم
سوال بده تا حل کنیم/از مبتدی تا پیشرفته/

lvlina_r
چهارشنبه 28 بهمن 1388, 23:46 عصر
به نظر من سوال های acm را حل کنیم، هم یه چیزی یاد می گیریم هم واسه آیندمونم هم خوبه، می تونیم از ساده شروع کنیم و با هم بریم جلو.....

farid_mov2006
پنج شنبه 29 بهمن 1388, 08:04 صبح
اگه سوال دارین بدین تا حل کنیم
از ساده تا پیشرفته/acmهم میخواین بدین/

lvlina_r
پنج شنبه 29 بهمن 1388, 13:53 عصر
اینم یه سوال فکر کنم آسون، هر کی زودتر حل کرد بذاره بقیه هم ببینند

farid_mov2006
شنبه 01 اسفند 1388, 11:56 صبح
من این فایل ضمیمه را گرفتم اما چیزی توش نیست /نمیشه سوال را خودتون مطرح کنید/3بار گرفتم اما.....

amin1softco
شنبه 01 اسفند 1388, 14:29 عصر
محتویات فایل و سوال:




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
یک شنبه 02 اسفند 1388, 12:24 عصر
من خودم به جواب نرسيدم، ولي يکي تو تاپيک الگوريتم جوابشا گذاشت، اگه رو جوابشم يکم تحليل کنيم خوبه .....

/*
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
یک شنبه 02 اسفند 1388, 12:28 عصر
من این فایل ضمیمه را گرفتم اما چیزی توش نیست /نمیشه سوال را خودتون مطرح کنید/3بار گرفتم اما.....
با دانلود منيجر ها نبايد دانلود کني:چشمک:

alinaghiha
یک شنبه 02 اسفند 1388, 13:25 عصر
حس و وقت ترجمه متن نيست
من تا الان 2 بار تو مسابقات acm سطح دانشگاهمون شركت كردم اما مشكل من ترجمه متن هستش فارسي بذاريد بنده هم هستم.

farid_mov2006
یک شنبه 02 اسفند 1388, 17:02 عصر
راست میگه منم انگلیسیم جالب نیست.لطفا یه نفر زحمت ترجمش را بکشه

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

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

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

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

lvlina_r
یک شنبه 02 اسفند 1388, 22:22 عصر
این واسه شروع سخت نیست، من حتی نفهمیدم چه جوری باید شروع کنم.:ناراحت:
اگه کدی گذاشتید، توضیح هم بدید
فکر نکنم زیادم سخت باشه، به هر حال باید از یه جا شروع کرد، این مثلا جزء سوال های مبتدیش بود، البته منم خودم نتونستم کامل به جواب برسم، ولی می تونیم برنامه ی دوستمون را تحلیل کنیم....، ببینیم چی کار کرده و چرا:متفکر::متفکر::متفکر:

baghozi
سه شنبه 11 اسفند 1388, 16:53 عصر
سلام دوستان

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

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

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

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

amin1softco
سه شنبه 11 اسفند 1388, 22:46 عصر
حاصلضرب بازگشتی با عملگر جمع :


#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
پنج شنبه 13 اسفند 1388, 08:45 صبح
برنامه ای بنویسید که عدد صحیح را گرفته ، اگر عدد مثبت بود مبنای 2 آنر و اگر منفی بود مکمل 2 آنرا نمایش دهد.

baghozi
پنج شنبه 13 اسفند 1388, 08:52 صبح
برنامه ای بنویسید که مجموع عناصر دور یک ماتریس 5*5 را محاسبه نماید؟

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

amin1softco
پنج شنبه 13 اسفند 1388, 20:14 عصر
سوال اول اگه مثبت باینری و اگه منفی مکمل 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
پنج شنبه 13 اسفند 1388, 22:23 عصر
سلام
از دوستان عذر می خوام که بعد از اولین پست نتونستم کار رو شروع کنم.یه مشکل برام پیش اومده بود، اما انشاا... از این به بعد کارمون ادامه پیدا کنه با کمک همه دوستان.
من یه برنامه پیشنهادی دارم ببینیم چطوره.
در ادامه کار سعی می کنم آموزش هم قرار بدم.
**برنامه ای بنویسید که یک عبارت میانوندی رو به پسوندی تبدیل کنه**
مثال: میانوندی a+b
پسوندی +ab
امیدوارم موفق باشید

amin1softco
جمعه 14 اسفند 1388, 06:06 صبح
اینم جوابش تبدیل میانوندی به پسوندی : اینو از یک سایتی گرفتم چون سوالت کلیشه ایی بود


#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
جمعه 14 اسفند 1388, 11:23 صبح
سلام دوستان عزیز.

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

Nima.M
جمعه 14 اسفند 1388, 11:31 صبح
سی ++ بیشتر به خاطر شی گرا بودنش معروفه. دوستان عزیز چرا روی این قسمت از این زبان کار نمیکنید و هرچی تمرین و مثال هست مربوط به مسایل دیگه هست؟

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

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

lvlina_r
شنبه 15 اسفند 1388, 17:19 عصر
سلام دوستان عزیز.

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

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

davood59
یک شنبه 16 اسفند 1388, 13:36 عصر
سلام دوستان،خسته نباشید؛
ضمن عذرخواهی من یک برگشت به عقب می کنم و برنامه ضرب رو با استفاده از جمعهای متوالی و تابع بازگشتی نوشتم. اگه احیاناً ایراد و نقصی داره لطفا اعلام کنید.




#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
یک شنبه 16 اسفند 1388, 15:57 عصر
چه عجب یکی تست کرد این تابع ها رو ..... حالا اگه گفتی اصلاح اون تابع من چطوریه؟:قلب: بدون استفاده از متغیر سوم



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
یک شنبه 16 اسفند 1388, 20:37 عصر
سلام
اولاً آقای amin1softco خوبه که شما به سایتهای برنامه نویسی زیادی مراجعه میکنید ولی خوب بهتر بود خودتون هم روش فکر میکردید و البته من هم میدونستم اون سوال زیاد طاقت فرسا نیست.
ثانیاً آقایNima.M ورود شما رو خوشامد میگم؛ وقتی من وارد این تاپیک شدم دوستان تقاضای آموزش++c رو از اول داشتن و من هم سعیم بر اینه.
اگه شما میتونید این کار رو بهتر ادامه بدید بسم ا...
و اما سوال 2:
برنامه بنویسید که شکلی رو که به ضمیمه فرستاده شده چاپ کنه.

amin1softco
یک شنبه 16 اسفند 1388, 21:10 عصر
باشه چشم این تصویر که گذاشتی می خوای به صورت تصویر چاپ بشه یا کارکتر اسکی اگه تصویر دوست داری چاپ بشه با بورلند میشه اینجور چاپش کرد تو ویژالم که دیگه آب خوردن با 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
یک شنبه 16 اسفند 1388, 21:18 عصر
برادر من شما با ++c با کارکتر ستاره اون رو چاپ کن
ضمنا شما استاد ما هستی این تمارین ابتدایی رو من برای شروع کار اونایی که از اول می خوان شروع کنن میزارم
التماس دعا
یا علی

amin1softco
یک شنبه 16 اسفند 1388, 21:22 عصر
در تابع بالا خط


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


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

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



#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
دوشنبه 17 اسفند 1388, 10:11 صبح
این تابع از ساختار بازگشتی تبعیت نمی کنه خط

dav(a);

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

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

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

amin1softco
دوشنبه 17 اسفند 1388, 16:40 عصر
یک مروری صفحات قبلی رو بکن من خودم نوشتمش بدون متغیر سوم یعنی همونو عوضش کردم که این می شد:


#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
دوشنبه 17 اسفند 1388, 21:16 عصر
سه روش برای دسترسی به مقادیر یک آرایه دو بعدی


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
دوشنبه 17 اسفند 1388, 21:18 عصر
تعویض نام ها با استفاده از آرایه دو بعدی کاراکتری


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
دوشنبه 17 اسفند 1388, 21:19 عصر
کار با آدرس ها در ساختارها


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++
پنج شنبه 20 اسفند 1388, 03:04 صبح
سلام;خسته نباشيد
من ميخوام كه در اين بخش فعاليت كنم

amin1softco
پنج شنبه 20 اسفند 1388, 08:17 صبح
سلام;خسته نباشيد
من ميخوام كه در اين بخش فعاليت كنم
دوست من شما به تمرین های زیر جواب بده:
برنامه ایی که دو تا عدد رو از کاربر بگیره و با هم جمع کنه و در خروجی چاپ کنه؟
بدون استفاده از عملگر جمع جمع دوتا عدد را پیاده کن؟
برنامه ایی که مقدار لگاریتم (در هر مبنایی) یک عدد را بدون استفاده از سر فایل math بدست بیاره؟
برنامه ایی که رمز گذاری فایل های jpg یا gif را بتونه ترجمه کنه؟
برنامه ایی که نام پوشه را تغییر بده؟
برنامه ایی که ساعت سیستم را تغییر بده؟
برنامه یی که با پورت های کامپیوتر ارتباط برقرار کنه ؟
یک مفسر ساده بنویس؟

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

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

Arcsinos
دوشنبه 24 اسفند 1388, 11:45 صبح
سلام
چیزه سختی نیست که . این دستور مکان نما رو به خط بعدی منتقل میکنه و endl="\n" .

cout<<"mahdi\n"<<"mahdi";
خروجی :
mahdi
mahdi
cout<<"mahdi"<<endl<<"mahdi"<<"mahdi";
خروجی :
mahdi
mahdimahdi

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

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



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

sherlukholmz
سه شنبه 03 فروردین 1389, 17:34 عصر
خوب، کدوم سوالا جواب داده نشده؟؟؟

tactical
پنج شنبه 05 فروردین 1389, 19:26 عصر
یکی بیاد اینو حل کنه

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

مثلا

1 2 3 4 5 6 7

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

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

amin1softco
پنج شنبه 05 فروردین 1389, 21:04 عصر
این سوال شما یک اشکال داره اون اینه که باید همیشه در یک جهت اسلحه جابه جا بشه و راه حلشم این که یک لیست پیوندی حلقوی می خواد که باید گره هاش رو یکی در میان حذف کنیم گرهی که در آخر کار باقی می مونه جواب سواله

tactical
پنج شنبه 05 فروردین 1389, 22:53 عصر
چون من تازه من با ++c کار می کنم جوابتون زیاد باسم روشن نبود اگه یه راه حل ساده دارید ارائه بدید ممنونتون میشم یا به همین روش یا روشی دیگه حل کنید اینجا قرار بدید :قلب:

amin1softco
جمعه 06 فروردین 1389, 00:35 صبح
خوب چه بهتر شما بهتره خودت اول یک کدی بنویسی بزاری اینجا تا با هم دیگه اصلاحش کنیم که خلاف قوانین سایت هم نباشه:تشویق:

#Elahe#
جمعه 06 فروردین 1389, 03:29 صبح
یکی بیاد اینو حل کنه

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

مثلا

1 2 3 4 5 6 7

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

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

amin1softco
جمعه 06 فروردین 1389, 03:51 صبح
#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
جمعه 06 فروردین 1389, 12:51 عصر
امین آقا بهتره سوالاتی رو که برای نوروز در نظر گرفته بودی، در این بخش بذاری.

amin1softco
جمعه 06 فروردین 1389, 13:50 عصر
من حرفی ندارم که سوالات رو اینجا بیان کنم............

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
جمعه 06 فروردین 1389, 15:50 عصر
چون من تازه من با ++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
شنبه 07 فروردین 1389, 11:18 صبح
حالا یعنی خودم جواب بدم به سوال ها خوب یکی یک حرکتی بکنه....؟ بابا 4 خط فکر کنید انشا می خواهید بنویسید.........

davood59
یک شنبه 08 فروردین 1389, 01:00 صبح
سلام امین آقا، من تازه تمرینات رو دیدم و چندتاییش رو سریع نوشتم، بقیه رو هم تو اولین فرصت می نویسم.
کد 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
یک شنبه 08 فروردین 1389, 09:38 صبح
امین جان سوال 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
یک شنبه 08 فروردین 1389, 10:54 صبح
شاید مسئله 2 به مسئله 1 مربوط باشه .....

amin1softco
یک شنبه 08 فروردین 1389, 13:49 عصر
ببین سوال یک رو می شه اینجوری جواب داد


#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
یک شنبه 08 فروردین 1389, 17:41 عصر
یه سوال دوستان؟
این c++ و حتی c به چه دردی می خوره؟؟
منظورم اینکه موارد استفادش جز برنامه نویسی برای رباتیک و این صفحات تبلیغاتی که مملو از LED هست (اسمش رو فراموش کردم)، دیگه چه کاربردی داره؟؟؟
من یه چندتا تمرین کوچیک دانشگاهی داشتم ، اگه پیدا کردم براتون اینجا آپ می کنم .
البته تمرین های من C/C++ تحت داس هست؟! البته فکر می کنم شما هم با همون کار می کنید؟!

amin1softco
یک شنبه 08 فروردین 1389, 18:16 عصر
والا تو دانشگاه می گفتن سیستم عامل رو با سی نوشتن بیشتر بازی ها رو با این زبان می نویسند و کلاً دامنه سی وسیعه و زبان سی بنیاد خیلی از چیز هایی هست که ما الان داریم مشاهده می کنیم. در کل بچه خوبی نیست و زیاد گیر الکی میده سی شارپ راحت تره بچه خوبیه :چشمک:

davood59
دوشنبه 09 فروردین 1389, 13:05 عصر
آره امین جان،
من هم پیش از راهنمایی شما به همین روش پی برده بودم.
هرچی فکر می کنم می بینم که باید با case پیاده سازی بشه و راه دیگه ای به ذهنم نمیرسه.
بازهم از راهنماییت ممنونم.

sadegh-hut
دوشنبه 09 فروردین 1389, 16:52 عصر
يكي نمي تونه سوال 2 كه amin1softco گفته حل كنه:متعجب::متعجب:
آخه سوالش يجوريه يعني بايد يكي يكي براي هركودوم آرايه اي خاص تعريف كنيم ؟؟؟؟؟؟:متفکر::متفکر::متفکر: اين جوري كه نميشه خوب :عصبانی++::عصبانی++:

amin1softco
دوشنبه 09 فروردین 1389, 19:22 عصر
معلومه یکمی سخته اما اگه بتونی بنویسیش در آینده می تونی یک تلفن گویا طراحی کنی :چشمک:

sorroshsaket
دوشنبه 09 فروردین 1389, 20:46 عصر
سلام دوستان
من یه سوال تو یه کتا ب انگلیسی برای c++ خوندم توش نوشته بود برنامه دو گزاره مثل این دو تا بگیره و با هم مقایسه کنه و بگه یکی ان یا نه من یه چیزایی نوشتم ولی چون تا به حال از bool استفاده نکردم نمی دونم چی کار باید بکنم یه کمک مختصری می خواستم ممنون می شم
(a^b) `(aub)
به زبان c++

amin1softco
دوشنبه 09 فروردین 1389, 22:14 عصر
شما اشتراک و اجتماع و اینها رو با چی می خواهید پیاده سازی کنید در سی پلاس پلاس میشه از سر فایل های وکتور و الگوریتم استفاده کرد. مثالی از اشتراک دو مجموعه در 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
سه شنبه 10 فروردین 1389, 01:37 صبح
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
سه شنبه 10 فروردین 1389, 02:11 صبح
امین آقا من سوال یک رو بدون استفاده و نگاه کردن به الگوریتم شما نوشتم.
لطفا اگه نظری دارید اعلام کنید.
ضمناً یک مشکل کوچیک هم هست! نمیشه علامت + رو که در انتهای عبارت درج میشه حذفش کرد؟



#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
سه شنبه 10 فروردین 1389, 02:46 صبح
همچنین در خصوص case یک مثال ساده میشه بذارید؟


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

amin1softco
سه شنبه 10 فروردین 1389, 02:50 صبح
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
سه شنبه 10 فروردین 1389, 03:22 صبح
مشکل من اینه که من نمی دونم این گزاره ها رو چه نوعی تعریف کنم
ضمنا من تازه کارم
وقتی مثلا
aاجتماعb رووارد می کنم خوب باید تو یه نوع متغییر ذخیره شه؟

Nima_NF
سه شنبه 10 فروردین 1389, 03:39 صبح
مشکل من اینه که من نمی دونم این گزاره ها رو چه نوعی تعریف کنم
ضمنا من تازه کارم
وقتی مثلا
aاجتماعb رووارد می کنم خوب باید تو یه نوع متغییر ذخیره شه؟

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

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

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

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


اگر هم می خواهید به شکل حرفه ای تر برنامه بنویسید، در C++ از کلاس Set استفاده کنید که در آن، مجموعه تعریف می کنید و می توانید مقایسه انجام دهید و تغییرات لازم را بدون لیست پیوندی یا آرایه انجام دهید.
برای مثال این لینک (http://msdn.microsoft.com/en-us/library/2yy2xd0h%28VS.80%29.aspx)

sorroshsaket
سه شنبه 10 فروردین 1389, 04:07 صبح
برای مثال عبارت زیر باید در چه نوع متغیری ذخیره شه
مقادیر مجموعه ها عدد صحیح است
http://upload.wikimedia.org/math/9/e/8/9e80587fe0cbae4645a6308d249908b8.png

amin1softco
سه شنبه 10 فروردین 1389, 11:14 صبح
برای مثال عبارت زیر باید در چه نوع متغیری ذخیره شه
مقادیر مجموعه ها عدد صحیح است
http://upload.wikimedia.org/math/9/e/8/9e80587fe0cbae4645a6308d249908b8.png
ببین شما وقتی که اجتماع و اشتراک رو داشته باشین هر طرف تساوی رو می تونید در یک آرایه نگه داری کنید و سپس با یک مقایسه از نوع 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
سه شنبه 10 فروردین 1389, 18:38 عصر
سلام امین جان،
بابت لینک ارسالی فوق العاده مفیدت ممنونم.
ببین من برنامه 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
سه شنبه 10 فروردین 1389, 19:26 عصر
درسته همینه راهش فقط ببین دو رقم آخر رو درست بر نمی گردونه مثلا این عدد رو باید بنویسه 1111
hezar o sado o yazdah
ولی برنامه می نویسه
hezar o sado o dah o yek
ولی خیلی خوبه:تشویق:

Arcsinos
چهارشنبه 11 فروردین 1389, 13:58 عصر
سلام زحمت نکشید اینم برنامه :

#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
چهارشنبه 11 فروردین 1389, 18:12 عصر
درسته جواب.....

sadegh-hut
چهارشنبه 11 فروردین 1389, 21:55 عصر
:کف::کف::کف:.........Aaaaaaaaaaaaa

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

Arcsinos
پنج شنبه 12 فروردین 1389, 01:01 صبح
آره
مثل اینکه شک داری ؟:لبخند:
ببین من دنیال یه سوالم که تا به حال کسی حلش نکرده اگه دارید بذارید تا استفاده کنیم البته سوالی باشه که جواب داشته باشه . ممنون میشم .

amin1softco
پنج شنبه 12 فروردین 1389, 02:27 صبح
ببین من دنیال یه سوالم که تا به حال کسی حلش نکرده اگه دارید بذارید تا استفاده کنیم البته سوالی باشه که جواب داشته باشه . ممنون میشم .

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

Arcsinos
پنج شنبه 12 فروردین 1389, 19:26 عصر
برنامه ایی بنویسید که جذر یک اعداد بزرگ(10 رقمی و یا بیشتر) را شبیه سازی کند؟
منظورت رو درست متوجه نشدم . الان که جدر تمامی اعداد رو با sqrt میشه گرفت من با متغیر float تونستم جدر یه عدد 12 رقمی رو بدست بیارم . باز میگم فکر کنم منظورت رو درست متوجه نشدم اگه سوالتو بهتر بپرسی ممنون میشم .

amin1softco
جمعه 13 فروردین 1389, 00:03 صبح
وقتی حرف از شبیه سازی هست یعنی اینکه بدون سرفایل math باید اینکار انجام بشه

Arcsinos
جمعه 13 فروردین 1389, 13:11 عصر
خب اینو از اول میگفتی دیگه :
این برنامه جذر اعداد رو میگیره . من برای 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
جمعه 13 فروردین 1389, 14:00 عصر
درسته....
برنامه ایی بنویسید که یک جدول ضرب 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
جمعه 13 فروردین 1389, 15:12 عصر
جواب جدول ضرب : فکر کنم اشتباهه و لی من بهتر ازین نمی تونم .

#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
جمعه 13 فروردین 1389, 15:30 عصر
ما چند تا انتخاب داریم ؟ یکی یا سه تا ؟ منظورم اینکه کاربر فقط یه بار و یه ورودی وارد میکنه بعد برنامه سه تا گوی از اون 7 تا گوی باقی مانده انتخاب مبکنه و به کاربر نشون میده درسته یا من بد متوجه شدم .

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

Arcsinos
جمعه 13 فروردین 1389, 19:19 عصر
ببینید اگه بر فرض جواب رو هم بتونیم بدست بیاریم برای یه حالته رندومه . یعنی اون کل اتفاقات رو بررسی نمیکنه . من یه چرت و پرتایی که البته خیلی خنده داره رو نوشتم برای سوال 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
جمعه 13 فروردین 1389, 20:44 عصر
خودمونیم ها چقدرم سوال ساده ایی بوده گفته ما می خواهیم سه توپ از بین 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
شنبه 14 فروردین 1389, 09:36 صبح
برنامه ایی بنویسید که حرکت یک موج را در مد تکست بوسیله کارکتر ستاره پیاده سازی کند یعنی


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

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

sorroshsaket
شنبه 14 فروردین 1389, 10:05 صبح
سوالات خوبی بودن سوال 3 رو نفهمیدم بقیه سوال ها رو حل کردم ولی چون بقیه نوشتن و دیر کردم نمی ذارم لطفا یه سری سوال دیگه مطرح کنید

amin1softco
شنبه 14 فروردین 1389, 10:35 صبح
هنوز سوال 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
شنبه 14 فروردین 1389, 11:44 صبح
اینم یک پازل به قبل و بعد قطعه کد زیر دستوراتی اضافه کنید تا بدون خطا کامپایل شود


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

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

amin1softco
شنبه 14 فروردین 1389, 12:27 عصر
نگفتم که کلا حذفش کن
باید بشه از تابع استفاده کرد:تشویق:

Negative_Se7en
شنبه 14 فروردین 1389, 12:32 عصر
سلام.

int yek;
void ta(){
yek = 1;
}
void main(){ta();}

aminghaderi
شنبه 14 فروردین 1389, 12:47 عصر
چند تا برنامه کوچک که با مد گرافیک پیاده سازی شده.
دوستان برنامه هایی که گفته بودم پیدا نکردم ولی چند تا تمرین پیدا کردم با سورس گفتم بزارم شاید مفید باشه.
سطح برنامه ها : مبتدی
مد: گرافیک

موفق باشید.

aminghaderi
شنبه 14 فروردین 1389, 13:31 عصر
توابع گرافیک 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
شنبه 14 فروردین 1389, 14:21 عصر
سلام.

int yek;
void ta(){
yek = 1;
}
void main(){ta();}
درسته.... این یک راهشه در ضمن مد گرافیک داس که BGI باشه دورانش سر رسیده ولی برای استفاده از این ها در محیط ویژوال 2008 میشه از کتابخانه هایی که نوشتند و کامل نیست استفاده کرد یک نمونشو ضمیمه کردم باید محتویاتشو به پوشه include کامپایلر اضافه کنید و graphic2.h را اول برنامه تون include کنید.

sorroshsaket
دوشنبه 16 فروردین 1389, 12:24 عصر
سلام دوستان
مي خوام يه راهنمايي بكنين مي خوام يه رشته به صورت زير بگيرم
http://upload.wikimedia.org/math/9/e/8/9e80587fe0cbae4645a6308d249908b8.png
بعد مي خوام با استفاده از درخت ها يا هر روش ديگه اي (البته به درخت ها علاقه مندم) اين گزاره رو جدا كنم و بعد اجتماع و اشتراك و .... رو حساب كنم
راهي رو لطفا پيش پام بزارين كه راحت تره دفعه قبل يه سوال پرسيم بيشتر گيج شدم تا راهنمايي
خيلي ممنون

s.farahani
دوشنبه 16 فروردین 1389, 12:56 عصر
سلام دوستان.
برنامه ای بنویسید که با تابع بازگشتی + * )( را محاسبه کند؟

fakhradin
سه شنبه 17 فروردین 1389, 20:38 عصر
سلام
با استفاده از چه چیزی اینو حل کنیم با استفاده از گرافیک؟ یا محیط متنی ؟
سلام به دوسته عزیز راستش برای این که چنین برنامه ای را بنویسی بهتره ار گرافیک استفاده کنی

ebrahim1988
سه شنبه 17 فروردین 1389, 22:51 عصر
سلام
اكه ما هم بخوايم شركت كنيم بايد جكار كنيم؟
برنامه اي كه قراره بنويسيم جيه؟(البته من حرفه اي نيستما)ولي دوس دارم سعي خودمو كنم

baghozi
چهارشنبه 18 فروردین 1389, 14:53 عصر
سلام

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

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

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

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

baghozi
چهارشنبه 18 فروردین 1389, 14:55 عصر
اینم یکی دیگه

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

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

amin1softco
چهارشنبه 18 فروردین 1389, 19:58 عصر
اینم یکی دیگه

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

برنامه ای بنویسید که نام فایلی را گرفته و آنرا 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
چهارشنبه 18 فروردین 1389, 20:19 عصر
اینم یک مثال خوب از کپری و آن کمپرس در توربو سی

ebrahim1988
پنج شنبه 19 فروردین 1389, 12:22 عصر
[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();
}

شیلانینوایی
شنبه 21 فروردین 1389, 23:45 عصر
لطفابگوییدکلاسهای ازنوع interfaceچهگونه ایجاد میشوند؟با تشکر

sorroshsaket
دوشنبه 23 فروردین 1389, 13:25 عصر
لطفا یه سری برنامه جدید بزارین تا حل کنیم
خسته شدم

ebrahim1988
دوشنبه 23 فروردین 1389, 18:27 عصر
سلام.
3 تا تمرین زیر از درس "برنامه سازی(نویسی) کامپیوتر " را میخواستم مثل تمرین آخری حل کنید. متشکرم. زبان c ...

اگه عکس تمرین (1) معلوم نبود همینه : x2 + 2x +1 / x3-2x-9
من که هیچی از برنامه نویسی حالیم نیست میدونم که اینا سوال نیستن
یه سوال درست و حسابی بپرسین تو رو خدا

djsohrab2007
سه شنبه 24 فروردین 1389, 09:16 صبح
سلام

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

shabgard2oo9
سه شنبه 24 فروردین 1389, 12:48 عصر
حالا خوبه گفتن تازه شروع كنيم شمارفتي مستقيما سراغ گرافيك

djsohrab2007
چهارشنبه 25 فروردین 1389, 07:33 صبح
salam
man vahede daneshgahime C++‎ vali aslan balad nistam khaheshan komak:افسرده::گریه::ناراحت:
یک سری به سایت www.cpp-coder.com بزنی خوبه! از صفر داره درس میده

Salar Ashgi
سه شنبه 07 اردیبهشت 1389, 20:10 عصر
*** یک یادآوری و تذکر به تمام کاربرانی که در این تاپیک پست ارسال می کنند ***

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

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

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

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

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

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

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

ali_system
جمعه 10 اردیبهشت 1389, 13:28 عصر
سلام دوستان
حاصل عبارت پسوندی عبارت زیر برابر 2 هست چطوری میتونم برنامه ای بنویسم که اونها رو دریافت کنم !
/-3.6*3.2
خروجی =2

R_ahmadi1515
شنبه 11 اردیبهشت 1389, 19:22 عصر
سلام
من میخوام که یک کلاس بسازم برا مشخصات فردی
و به یک تابع هم نیاز دارم که بتونه سن شخص رو از روی تاریخ تولد حساب کنه
به صورت روز/ماه/سال
فرمولشو لطفا اگه دارین

مرسی

meryjooni
شنبه 11 اردیبهشت 1389, 19:59 عصر
سلام دوستان
حاصل عبارت پسوندی عبارت زیر برابر 2 هست چطوری میتونم برنامه ای بنویسم که اونها رو دریافت کنم !
/-3.6*3.2
خروجی =2

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

+5*23

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

Cool.X90
یک شنبه 12 اردیبهشت 1389, 17:10 عصر
سلام دوستان
میخوام ببینم کسی کد برنامه ای نداره که طول ، عرض و ارتفاع رو بگیره و حجم رو حساب کنه
نمیدونم باید چطوری بنویسم خیلی برام سخته خواستم برام یک آموزش بشه
من الان در مقطع راهنمایی هستم دوست دارم از الان با این زبان آشنا بشم
ممنون

ebrahim1988
دوشنبه 13 اردیبهشت 1389, 22:54 عصر
برو شناسنامت رو بیار اگه راست بگی من خودم دربست در خدمتتم

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

abejary
سه شنبه 14 اردیبهشت 1389, 16:57 عصر
سلام
میشه لطفا بگی پشته چییه عزیز.

R_ahmadi1515
سه شنبه 14 اردیبهشت 1389, 17:37 عصر
سلام دوستان

یه کلاس برای تاریخ (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
پنج شنبه 16 اردیبهشت 1389, 12:06 عصر
با عرض سلام خدمت اساتید محترم کسی هست در مورد این سئوال به من کمک کنه
فرض کنید جنگلی با بیست ردیف بیستایی درخت در هر مکان درخت می تواند درخت باشد یا نباشد به این جنگل قواعدی حاکم است به نحوی که چیدمان درختان در هر سال با هم متفاوت است تغییرات سالیانه با قواعد زیر مشخص می گردد
1.اگر اطراف درختی بیش ازچهار درخت وجود داشت باشد ان درخت در سال اینده نخواهد بود
2.اگر اطراف مکانی خالی درختی کمتر از چهار درخت وجود داشته با شد در سال آینده در خت خواهد روئید
در سال صفر تنها در قطر اصلی . فرعی ودر ستر های مضرب سه وستون های مضرب سه درخت وجود دارد
جنگل را تا 50 سال شبیه سازی کنید

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

maryam126
یک شنبه 19 اردیبهشت 1389, 19:57 عصر
برنامه ای برای تاریخ وساعت میخوام بنویسم که روز/ ماه/سال داشته باشه خودم ساعت رونوشتم اما نمیدونم کجابایدتاریخ توی برنامه جابدم؟میشه واسم توضیح بدید

mohsensaghafi
دوشنبه 20 اردیبهشت 1389, 01:31 صبح
برنامه ای برای تاریخ وساعت میخوام بنویسم که روز/ ماه/سال داشته باشه خودم ساعت رونوشتم اما نمیدونم کجابایدتاریخ توی برنامه جابدم؟میشه واسم توضیح بدید

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

saber187518
دوشنبه 20 اردیبهشت 1389, 13:00 عصر
این برنامه قراره یک فرودگاه رو مدیریت کنه البته این رو برا یکی از دانشجوها نوشتم.
سطحش خیلی پایینه ولی بازم برای بعضی ها که دوست دارن یاد بگیرن خوبه.. بد نیست.


#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
دوشنبه 20 اردیبهشت 1389, 13:08 عصر
برنامه تمام زیر مجموعه های یک مجموعه برای 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
دوشنبه 20 اردیبهشت 1389, 13:45 عصر
برنامه ای برای نجام برخی اعمال بر روی لیست پیوندی


#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
دوشنبه 20 اردیبهشت 1389, 13:49 عصر
برنامه ای برای تبدیل اعداد از مبنای 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
پنج شنبه 23 اردیبهشت 1389, 14:52 عصر
دوستان سلام
(زبان C++‎)
اعضای یک آرابه دو بعدی که تعداد آن را کاربر مشخص می کند گرفته و مجموع آرایه ها را به صورت بازگشتی محاسبه کند.
(ممنون میشم پاسخ بدین)

mohsensaghafi
جمعه 24 اردیبهشت 1389, 21:47 عصر
سلام دوست عزیز.
می تونی به این روش انجامش بدی. اما این یه روش یه مقدار پیچیدس. یه روش راحت تر دیگه هم داره. من اون روش راحت تر رو گذاشتم تا خودت بش برسی.

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.ƒ
جمعه 24 اردیبهشت 1389, 23:45 عصر
سلام دوستان من تازه يه كتاب ++C‌ خريدم و يه بار خوندمش اما هيچي ياد نگرفتم الان ميخوام يه برنامه بنويسم كه كار يك دفترچه تلفن رو انجام بده يعني بشه اطلاعات رو بهش وارد كرد و يا اطلاعات قبلي رو ويرايش كرد و يا حذف كرد همچنين بشه اطلاعات رو بر اساس شماره رديف يا شماره تلفن و يا نام جستجو كرد و همه اين شماره تلفن ها و نام اشخاص رو در يك فايل txt ذخيره كنه بدون اينكه قاطي بشن.
خواهش ميكنم يهويي يه كپي ور ندارين بزارين بگين اين برنامه برو حالشو ببر اصلا به هيچ وجه اين كار رو نكنيد :عصبانی: راستش خودم ميخوام كار كنم ياد بگيرم فقط اگه ميشه مرحله به مرحله راهنماييم كنيد.
تا اينجاش رو خودم ميدونم كه بايد از آرايه استفاده كنم ولي نميدونم چطور.
در ضمن ورژن ++C كه كار ميكنم 5.02 هست.

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

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

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


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

saeid6994
جمعه 31 اردیبهشت 1389, 20:20 عصر
سلام
برنامه اي كه يك رشته و 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
شنبه 01 خرداد 1389, 08:37 صبح
سلام
برنامه اي كه يك رشته و 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;
}
سلام دوست عزیز.
اولین مشکل شما اینه که در رشته هایی که می سازید، مقدار NULL که نشاندهنده آخر رشته هست رو کپی نمی کنید. در این حالت رشته شما از نظر طول دچار اشکال می شه و شما نمی تونید این رشته رو با رشته های دیگه مقایسه کنید.
مشکل دوم هم اینه که برنامه شما به اولین کارکتر مشترک که می رسه به اندازه طول رشته اول کپی می کنه و بعد مقایسه می کنه. اما اگه این رشته با رشته اول مساوی نباشه دریگه رشته های دیگه رو چک نمی کنه.
مشکل NULL رو که حل کنی، مشکلات دیگه خودشون رو نشون می دن. یه دسترسی غیر مجاز به حافظه هم داری که بعد از حل NULL خودشو نشون می ده.
این ها رو اصلاح کن، اگر باز هم جایی مشکل داشتی بگو.
یا علی!

mohsensaghafi
شنبه 01 خرداد 1389, 08:39 صبح
من دانشجو رشته نرم افزار ،ترم دوم هستم.
دوستان این پروژه به نظرم خیلی جالبه!
وقتی خوندمش ،علاقه مند شدم که بنویسم. میشه در ابتدا راهنماییم کنید؟؟؟؟؟؟؟؟؟؟؟
برنامه در ابتدا با استفاده از چه دستوری یه عدد 5 رقمی تولید میکنه؟

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

baghozi
یک شنبه 02 خرداد 1389, 15:37 عصر
سلام دوستان

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

baghozi
یک شنبه 02 خرداد 1389, 15:39 عصر
اینم یه تمرین دیگه

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

baghozi
سه شنبه 04 خرداد 1389, 11:13 صبح
چرا دیگه کسی در این تایپک مطلب نمیذاره؟

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

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

ممنون

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

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

ممنون

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

pourkafi
چهارشنبه 05 خرداد 1389, 13:03 عصر
برنامه ای بنویسید که یک عدد در مبنای 2 بگیرد و به مبنای 10 تبدیل کند

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



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

mahdi_barani68
چهارشنبه 05 خرداد 1389, 20:39 عصر
سلام دوستان
در جواب دوست عزیز آقای خلیلی مهدی باید بگم من الین برنامه رو با دو روش نوشتم اگه می خوای ایمیل بزن تا برات بفرستم

saber187518
چهارشنبه 05 خرداد 1389, 21:09 عصر
سلام دوستان یک برنامه گرافیکی که یک خونه میسازه و نام و نام خانوادگی شما رو دور اون خونه میچرخونه.
فقط کافیه به جای 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
یک شنبه 09 خرداد 1389, 00:04 صبح
به نام حق
سلام بچه ها
اینطوری که نمیشه که !
حتما باید با آقا نیما مدیر بخش C هماهنگ بشه . تا یه انجمن آموزشی خوب راه اندازی بشه.
که اگه تاپیک اضافی هم داشتیم ایشون حذفشون کنند. این تاپیکم شده مثل بقیه رفع اشکال . چه فرقی کرد؟! :متفکر:
یاعلی

maryshayegh
یک شنبه 09 خرداد 1389, 00:06 صبح
سلام به تمامی دوستان من این تاپیک رو برای دوستانبرنامه نویسیه زبان C++‎‎ زدم و امید واروم کهبرنامه نویسان به زبانC++‎‎ بیان و در این تاپیک مثل تا پیک C فعالیت کنند و یک نفر هم مسولیت آموزش این بخش رو به عهده بگیره.قوانین هم مثل قوانین تاپیک C هست .
با تشکر سید مهدی
سلام بچه ها
اینطوری که نمیشه که !
حتما باید با آقا نیما مدیر بخش C هماهنگ بشه . تا یه انجمن آموزشی خوب راه اندازی بشه.
که اگه تاپیک اضافی هم داشتیم ایشون حذفشون کنند. این تاپیکم شده مثل بقیه رفع اشکال . چه فرقی کرد؟! :متفکر:
یاعلی