پرسش و پاسخ در زبانهای برنامه نویسی C

antengogoli21

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

#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;

class string1
{
public:
int number(char *str,char* str2);

int findstr(char *str,char *str2);

};
int string1::number(char *str,char* str2)
{
char* s;
int i=0;
while (true)
{
s = strstr(str, str2);
if ( s == 0)
break;
else
{
i++;
strcpy(str, s+1);
}
}
return i;
}

int string1::findstr(char str[],char str2[])
{
int i,j,pos=-1;
for(i=0; i<=strlen(str)-strlen(str2); i++)
{
j=i;
while(str[j]==str2[j-i] && str2[j-i])
j++;

if (j-i == strlen(str2))
{
pos = i;
break;
}

}
return(pos+1);
}


int main()
{
char *str;
char *str2;
str=new char[100];
str2=new char [10];
int n=0;
gets(str);
gets(str2);
string1 list;
n=list.number(str,str2);
cout<<n<<endl;

cout << "position: " << list.findstr(str,str2);

return 0;
}

مشکل اینه که توی if نمی ره(if (j-i == strlen(str2))
این برنامم درسا شد فقط همون که فقط یکی از موقعیتهارو میده رو نمیدونم
اگه کسی بلده کمک کنه خواهشا:cry:
 

khanommohandes

عضو جدید
کاربر ممتاز
سلام من بازم به مشکل برخوردم کسی میتونه این برنامه روتوی محیط ویژوال بنویسه؟:smile:
یک کلاس جهت ساختمان باخواص تعدادطبقات(باقابلیت کنترل تنظیم خاصیت)تعداداتاق وسن بنا(حداقل0وحداکـثر200)تعریف کنیدسپس کلاس جدیدی مشتق ازکلاس فوق جهت ساختمان اداری باخواص ادرس وقیمت تعریف نمایید
 

khanommohandes

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

سلام من بازم به مشکل برخوردم کسی میتونه این برنامه روتوی محیط ویژوال بنویسه؟:smile:
یک کلاس جهت ساختمان باخواص تعدادطبقات(باقابلیت کنترل تنظیم خاصیت)تعداداتاق وسن بنا(حداقل0وحداکـثر200)تعریف کنیدسپس کلاس جدیدی مشتق ازکلاس فوق جهت ساختمان اداری باخواص ادرس وقیمت تعریف نمایید
 

mohamad_ds

عضو جدید
سلام
چرا 32 را در ابتدا تعریف کرده در صورتی در اخر فرمول قرار داره؟
photo.jpg
photo (2).jpg
 

ahhe

عضو جدید
چند سوال در برنامه نویسی c++

چند سوال در برنامه نویسی c++

سلام ، من چندتا سوال ساده داشتم: 1) حداکثر در یک خط چند کلمه میشه نوشت و اگه یک فرمول چندین خط بود باید چجوری خط ها را به هم ربط بدیم؟ 2) برای ایجاد بردار و ماتریس میشه از پرانتز (2)vec به جای براکت [2]vec استفاده کرد؟ 3) با چه دستوری میشه از برنامه خارج شد؟
 

aseman23

عضو جدید
سلام من تازه برنامه نوشتن و شروع کردم..... حالا میخوام ++c و کار کنم
ویندوز سیستمم 7 شنیدم حتمن باید xp باشه تا ++c نصب بشه
خواستم ببینم راهی نیست که نخوام از xp استفاده کنم؟
ممنون
 

♥@SH!M♥

کاربر حرفه ای
کاربر ممتاز
سلام من تازه برنامه نوشتن و شروع کردم..... حالا میخوام ++c و کار کنم
ویندوز سیستمم 7 شنیدم حتمن باید xp باشه تا ++c نصب بشه
خواستم ببینم راهی نیست که نخوام از xp استفاده کنم؟
ممنون

نه بابا کی گفته!!!!!!!!!!!!!!!!!!!

چرا نشه؟؟
شما می تونین از microsoft Visual c++ سا حتی برلند سی پلاس پلاس استفاده کنین که جدید تره!

ولی میدونم حتی Turbo هم واسه همه سیستم عامل ها سازگاره!!!!!!!
 

ebiramrb

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

zibaabdy

عضو
سلام دوستان عزیز
کسی میتونه کمکم کنه
این سوالارو بایدبا زبانC++ جواب بدم روشی ک رفتم درسته ولی جوابایی ک توشه اشتباه هستن لطفا کمکم کنید
ممنونم ازتون
[h=2]http://www.www.www.iran-eng.ir/images/icons/icon1.png سوالات[/h]
 

alishahi.h

عضو جدید
سلام دوستان عزیز
کسی میتونه کمکم کنه
این سوالارو بایدبا زبانC++ جواب بدم روشی ک رفتم درسته ولی جوابایی ک توشه اشتباه هستن لطفا کمکم کنید
ممنونم ازتون
http://www.www.www.iran-eng.ir/images/icons/icon1.png سوالات

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

Zahra F.J

عضو جدید
سلام.لطفا ب سوالم جواب بدید.
برنامه ای ب زبان ++ Dev cبنویسید که nعدد(تعداد دانش آموزان)و k(تعداد درس)را از کاربر گرفته و کارنامه صادر کند که نام دانش اموز نام درس و نمره درس و معدل را در خروجی چاپ کند.
ممنون میشم اگه سریع جواب بدید.
 

alishahi.h

عضو جدید
سلام.لطفا ب سوالم جواب بدید.
برنامه ای ب زبان ++ Dev cبنویسید که nعدد(تعداد دانش آموزان)و k(تعداد درس)را از کاربر گرفته و کارنامه صادر کند که نام دانش اموز نام درس و نمره درس و معدل را در خروجی چاپ کند.
ممنون میشم اگه سریع جواب بدید.
سلام درخدمت شما.
دانلود
 

behnam5670

عضو جدید
کاربر ممتاز
سلام.لطفا ب سوالم جواب بدید.
برنامه ای ب زبان ++ Dev cبنویسید که nعدد(تعداد دانش آموزان)و k(تعداد درس)را از کاربر گرفته و کارنامه صادر کند که نام دانش اموز نام درس و نمره درس و معدل را در خروجی چاپ کند.
ممنون میشم اگه سریع جواب بدید.
دوست عزیز اینجا باید اشکالاتتون رو بپرسید نه اینکه تکلیف شبتون رو بدید بنویسند.

ضمن تشکر از زحمتی که می‌کشید، اینطوری به صورت غیرمستقیم ظلم بزرگی در حق این دوستان که یه روزی اسم "مهندس کامپیوتر" رو یدک خواهند کشید ولی از نوشتن دو خط برنامه عاجز هستند، می‌کنید. اجازه بدید خودشون اقلاً کامپایلرش رو نصب کنند و دو خط از برنامه رو بنویسند، بعد اگر مشکل داشتند برنامه‌شون رو اینجا بذارند.
 

atiasal11

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

برنامه ای که n جمله از سری فیبوناچی را چاپ کند
#include <iostream.h>
#include <conio.h>
void main()
{
void fib(int m)
int n;
cout << "input n:";
cin >> n;
fib (n);
getch();
void fib (int m)
{
int a=1 , b=1 , c;
cout << a << " " <<b;
for (int i=1; i<=n; i++)
{
c=a+b;
cout<< c;
a=b;
b=c;
}


حالا اجرا که میکنم ارور میده انگاری اشتباهه
 

behnam5670

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

برنامه ای که n جمله از سری فیبوناچی را چاپ کند
#include <iostream.h>
#include <conio.h>
void main()
{
void fib(int m)
int n;
cout << "input n:";
cin >> n;
fib (n);
getch();
void fib (int m)
{
int a=1 , b=1 , c;
cout << a << " " <<b;
for (int i=1; i<=n; i++)
{
c=a+b;
cout<< c;
a=b;
b=c;
}


حالا اجرا که میکنم ارور میده انگاری اشتباهه

تابع fib داخل تابع main تعریف شده که اشتباهه. همه‌ی توابع باید قبل از main نوشته یا لااقل تعریف بشن. تعریف تابع یعنی اینکه شما بیای بنویسی ;(void fib (int m ولی داخل تابع رو ننویسی. اینطوری برنامه میفهمه که یه تابعی به اسم fib هست که بعداً نوشته شده.
الان شما اون خط مربوط به
void fib(int m) رو باید پاک کنید و قبل از main بنویسید و سپس main رو کامل ببندید و کل تعریف تابع fib (شامل بدنه‌ی تابع) رو بعد از main بیارید. یا اینکه میتونید کل تابع fib رو قبل از main بیارید و دیگه نیازی نباشه که یه بار تعریف کنید و یه بار بیارید.
معمولا اینطوری میکنند که قبل از main همه ی توابع رو تعریف میکنند و بعد از main پیاده‌سازی توابع رو مینویسند.

اینکه تابع به چه دردی میخوره. فرض کنید شما جاهای مختلف یه برنامه، از ورودی عدد میگیرید و فاکتوریل اون عدد رو باید حساب کنید. اینطوری اگه 10 بار ورودی بگیرید مجبورید 10 بار کد مربوط به محاسبه‌ی فاکتوریل رو توو برنامه تون بنویسید ولی روش مناسبش اینه که یه بار تابعش رو بنویسید و بعداً با استفاده از تابع، فاکتوریل اون عددها رو حساب کنید. یعنی باعث میشه یه کد رو چند بار تکرار نکنید.
ضمناً حتی اگه شما فقط یه بار لازم باشه مثلاً فاکتوریل یه عدد رو حساب کنید، باز خوبه که یه تابع بنویسید (هر چند که فقط یک بار استفاده بشه). چون اینطوری کدتون خواناتر میشه و راحت‌تر میتونید کدتون رو رفع اشکال کنید. متغیرها رو هم با هم قاطی نمیکنید. مثلاً برای همین محاسبه‌ی فاکتوریل لازمه که شما چند تا متغیر برای حلقه و temp و ... تعریف کنید که ممکنه با متغیرهای دیگه هم اسم بشه یا اشتباه بگیرید و ...، ولی داخل تابع میتونید متغیرهایی رو تعریف کنید که داخل تابع‌های دیگه یا داخل main هستند (همنام هستند) بدون اینکه مشکلی پیش بیاد.
 

alishahi.h

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


ضمن تشکر از زحمتی که می‌کشید، اینطوری به صورت غیرمستقیم ظلم بزرگی در حق این دوستان که یه روزی اسم "مهندس کامپیوتر" رو یدک خواهند کشید ولی از نوشتن دو خط برنامه عاجز هستند، می‌کنید. اجازه بدید خودشون اقلاً کامپایلرش رو نصب کنند و دو خط از برنامه رو بنویسند، بعد اگر مشکل داشتند برنامه‌شون رو اینجا بذارند.

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

hoseng

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


ضمن تشکر از زحمتی که می‌کشید، اینطوری به صورت غیرمستقیم ظلم بزرگی در حق این دوستان که یه روزی اسم "مهندس کامپیوتر" رو یدک خواهند کشید ولی از نوشتن دو خط برنامه عاجز هستند، می‌کنید. اجازه بدید خودشون اقلاً کامپایلرش رو نصب کنند و دو خط از برنامه رو بنویسند، بعد اگر مشکل داشتند برنامه‌شون رو اینجا بذارند.
بیش از حد باهاتون موافقم من میگم آدم نباید از کمک کردن دریغ کنه ولی بحثه حاضر و آماده بودن یه چیز دیگس
بنده خدا DEV C++ رو یه زبان میدونه و فرق بین کامپایلر و زبان برنامه نویسی رو نمیدونن متاسفم

سلام به همه دوستان خوب برنامه نویس
کمک
استادمون درباره توابع درس داد ولی من هیچی نفهمیدم
چرا از تابع استفاده میکنیم و چرا در برنامه فرا خوانی میشه
ببینید شما اگه اشتباه نکنم ترم های اول هستین و مطمئننا تازه کار تو برنامه نویسی و بذارین یه امیدواری همین ابتدا بهتون بدم که این حالتتون کاملا طبیعیه و به مرور زمان همه چیز براتون بدیهی میشه به شرط اینکه به فیلدتون علاقه داشته باشین
و اما بحث توابع:
شما یاد گرفتید که برنامتون رو به صورت مونوتیک یا یکپارچه بنویسید. یعنی هر کاری که میخواین انجام بدین دستورات مطابق با اون رو پشت سر هم می نویسید و اجرا میشن حالا این خوبه؟بده؟ اگه بده چه اشکالایی باعث بد بودنشون شده؟؟؟
1-خوانائیه کدتون میاد پایین->یعنی چی؟ ممکنه شما یه برنامه رو کلی تلاش کردین نوشتین و قراره فردا برین تحویل استاد بدین و توضیحاتشم ارائه بدین. اما فردا در حین تحویل هی به خودتون میگید من اینو چرا اینجا نوشتم؟ این کد چرا اینجا بود؟ این 4 5 خط چی کار می کردن؟
2-اشکال یابی کدتون کار حضرت فیل میشه -> ممکنه کد رو بنویسید و هیچ مشکل کامپایلی هم نداشته باشه اما وقتی برنامه رو اجرا می کنید بهتون خطای منطقی بده یعنی جوابی رو چاپ کنه که شما انتظارشو نداری و حالا پیدا کردن محل باگ طاقت فرسا میشه
و مشکلاتی از این قبیل
حالا بحث توابع میاد وسط تا ما برناممون رو به سمت Modularity پیش ببریم. همون فرضیات بالا رو در نظر بگیرید. با مثال توضیح میدم: میخوایم یه برنامه بنویسیم نمره تعدادی دانشجو رو دریافت کنه معدلشون رو حساب کنه و بعد معدل رو چاپ کنه. حالا یه راه وجود داره که برنامه رو مثل سابق و یکپارچه بنویسید یا این کار رو با توابع انجام بدین
حالا چون ممکنه بحث پیچیده شه و شاید بحث اشاره گرها،آرایه ها و Call by Reference و اینجور موارد رو نخونده باشین ، فرض کنید ما نمره سه نفر رو دریافت می کنیم
من برنامه رو با این خطوط شروع میکنم
کد:
include<stdio.h>
include<conio.h>
void main()
{
int first,second,third;
cout<<"Enter First Mark:";
cin>>first;
cout<<"Enter Second Mark:";
cin>>second;
cout<<"Enter Third Mark:";
cin>>third;
}
حالا میخوام یه تابع بنویسم که معدل رو برام حساب کنه (دقت کن که من ورودی های first،second و third رو بهش میدم و خروجی معدل رو میگیرم) در ضمن تعریف تابه باید بیرون از main باشه چون یه تابع رو نمیشه تو یه تابع دیگه تعریف کرد بلکه فقط میشه صداش زد یا فراخونیش کرد
کد:
include<stdio.h>
include<conio.h>
float avg(int a,int b,int c)
{
int sum;
float result;
sum=a+b+c;
result=sum/3;
return result;
}
void main()
{
int first,second,third;
float ans;
cout<<"Enter First Mark:";
cin>>first;
cout<<"Enter Second Mark:";
cin>>second;
cout<<"Enter Third Mark:";
cin>>third;
ans=avg(first,second,third);
cout<<"The average is: "<<ans;
}
صد درصد متوجه شدی که لازم نیست پارامترهایی که به تابع میفرستیم با پارامترهایی که تو تعریف تابع آوردیم هم نام باشه اما الزاما باید هم نوع باشن
به وسیله کلمه کلیدی return ما میتونیم مقدار result که در واقع مقدار معدل رو داره برگردونیم توی یه متغیر به نام ans و اونو چاپ کنیم
خیلی توضیح دادم دیگه خسته شدم
 
آخرین ویرایش:

MAEDE73

عضو جدید
سلام به دوستان مهندسین کامپیوتر!
ببخشید من ی پروژه دارم میخواستم کمک بگیرم از کسی ک مسلط ب زبان C هس..ممنون میشم بهم اطلاع بدین...
 

kossar213

عضو جدید
ماتریس تصادفی

ماتریس تصادفی

:(:( سلام دوستان... میشه کمکم کنید که مشکل برنامه ی زیر چیه؟؟؟
#include <stdio.h>
#include <conio.h>
void random (int a[50][60],int);
{
int i;
int j;


for ( i=0 ;i<50; i++)
for ( j=0 ;j<60;j++)






printf("%d",a[50][60]);
scanf("%d",a[50][60]);
getch(random);
}


void main()
{
int a[];
printf("%d",a[50][60]);
getch();
return random;


}
 

irpersian20

عضو جدید
سلام
یک ارایه دو بعدی 20 در 20 را میخواهم از 1 تا 400 بریزم داخلش و چاپ کنم
یک برنماه نوشتم اما میخوام فقط از 2 حلقه فور استفاده کنم و شمارنده کمکی برای شمارندن 1 تا 400 نزارم . میشه؟
 

hoseng

کاربر بیش فعال
سلام
یک ارایه دو بعدی 20 در 20 را میخواهم از 1 تا 400 بریزم داخلش و چاپ کنم
یک برنماه نوشتم اما میخوام فقط از 2 حلقه فور استفاده کنم و شمارنده کمکی برای شمارندن 1 تا 400 نزارم . میشه؟
آره دیگه اصلشم همینه. همون شمارنده های حلقه for میشه اندیس های آرایه
 

zahra1386

مدیر بازنشسته
کاربر ممتاز
خوب من یک متغیر گذاشتم و از 1 شروع کردم و پلاس پلاسش کردم برای ریختن عدد
نمیشه حذف کرد اینو؟

خب داخل حلقه متغیر رو پلاس پلاس میکنی دیگه نیازی نیست بیرون حلقه اینکارو بکنی!
 

pari54

عضو جدید
سلام دوستان
میخواستم اگر امکانش هست هرکدوم از این برنامه ها رو که دارین یا میتونید بنویسید به زبان C++ و یا java
این ها پروژه های متفاوت درس ساختمان داده بودند که چون تمامی برنامه ها رو به طور کامل ندارم ممنون میشم اگر بزارید تا بتونیم واسه امتحان ازشون استفاده کنیم
1)ایجاد یک لیست ده تایی از اعداد صحیح با استفاده از آرایه و توابعی مثل توابع زیر را داشته باشد:
read/find/insert/delete
2)ایجاد یک ماتریس اسپارس4*4 و جمع با ترانهاده اش
3)دریافت یک عبارت infix و تبدیل اون به postfix و ارزیابی آن
4)دریافت 5عدد از کاربر و قرار دادن در لیست دو طرفه و حذف عددی به انتخاب کاربر
5)ایجاد heap و پیاده سازی و مرتب کردن و تابع delete داشته باشد
پوزش که خیلی زیاد است...
ولی هرکدوم رو که تونستید رو بزارید
با سپاس.
این سوال رو در بخش سوالات و مشکلات برنامه نویسی نیز گذاشتم.
 

shaha6687

عضو جدید
سلام میشه بم بگین چه جوری باید این کد بنویسم با ++c تو برنامه visual studio3تا class gunدارم که هم fired,speedداره 100تا تیر داره که Entroکه میزنه شلیک می کنه وقتی به صفر رسید over lode می شه آخره سر 3تا کلاس با هم سویچ می شنخواهش مکنم بهم بگین کدش چه شکلیه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
 

f.razm

عضو جدید
با سلام یه برنامه میخوام(زبان C) که بشه از صفحه کلید عدد خوند و اون عددو به فارسی چاپ کرد (عدد 12) البته اعشار جلوی عدد تا 5 رقم اعشار هست وبرنامه اعشار هم میخونه خیلی فکر کردم چون مبتدی هستم نتونستم برنامه رو بنویسم با تشکر
 
بالا