راستی دوستان ما این هفته تازه ارای ها رو خوندیم
اگر میشه چند تا برنامه (نمونه سوال)قرار بدید تا یه کم راه بیافتیم
Printable View
راستی دوستان ما این هفته تازه ارای ها رو خوندیم
اگر میشه چند تا برنامه (نمونه سوال)قرار بدید تا یه کم راه بیافتیم
اينم سه تا تمرين از آسون به متوسط
منتظر سخت ها باشيد
برنامه اي بنويسيد كه 10 عدد را خوانده در آرايه قرار دهد و از آخر به اول چاپ كند
برنامه اي بنويسيد كه بزركترين عدد آرايه 10 تايي را چاپ كند را چاپ كند
برنامه اي بنويسيد كه يك آرايه يك بعدي 10 تايي را معكوس كند(n تايي رو هم اگه خونديد)
با سلام
من میخواستم بدونم چطوری میشه یه برنامه نوشت که بتونه 1000 فاکتوریل و یا بیشتر را در زبان c حساب کنه البته هر چقدر ساده باشه بهتره من هر چقدر سعی کردم نتونستم یعنی عدد بزرگه و تو متغیر جا نمیشه
به نظر من باید از متغیر داینامیک استفاده کنید یا از رشته ها استفاده کنید
ببخشید 1000فاکتوریل!!!!
اونم با متغیر
عمرا!!!!
باید با آرایه حلش کنین چون آرایه رو میشه هر چی که دلتون بخواد زیادش کنین
الگوریتمشم که دیگه همه جا هست و راه های زیادی داره
یکیش اینجاس
کلیلک کنید
منم یه برنامه مبتدی میذارم تا حلش کنین
برنامه ای که در یک آرایه برای 10درس دانشجو نمرات را دریافت نموده و در آرایه ای دیگر تعداد واحد های همان دروس را دریافت نموده و سپس معدل را حساب کند
دوستان عذر میخوام بابت تاخیرم مودمم چند روزه که کار نمیکنه//findind the missing number
#include <stdio.h>
#include <stdlib.h>
main(void)
{
int sum1=0;
int sum2=0;
int i;
int N;
for(i=0;i<1000;i++,sum1+=i);
for (i=0;i<999;i++)
{
printf ("enter N");
scanf ("%d", &N);
sum2+=N;
}
printf ("mising num=%d", sum1-sum2);
system ("pause");
return 0;
}
اینم برنامه مورد نظر باید اعداد 1تا1000 رو جمع کنید بعد 999 تا عددی که داریم رو وارد کنید باهم جمع کنید از مجموع 1000 عدد کم کنید عدد گم شده رو بهمون میده
اگر نیاز به توضیح بیشتر داره بگید
سلام دوستان خسته نباشید
من هم یک مبتدی هستم و در بعضی مواقع شدیدا به کمک محتاج میشم به نظر من هم می تونه یه تاپیک موفق بشه و استقبال زیادی هم میشه ازش بدون شک.
خب واسه اینکه عینا اون تمرینارو ننویسین" که افراد سوءاستفاده کنند" کدهایی تقریبا مشابه به اون تمرینارو بذارین که حداقل مبتدی بتونه از بین اونا چیزای دیگه ای هم پیدا کنه به نظرم اینجوری فن الگوریتم نویسی ما مبتدیها هم خوب میشه و ذهنمون با الگوریتمای بیشتری آشنا میشه
ممنون بچه ها به خاطر تایپیکتون
سلام دوست عزیز من ورودتون به این تاپیک رو خوش امد میگم
و با نو خانوم اگر منظورتون برنامه ی اولی است که بدون 2تا space نوشته شده :اونجا باس دقت کنید که من تو scanf اولی %C رو هم گذاشتم , دو باره برای scanfدومی هم یه %c هم گذاشتم به همین خاطر یکenter بعد از وارد کردن عدد دوم یک کاراکتر برای %C اولی محاسبه و یه کاراکتر هم برای رفتن به خط بعدی محاسبه می شد و در خط بعدی %C رو میتونست بدون مشکل دریافت کنه اما وقتی که دو تا space بزراید بخاطر همون توضیحی که دادم دیگه نیاز به این کارا نیست
سلام دوستان منم یک مبتدی هیستم
ممنون از تاپیک مفیدی که ایجاد کردید
یک سوال داشتم:خیلی رو این برنامه فکر کردم ولی نتونستم یک روش بهینه برای حلش پیدا کنم ممنون میشم کمکم کنید
برنامه ای که یک عدد دریافت کند و مشخص کند این عدد مکعب است یا خیر؟؟؟
ُسلام به همگی
راستی بانو خانوم من که واقعیتش این فلسفه ی 2%C:اشتباه:رو نی دونم اگر میشه بگید ما هم یاد بگیریم
ببينيد مثلا وقتي ميزنيم
printf("3%d",2)
چيزي كه برامون چاپ ميشه اينه
" 2"
با دو تا فاصله 2 رو چاپ ميكنه یعنی 3 digitمیزاره برا چاپ عدد
من از استادم پرسيدم scasnfهم همينطوره گفت اره 3 digit ,ا scanميشه
منم اومدم برنامه رو اينجوري بنويسم نشد
اي بابا چرا اينجا تعطيل شده
صاحابش كو؟:متفکر:
سلام دوست عزيز
فرق سوال اول با اخر چيه؟
اين برنامه كه من نوشتم ماله اوليه
#include <stdio.h>
#include <conio.h>
int main()
{
int n,j=0, i;
int *num_A, *new_list;
printf ("enter n\n");
scanf ("%d", &n);
num_A=new int[n];
new_list=new int[n];
for (i=0;i<n;i++)
{
printf ("enter num_A[%d]", i);
scanf ("%d", &num_A[i]);
}
for (i=n-1;i>=0;i--)
{
printf("new_list[%d]=%d\n",j , num_A[i]);
j++;
}
getch();
return 0;
}
به نام یگانه برنامه نویس عالم
سلام خدمت همه دوستان
بانو خانوم اگه میخواین تو آرایه ها ی یک بعدی فول شین نظرم اینه که یه برنامه جامعه آماری بنویسید
اینطوری هم استفاده از تابع ها را خوب متوجه میشین هم آرایه ها
یعنی برنامه ای بنویسید که تعدادی عدد از کاربر بگیرد(البته با تعدادشون)و میانگین ، واریانس ، انحراف معیار ، نما یا همون مد ، میانه و دیگه هر چی دلتون خواست
به نظر من حتما از توابع استفاده کنید تا کارتون منظم باشه
تو اینا یه خورده مد و میانه دشوارتره
یادتون باشه که داده ها نامنظمند و باید برایه بدست آوردن میانه اونارو منظم کنید و اگه تعداد داده ها زوج و فرد باشن و ... اینا باید شرطاشو بذارین
به هر حال نوشتن این برنامه کمک زیادی به فهمیدن کامل آرایه ها میکنه
یه خواهش از همه ی دوستان
بابا ترم اول که دیگه تموم شد ما اشاره گر ها و فایل ها و بقیه رو خوندیم
نمیخواین سرعت دادن تمارینو بیارین بالا؟؟!!
ممنون
خیلی نوکریم
اگه منظورت توان سوم یه عدده که دوبار ازش جذر بگیر ببین نتیجه صحیحه یا نه ...نقل قول:
یک عدد دریافت کند و مشخص کند این عدد مکعب است یا خیر؟؟؟
سلام امیر اقا
ممنون
یه کم دارم راه میافتم کاری هم که گفتید خواهم کرد ولی مشکل من با توابع هست
درست نمیتونم باهاشون کار کنم
برا همین برنامه هام خیلی طولانی میشه
برای اینکه روال اینجا بهم نخوره یه تاپیک زدم
مثلث خیام پاسکال رو باید چاپ کنه باید با توابع بنویسمش نتونستم
توی توابع گیر کردم ولی شاید کاری گفتید کمکم کنه راه بیافتم
راستی دوستان توی اون برنامه که نوشتم ازp*استفاده کردم
ولی دو تا مشکل هست که این روشی که من استفاده کردم تویcppهست و من باcبرنامه مینویسم
دوم اینکه این روش رو به صورت دو بعدی بلد نیستم
استفاده از توابع باعث میشه که ذهنت خیلی منظم بشه و همین طور برنامت
و خواننده سورس برنامه ی شما خیلی راحت تر متجه کارایه برنامتون میشه
همیشه استاد ما بهمون توصیه می کنه که از توابع استفاده کنیم چون که وقتی برنامه یه خورده بزرگ میشه متجه میشین که چقدر استفاده از توابع به درد میخوره
و من حتما بهتون توصیه میکنم که از توابع تو برنامه هاتون استفاده کنین اونم به صورت خیلی زیاد
تا با کارشون به خوبی آشنا بشین
حق با شماست برنامه ای که میتونم با چند خط بنویسم به چند صفحه میرسه اخرشم درست اجرا نمیشه ممنون میشم یکم در استفاده از توابع راهنمایی کنید مثلا روی یکی دو تا برنامه ساده
اصلا خودم یه کد میزارم یه توضیح مختصر بدید
#include<stdio.h>
intis_prime(int n)
{
intdivisor;
if(n <= 1)
return0;
for(divisor = 2; divisor * divisor <= n; divisor++)
if(n % divisor == 0)
return0;
return1;
من قسمتreturn0,return1رو نمیفهمم
و همینطور کلا چجوری این تابع تعیین میکنه عدد اول هست یا نه
اگر خط به خط بگید خیلی ممنون میشم
خیلی سادس !
int is_prime(int n)اینجا نوع بازگشتی تابع و نوع آرگومان ورودی و اسم آرگومان رو معرفی کرده
int divisor;
یه متغیر تعریف کرده
if (n <= 1)
return 0;
اگه عدد ورودی از 1 کمتر بود یعنی عدد اشتباه وارد شده و 100٪ اول نیست ...
پس همین اول کاری از تابع شوتش می کنیم بیرون !
for (divisor = 2; divisor * divisor <= n; divisor++)
if (n % divisor == 0)
به divisor مقدار 2 داده و تو حلقه از 2 شروع می کنه میره بالا تا به عدد یک دونه کمتر از ورودی برسه ( n ) و دونه دونه چک می کنه ببینه آیا n به divisor بخش پذیر هست یا نه !
اگه بود مقدار 0 رو بر می گردونه ( یعنی عدد اول نیست ! )
اگر هم بر هیچ کدوم بخش پذیر نبود یعنی عدد اوله دیگه !!!
خیلی ساده بود ! نه ؟
موفق باشید
سلام به همه ی دوستان
اینم از برنامه ی کامل که دیدم بد نیست بنویسم من هم گفتم در بیکاری بد نیست سرگرم شوییییم:لبخند::البته مطمئن نیستم درست باشه ولی امتحان کنید .انشالله که درسته:لبخند::
//in the name of god
اگر برنامه درست کار نکرد بگید تا فکر کنم که مشکلش کجایه اکی در ضمن شما دوستان هم بگید کجاش اشکال داره تا بتونم درستش کنم یا الگوریتم های بهترشو بگید ممنون.
#include<stdio.h>
int main()
{
int x,i,s=0,y;
scanf("%d",&x);
for(i=1; i<=(x/2); i++)
{
y=x%i;
if(y==0)
{
s=s+i;
printf("i=%d,,s=%d\n",i,s);
}
else
continue;
}
if(s==x)
printf("%d adadi kamel mibashad",x);
else
printf("%d adadi kamel nist",x);
return 0;
}
برایه اینکه بهتر با کار آرایه ها آشنا بشین
من این برنامه رو حدود یک ماه پیش نوشتم و میذارم ببینید:
#include <stdio.h>
double adad(double[],int);
double avg(double[],int);
int main(){
double x[50],p1,p2,p3;
p1=adad(x,50);
p2=avg(x,p1);
printf("miangin=");
printf("%.3f\n",p2);
return 0;
}
double avg(double b[],int n){
int i;
double sum;
sum=0;
i=0;
while(i<n){
sum=sum+b[i];
i=i+1;
}
sum=sum/n;
return sum;
}
double adad(double a[],int max){
int i,n;
printf("tedade adad\n");
scanf("%d",&n);
if(n<1 || n>51){
n=0;
printf("eror\n");
}
else{
while(i<n){
printf("adad\n");
scanf("%lf",&a[i]);
i=i+1;
}
}
return n;
}
اگه سوالی دارین از این برنامه میتونم براتون توضیح بدم
البته منم مثه شما یه ترم اولیم و شاید حرفام خیلی درست نباشه ولی من تو استفاده از تابع مشکل خاصی ندارم
دستت در نكنهنقل قول:
خیلی ساده بود ! نه ؟
موفق باشید
راست ميگي ساده بود
احساس خنگي بهم دست داد :گیج::لبخند:
سلام
ممنون
خوب اين برنامه قراره چي كار كنه اجراش كردم فقط تعداده عدد رو ميگيره چيزي چاپ نميكنه
راستي يه سوال راجع به input ,output
اين يعني چي؟
%d%%
و اين كه شما تو برنامت نوشتي
scanf ("%1f",&a[i])
اينكه عدد يك رو قبل ازfنزاريم كه فرقي نميكنه؟
و ابنكه وقتي ميزنيم
scanf("%3d",&i)
بهiسه digit اختصاص ميده و scan ميكنه؟
سلام
فکر نمیکنم این برنامه مشکلی داشته باشه
من این برنامه رو تو سی اچ اجرا کردم و مشکلی هم نداشته
یه تعداد عدد میگیره بعد میانگینشو بدست میاره
خیلی خیلی سادس دیگه
در مورد %1f. البته داتشو نذاشتین! که جالبه بدونید که شما با این کار مشخص می کنید که چند تا اعشار بعد از اعداد صحیح پرینت بشه
یادم رفت که بگم "درصد اف " هم همون کاره "درصد ال اف " رو میکنه یعنی برایه عدد های اعشاریست فقط با همین تفاوت
یعنی اگه شما از "درصد ال اف" استفاده کنید اون تعداد اعشاری که به صورت پیش فرض انتخاب شده پرینت میشه ولی با "درصد دات یک اف " شما فقط یک اعشار بعد از عدد صحیح خواهید داشت
البته میتونید هر چی دلتون خواست بذارین مثلا "درصد دات چهار اف"
شاید جالب باشه ولی استاد ما همیشه با این ژینگولگ بازیا مخالفه و میگه این چیزا کمکی به برنامه نویس شدنه شما نمیکنه
منم حرفشو قبول دارم چون که این کارا تو هر زبونی یه جوریه و خیلی هم سادس یادگیریش
پس زیاد گیر ندین
در مورد اون یکی هم چیز زیادی نمیدونم و اونقدرام شوق دونستنشو ندارم
ببخشید که واژگان انگلیسی رو فارسی نوشتم
امیدوارم خوب رسونده باشم
ممنون ولي اون %3dتوي بعضي جاها خيلي مفيده درواقع توي بهتر چاپ كردنه يه برنامه كمك ميكنه و حتي scan كردن مقادير گاهي لازم ميشه كه البته خيلي هم الزامي نيس به قول استادتون ژينگولك بازيه
پيش فرضمون همون مقداريه كه به ال ميديم؟نقل قول:
اگه شما از "درصد ال اف" استفاده کنید اون تعداد اعشاری که به صورت پیش فرض انتخاب شده پرینت میشه
ميتونه يه مقدار متغير باشه؟
نه ببینید خود "درصد ال اف" همون کاره "درصد اف" رو می کنه و هر دو تا شون مثله همن ولی با این تفاوت که شما میتونین از "درصد اف" برای مشخص کردنه تعداد اعشار بعد از عدد صحیح از "درصد اف " استفده کنی البته باید تعدادتو مشخص کنی مثلا اگه خوشت نیومد که تو نمایش عدد بنویسه 2.777777 میتونی تو printf بدی "درصد دات دو اف" و برات پرینت میکنه 2.77
حله؟؟؟!!!
اگه میشه در مورد "درصد سه دی" اگه میدونین چیکار میکنه بگین که چیکار میکنه!!
ممنون
اره داداش حله
حالا راجع به درصد 3 دي(درصد ال دي)
وقتي اينو ميزنيم چيزي كه براي ما چاپ ميشه متغير iبا اختصاص دادنه 3digitهست
مثلا اگر مقدار هi2 باشه با دو تا spaceقبل از اون (اگر 3- بزاريم بعدش) چاپ ميكنه
فايدش چيه
مثلا برنامه اي داريم كه ميخواد يه ماتريس برامونچاپ كنه
ماتريس ما تا زماني خوب و زير هم چاپ ميشه كه اعداد يه رقمي هستند ولي وقتي دو رقمي بشن شكل ماتريس چاپي مون به هم ميخوره اگر بيايم و تعداد digitچاپي رو معين كنيم حتي با اعداد چند رقمي هم ماتريس به هم نميخوره
البته ممكنه راه ديگه اي هم باشه ولي من اينجوري تونستم شكلمو حل كنم
اگه نفهميديد يه شكل هست اونو ميزارم بهتر ميشه
سلام به دوستان
راستی در باره ی پروژه نویسی یا تمرین های بزرگتر نیز بحث کنیم خوبه نه دوستان؟
سلام دوستان، از اینکه تاپیکی به این قشنگی و مفیدی راه افتاده فوق العاده خوشحال شدم. امیدوارم این اقدام تاثیری خوبی در پیشرفت همه ما داشته باشه.
چند روز پیش برنامه ای دیدم که در اینجا البته فقط با کمی تغییر میذارم. علت تغییر اون برنامه این بود که برای اعداد 2 و 3 زوج و فرد بودنشون رو مشخص نمی کرد.
همچنین از دوست خوبمون که برنامه رو به زیبایی تشریح کرده بود متشکرم.
کد اصلاح شده:
#include<iostream>
int main()
{
int isprime(int n);
int i,n;
std::cin>>n;
for (i=2;i*i-1<=n;i++)
std::cout<<i;
if (n%i==0)
std::cout<<n<<"your num isnt prime";
else
std::cout<<n<<"your num is prime";
}
البته با ++ C هست که شما کافیه فقط خطوطی رو که std::cout و std:: cin دارن رو به دستورات دریافت و نمایش در C تبدیل کنید. i هم همون divisor هست.
با پوزش.
سلام دوستان
يه سوال
توي توابع چيزي كه تابع returnميكنه چيه منظورم اينه كه همون كاري كه ما از تابع ميخوايم انجام بديم مقداريه كه return ميشه؟
مثلا توي اين قسمت
double average(double a, double b)
{
return (a + b) / 2;
}
مقداري كه returnميشه همون ميانگينه (كاري كه ما از تابع ميخوايم)يا همون تابعي كه زدم اول يا غير اول بودن عدد مقداري كه بر ميگرده تعيين ميكنه اول هست يا نه
ولي توي اين حالت چي؟ مقداري كه برميگردونه مفهومش چيه اصلا چرا بايد اينو برگردونه؟
چجوري ميتونم به صورت void بنويسم؟
int *input_array(int r, int c){
int *array = (int *)malloc(r * c * sizeof(int));
int i , j;
for(i = 0; i < r ; i++){
for(j = 0 ; j < c ;j++){
printf("enter array[%d][%d]\n", i , j);
scanf("%d", array);
array++;
}
}
return array - r * c;
}
ببینید بانو خانوم
شما وقتی یه تابعو return میکنین پس به طور حتم بهش نیاز دارین تو تابع main یا تو تابع های بعد از اون
اینم که بخواین این تابعی که نوشتینو به صورت void بنویسید یعنی چیزی نمیخواین برگردونید
void بیشتر برایه تابع های پرینت و اینزرت استفاده میشه و شما قرار نیست چیزی رو به تابعی که فراخونی شده برگردونید
البته سوالتون زیاد واضح نیست و منم اینجوری برداشت کردم
البته یه چیزی رو هم اضافه کنم که اشاره گر ها رو که براشون حافظه ی پویا گرفتین مثه همین جا باید return کنین ولی اگه یه آرایه تو تابع پر کردین نیازی نیست برش گردونین چون آرایه شما خودش پر میشه و نیازی به برگردوندن نداره
ولی حافظه پویا چون به آدرس اشاره میکنه نیاز داره که به آدرس مورد نظر برگردونده بشه
پس يعني من توي اين تابع نميتونم به صورت void بنويسم؟
ولي سوال قبل من چيزه ديگه بود
من ميگم تابع چه چيزي رو returnميكنه؟ (كاري كه ما از تابع ميخوايم؟)
مثلا توي اون حالت
return array-r*c
اين چيزي كه برميگردونه چيه؟
و يعني چي؟
چرا ادرس اشاره شده بايد برگرده
يعني چرا خود array رو برنميگردونيم؟
كلا من با اين كه تابع چه چيزي رو بر ميگردونه مشكل دارم