اگه میشه از iostream استفاده نکنید من بلد نیستم
stdio.hلطفا
اگه میشه از iostream استفاده نکنید من بلد نیستم
stdio.hلطفا
آخرین ویرایش به وسیله بانوی ایران : یک شنبه 01 آذر 1388 در 23:26 عصر
سلام بانو خانوم از ورودتون به این تاپیک همه خوشحالیم بانو خانوم لطفا پاسخ ها تون رو در این تاپیک مثل من و بقیه قرار بدید تا همه بتوونند استفاده کنند البته ما ههم با الگوریتم های مختلف می نویسیم این امکان افزاریش بازدهی رو بالا می بره من از این که این 2 و3 هفته کمتر سر می زنم شر منده ام چون امتحانات میان ترمم شرو ع شده و کمتر می تونم بیام ولی وقتی که اومدم سعی می کنم جبران کنم
در ضمن ابتدا در بارهی الگوریتم حل مسله با هم صحبت کنید و بعد پاسخ هاتون رو به همدیگر در این تاپیک نشون بدید و بگید که جه کار کنه بر نامه بهینه تر میشه و ... .به نظرم این کارو کنید خیلی بهتره
با تشکر سید مهدی
/*sum digits of a number*/
#include <stdio.h>
#include <stdlib.h>
main(void)
{
int N;
int sum=0;
int R;
printf("enter N\n");
scanf("%d", &N);
while(N>0)
{
R= N%10;
sum+=R;
N/=10;
}
printf("sum=%d\n", sum);
system("pause");
return 0;
}
این برنامه مجموع ارقام هر عدد رو چا÷ میکنه
نه فقط 10رقمی
البته به جای stdlib.h وsystem("pause")l میتونید ازconio.h ,getch ()lاستفاده کنید
تابع درجه دو هم باید بیایم تابعی مثلf=ax2+bx+c
(x2 توان 2 منظورمه)
الگوریتم رو جوری بنویسیم که a,b,cرو دریافت کنه و قرار بده توی delta(تابعی جواب داره که delta بزرگتر و مساوی صفر باشه)به این نحو دستوراتشو قرار میدیم
برنامه رو نوشتم ولی یکم اشکال داره باهاش کار میکنم اگه به جواب نرسیدم میزارمش تا کمک کنید
برنامه ماشين حساب
#include<stdio.h>
#include<iostream.h>
void main(){
int x,y,z;
char ch;
cout<<"enter your first number:";
cin>>x;
cout<<"enter your operator(+ - * /):";
cin>>ch;
cout<<"enter your second numer:";
cin>>y;
switch(ch){
case'+':
cout<<"the answer is:"<<x+y;break;
case'-':
cout<<"the answer is:"<<x-y;break;
case'*':
cout<<"the answer is:"<<x*y;break;
case'/':
cout<<"the answer is:"<<x/y;break;
}}
ببخشيد يه سوال خيلي بچه گانه داشتم چرا كدهايي كه من گذاشتم همه شون چپكي ميشن؟
مي شه بگيد بايد چه كار كنم كه اينچوري نشه!
نمیخوای برین جلوتر
بابا ما که ترم اولیم تا تابع های بازگشتی رو خوندیم
شما هنوز به آرایه ها هم نرسیدی؟؟؟!!!!
لطفا پاسخ های خودتون رو با زبان برنامه نویسی C در این تاپیک قرار بدهید نه C++ چون اصلا این تاپیک برای C زده شده نه C++ خواهش میکنم .
سلام من دوباره اومد م ولی هنوز میان ترمام تموم نشده
اما شروع به پاسخ دادن به سوالات میکنم مثل همه ی شما دوستان
ببینید این جواب برای تمرین جدول 10*10 درسته یا نه:
//in the name of god
#include<stdio.h>
int main()
{
int i,j,s;
for(i=1;i<=10;i++)
{
s=0;
printf("\n");
for (j=1;j<=10;j++)
{
s=i*j;
printf("%d\t",s);
}
}
return 0;
}
آخرین ویرایش به وسیله smahdi1991 : شنبه 07 آذر 1388 در 14:45 عصر
این هم جواب تمرین مر بوط به 4 عمل اصلی ببینید درسته یا نه اگر میشه جواب های خودتون رو هم قرار بدهید و همینطور اگر از الگوریتم دیگری (راه حل دیگری هم بلدی بنویس) استفاده کردید که دیگر حتما باید بنویسید چون خیلی عالی میشه اگر هم مشکلی داشتید در رابطه با بخش ها مختلف عرض کنید تا ما هم اگر بلد بودیم جواب عرض کنیم:
//in the name of god
#include<stdio.h>
#include<conio.h>
int main()
{
int x,y,i;
char c;
for (i=1;i<=4;i++)
{
printf("\nPlease Enter 2 operands :");
scanf("%d%d",&x,&y);
printf("please Enter desigred operator(+ - / *)\n");
c=getch();
printf("x = %d,,y = %d Operator:%c\n",x,y,c);
switch(c)
{
case '*':
{
printf("x * y = %d",x*y);
break;
}
case '+':
{
printf("x + y = %d",x+y);
break;
}
case '/':
{
printf("x / y = %d",x/y);
break;
}
case '-':
{
printf("x - y = %d",x-y);
break;
}
default:
printf("error happened!");
break;
}
}
return 0;
}
آخرین ویرایش به وسیله smahdi1991 : شنبه 07 آذر 1388 در 16:27 عصر
سلام خسته نباشید
میشه یه توضیح بدید چرا c=getchگذاشتید
اصلا راجع به getch یه توضیح بدید که کارش چجوریه
آخرین ویرایش به وسیله بانوی ایران : شنبه 07 آذر 1388 در 15:43 عصر
بر روی چشم بانوی من(جومونگی گفتم):تابع ()getchبرای خواندن کاراکتر( البته فقط یک کاراکتر ) مورد استفاده قرار میگیرد این تابع کاراکتر ورودی رو از کاربر در یافت نموده و آن را در متغییر ذخیره می کند و لی چیزی به کاربر نمایش نمی دهد وچون کاراکتر ورودی در متغییر ذخیره می شود امکان پاک کردن یا عوض کردن آن وجود ندارد.این تابع در هدرفایل
#include<conio.h>
تعریف می شود.
این کافیه یا اگر بخواهید بهتر وکاملتر توضیح بدم
اینم از معادله درجه ی دوم :فکر کنم درست عمل کنه به طور کامل:
//in the name of god
#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c,d,x,z;
printf("enter 3 num: a,b,c(ax2+bx+c=0):");
scanf("%f%f%f",&a,&b,&c);
d = b*b - (4*a*c);
if (d==0)
{
x=((-b)/(2*a));
printf("x=%f",x);
}
else if (d>0)
{
z = sqrt (d);
printf ("x1=%f,x2=%f",(-b+z)/(2*a),(-b-z)/(2*a));
}
else
{
printf ("x has no answer");
}
return 0;
}
آخرین ویرایش به وسیله smahdi1991 : دوشنبه 09 آذر 1388 در 07:02 صبح
راستی اگر مایلی در باره ی ()getchar و()getche
توضیح بدم
getchar,ghetcheرو هم توضیح بدید ممنون میشم
آخرین ویرایش به وسیله بانوی ایران : شنبه 07 آذر 1388 در 16:09 عصر
این برنامه ایه که من برای تابع درجه 2 نوشتم ولی pow رو اجرا نمیکنه
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
main(void)
{
int delta, a, b, c, x1, x2;
printf ("enter a,b,c\n");
scanf ("%d %d %d", &a, &b, &c);
delta=b*b-4*a*c;
if (delta>0)
{
x1=(-b+pow(delta,1/2)/2*a);
x2=(-b-pow(delta,1/2)/2*a);
printf ("x1=%d, x2=%d", x1, x2);
}
else if (delta==0)
{
x1=-b/2*a;
printf ("x1=x2=%d", x1);
}
else
{
printf("no real roots for this q");
}
system ("pause");
return 0;
}
توضیحات اموزشی:
تابع ()getchبرای خواندن کاراکتر( البته فقط یک کاراکتر ) مورد استفاده قرار میگیرد(به این صورت به عنوان مثال: x=getch()) این تابع کاراکتر ورودی(مثلا +یا _یا-یاLیاdیا:یا ! , ویا ... ) رو از کاربر در یافت نموده و آن را در متغییر(X) ذخیره می کند و لی چیزی به کاربر (در صفحه خروجی یا نمایشگر به هنگام چاپ )نمایش نمی دهد وچون کاراکتر ورودی در متغییر(X) ذخیره می شود امکان پاک کردن یا عوض کردن(مثلا اگر کاراکتر ورودی *بود نمیتونیم دیگه به /یا rیا(ویا چیزای دیگه تغییرش داد) آن وجود ندارد.و این تابع بعد از دریافت کارکتر ورودی بدون نیاز به فشار دادن دکمه ی enter برای اجرای دستورات به خط بعد می روداین تابع در هدرفایل
#include<conio.h>
تعریف می شود.
تابع()getcheوتابع()getcharنیز مثل تابع ()getchفقط برای یک کاراکتر مورد استفاده قرار میگیرنداما با این تفاوت که تابع ()getchar با در یافت کاراکتر از ورودی علاوه بر اینکه کاراکتر فشارداده شده را به کاربر نمایش می دهد منتظر می ماند تا دکمه ی enter فشار داده شود و سپس آن را در متغییر (مثلا x) ذخیره می کند که این کار باعث می شود اگر به اشتباه دکمه را فشار دادیم بتوانیم آن را پاک کرده و اصلاح کنیم(با backspace میشه پاکش کردو دوباره کاراکتر رو وارد کرد)اما تابع ()getcheبه محض فشار دادن دکمه کاراکتر ورودی را در متغییر (مثلاx) ذخیره کرده و آن را نیز در صفحه نمایش به کاربر نمایش می دهد که این کار (ذخیره کردن) منجر می شود که ما نتوانیم اگر اشتباهی انجام دادیم آن را تصحیح کنیم.
اووه ه ه ه ه
دیگه فکر کنم اینو خیلی با حال وکامل و جامع و شامل توضیح دادم
خوب از scanf هم میشه استفاده کرد اما ()getchاولا کاراکتر رو به کاربر نمایش نمی ده دوما هم اینکه بدون نیاز به دریافت enter به اجرای خط بعدی پیش میره سوما واسه اینجا از نوشتن زیادی هم جلوگیری میکنه.چهارما هم اینکه الان خودتون هم او برنامه ای که توش ()getch به کاررفته رو اجرا کنید خودتون متوجه میشد که در صفحه نمایش چقدر تمییز تر نتایج نمایش داده میشوند.
بله اجراش کردم
جالب بود
میشه به برنامه ای که من برای تابع درجه 2 نوشتم نگاه کنید pow رو درست اجرا نیمکنه
راستی برنامه ای که برا ماشین حساب گذاشتید نیازی به حلقه for نداره
می دونم ولی برای این حلقه ی for رو قرار دادم تا بتونید همه ی اعمالشو امتحان کنید
خوب لطفا کد رو قرار بدید
خطا های منطقی بزرگترین وبد ترین نوع خطا ها هستند که مغز هر کسی رو به چالش وا می دارند حتی خیلی حر فه ای ها چه برسه به منه آماتور
برنامه شما دارای 3 خطای منطقی بود که فقط قرار نداد پرانتز موجب این خطا ها شد:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
main(void)
{
int delta, a, b, c, x1, x2;
printf ("enter a,b,c\n");
scanf ("%d %d %d", &a, &b, &c);
delta=b*b-4*a*c;
if (delta>0)
{
x1=((-b+pow(delta,1/2))/2*a);//اینجا دوتا پرانتز رو قرار ندادید که موجب ایجاد خطای منطقی شد
x2=((-b-pow(delta,1/2))/2*a);//اینجا هم مثل بالا وبا ید خیلی وراقب این طور خطا ها باشید
printf ("x1=%d, x2=%d", x1, x2);
}
else if (delta==0)
{
x1=(-b/(2*a));//اینجا هم مثل بالا
printf ("x1=x2=%d", x1);
}
else
{
printf("no real roots for this q");
}
system ("pause");
return 0;
}
باز هم کار نمیکنه
تازه این تغییرات رو هم توش دادم ولی مثلا 1و3و1 که میدم delta=5میشه ولی جواب x1,x2رو میزنه-1,-2
که غلته
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
main(void)
{
int delta, a, b, c;
float x1, x2;
printf ("enter a,b,c\n");
scanf ("%d %d %d", &a, &b, &c);
delta=b*b-4*a*c;
if (delta>0)
{
x1=((-b+pow(delta,1/2))/2*a);
x2=((-b-pow(delta,1/2))/2*a);
printf ("x1=%f, x2=%f", x1, x2);
}
else if (delta==0)
{
x1=-b/2*a;
printf ("x1=x2=%f", x1);
}
else
{
printf("no real roots for this q");
}
system ("pause");
return 0;
}
مخم داغ کرد چون به یه نکته اونم در powدقت نکرده بودم
این از برنامه با رفع اشکال و دقیق و کامل:خدا کنه دیگه مشکل نداشته باشه
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()// اینجا هم نباید از void استفاده کنی وباید به این صورت که نوشته شده بنویسی
{
float x1, x2, a,delta, b, c;
printf ("enter a,b,c\n");
scanf ("%f%f%f", &a, &b, &c);//اینجا هم باید از %f استفاده کنیو بهتره که در scanfفاصله نذاری بین %fها
delta= (b*b)-(4*a*c);
if (delta>0)
{
x1=((-b+pow(delta,0.5))/2*a);//در اینجا اولا باید در توابعپاور و امثال این باید هر دو باید همنوع بخصوص در اینجا float باشه
x2=((-b-pow( delta,0.5))/2*a);// مثله بالا
printf ("x1 = %f , x2 = %f\n", x1, x2);
}
else if (delta==0)
{
x1=(-b/(2*a));//باید پرانتز رو بگذاری
printf ("x1=x2=%f", x1);
}
else
{
printf("no real roots for this q");
}
system ("pause");
return 0;
}
آخرین ویرایش به وسیله smahdi1991 : شنبه 07 آذر 1388 در 18:48 عصر
جند تا سورس کد به زبان سی گذاشتم از اول تا آرایه ها (180 به بالا) برا دانلود
خواستین میتونین ازش استفاده کنین
امیدوارم به دردتون بخوره
حجمشم خیلی پایینه (50 KB)
از اینجا دانلود کنید
آخرین ویرایش به وسیله amir-yeketaz : شنبه 07 آذر 1388 در 22:49 عصر
نه نه اگه a,b,cرو هم float کنم جوابش داغون میشه یه چیز چرت تر از اون میده
فهمیدم جریان چیه
این برنامه برایdelta=0جواب میده حتی delta>0وقتی x1,x2اعداده int یا floatباشن هم جواب میده مشکل وقتیه که مثلا دلتا میشه 5 چون x1,x2اعداه گنگ میشن(توی صورت رادیکال 5 داریم) و برنامه تبدیلش میکنه به intیا floatعددش درست در نمیاد یعنی اون چیزی که من رو کاغذ به دست میارم نمیشه
من فكر مي كنم مشكل ايجاست
x1=((-b+pow(delta,0.5))/2*a);//در اینجا اولا باید در توابعپاور و امثال این باید هر دو باید همنوع بخصوص در اینجا float باشه
x2=((-b-pow( delta,0.5))/2*a);// مثله بالا
فكر كنم الان درست شد
x1=((-b+pow(delta,0.5))/(2*a));
x2=((-b-pow( delta,0.5))/(2*a));
ایول بابا من نمی دونم چرا اصلا این جا رو ندیده بودم اه ه ه ه
:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()// اینجا هم نباید از void استفاده کنی وباید به این صورت که نوشته شده بنویسی
{
float x1, x2, a, b, c,delta;
printf ("enter a,b,c\n");
scanf ("%f%f%f", &a, &b, &c);//اینجا هم باید از %f استفاده کنیو بهتره که در scanfفاصله نذاری بین %fها
delta= (b*b)-(4*a*c);
if (delta>0)
{
x1=((-b+pow(delta,0.5))/(2*a));//doroste hagh ba ali naghia bood ye parantez ham dar inja kam boodدر اینجا اولا باید در توابعپاور و امثال این باید هر دو باید همنوع بخصوص در اینجا float باشه
x2=((-b-pow(delta,0.5))/(2*a));// doroste hagh ba ali naghia bood ye parantez ham dar inja kam bood مثله بالا
printf ("x1 = %f , x2 = %f\n", x1, x2);
}
else if (delta==0)
{
x1=(-b/(2*a));//باید پرانتز رو بگذاری
printf ("x1=x2=%f", x1);
}
else
{
printf("no real roots for this q");
}
system ("pause");
return 0;
}
فکر کنم درست شد
اگر بازم کار نکرد میگم
حالا دوستان یه نگاه به این برنامه بندازید اینو اقامهدی لطف کردن برا من فرستادن(برنامه ماشین حساب با scanfبه جایgetch)
//in the name of god
#include<stdio.h>
#include<conio.h>
int main()
{
int x,y,i;
char c;
for (i=1; i<=4; i++)
{
printf("\nPlease Enter 2 operands :");
scanf("%d%d%c",&x,&y,&c);
printf("please Enter desigred operator(+ - / *)\n");
scanf("%c",&c);
printf("x = %d,,y = %d Operator:%c\n",x,y,c);
switch(c)
{
case '*':
{
printf("x * y = %d",x*y);
break;
}
case '+':
{
printf("x + y = %d",x+y);
break;
}
case '/':
{
printf("x / y = %d",x/y);
break;
}
case '-':
{
printf("x - y = %d",x-y);
break;
}
default:
printf("error happened!");
break;
}
}
getch();
return 0;
}
من یه برنامه شبیه این نوشتم ولی درست اجرا نمیشه میره توی defaultدر واقع اصلا printf ,scanfدوم رو اجرا نمیکنه//in the name of god
#include<stdio.h>
#include<conio.h>
int main()
{
int x,y;
char c;
printf(" enter x, y :\n");
scanf("%d%d",&x,&y);
printf("Enter desigred c:(+ - / *)\n");
scanf ("%c",&c);
printf ("x=%d , y=%d, c=%c\n", x, y, c);
switch(c)
{
case '*':
{
printf("x * y = %d",x*y);
break;
}
case '+':
{
printf("x + y = %d",x+y);
break;
}
case '/':
{
printf("x / y = %d",x/y);
break;
}
case '-':
{
printf("x - y = %d",x-y);
break;
}
default:
printf("error happened!");
break;
}
getch();
return 0;
}
اینم یه برنامه که یه عدد از ما میگیره جذر اون عدد رو به صورت intمیده بیرون
#include <stdio.h>
#include <conio.h>
int main(void)
{
int sum, N, count, x;
printf ("enter N\n");
scanf ("%d", &N);
x=1;
sum=1;
count=0;
while(sum<=N)
{
x+=2;
sum+=x;
count+=1;
}
printf ("%d\n", count);
getch();
return 0;
}
ولی وقتی با getchمینویسمش غلط میشه
شاید از getch غلط استفاده میکنم#include <stdio.h>
#include <conio.h>
int main(void)
{
int sum, N, count, x;
printf ("enter N\n");
N=getch();
x=1;
sum=1;
count=0;
while(sum<=N)
{
x+=2;
sum+=x;
count+=1;
}
printf ("%d\n", count);
getch();
return 0;
}
همینطور که گفتم تابع getch برای دریافت یک کاراکتر به کار برده می شه نه اعداد اما اگر عدد وارد کنیدفکر کنم در این حالت کد اسکی اونو دریافت کنه به همین دلیل اون اوب مورد نظر رو نمی دیدید
خوب از اونجایی که دکمه ی اینتر( enter ) دوکاراکتری هست پس برای اینکه این برنامه درست بشه بایدد قبل از دریافت +یا- یا .... باید از دوتا space قبلش استفاده کرد تا دریافت کنه بعدش کاراکتر مارو.به صورت زیر:
#include<stdio.h>
#include<conio.h>
int main()
{
int x,y;
char c;
printf(" enter x, y :\n");
scanf("%d%d",&x,&y);
printf("Enter desigred c:(+ - / *)\n");
scanf (" %c",&c);//اینجا باید دوتا space قبل %Cقرار بدید
printf ("x=%d , y=%d, c=%c\n", x, y, c);
switch (c)
{
case '*':
{
printf("x * y = %d",x*y);
break;
}
case '+':
{
printf("x + y = %d",x+y);
break;
}
case '/':
{
printf("x / y = %d",x/y);
break;
}
case '-':
{
printf("x - y = %d",x-y);
break;
}
default:
printf("error happened!");
break;
}
getch();
return 0;
}
ممنون دوست گرامي اين دو تا space واقعا نكته خوبي بود كه فقط تجربي به دست مي ياد
اين مشكل رو حتي بعضي از اساتيد دانشگاه (آقاي...) نمي دونستند كه شما يكي از سوالات دوران دانشجوييم رو جواب دادين
ممنون
سلام
من یک برنامه به زبان سی پلاس پلاس دارم که می خوام اونو به سی تبدیک کنم
اگر ممکنه منو راهنمایی کنید که خیلی نیاز دارم
خواهش می کنم alinaghihaعزیز
خوب دوستان اصلا این برای اینکه همه اگر چیزی بلد هستند مشکلات همدیگر رو برطرف کنند و من هم خودم این نکته رو نمی دونستم خدا رو شکر بچه های این تاپیک با فعالیت هاشون و سوال های خوبشون باعث میشوند تا همه ی افراد با تجربه های جدید نیز رو برو بشوند و نکات ریز رو بیا موزند من هم وقتی اینو از استادم پرسیدم استادم وقتی جواب بهم داد خیلی خوشحال شدم که یکی از نکات ریز برنامه نویسی به زبان C رو به واسطه سوالات و اقدام برای پیدا کردن پاسخشون تونستم بفهمم و مطمئنم که با فعالیت تو این زمینه ها خیلی چیزای دیگرو هم می فهمم
خوب دوست عزیزmarde_fooladeکدتون رو قرار بدید تا ببینیم چی میشه هرچند نباید در اینجا قرار میدادید و لی چون اینجا مربوط به آموزش C و شما هم که می خواهید یا دبگیرید عیبی نداره پس کد رو قرار بدید
سلام دوستان
استادمون هفته پیش یه سوال داد به عنوان جایزه
حلش کردم جالب بود گفتم اینجا هم بزارم
یه برنامه بنویسید که اعداد یک تا 1000 رو دریافت کنه یکی از این اعداد گم شده برنامه باید مشخص کنه که چه عددی گم شده(توجه اعداد در هیچ جا قابل ذخیره کردن نیستند)
یعنی چی
یعنی 1000 تا عدد وارد کنیم از طریق ورودی
یا اینکه چیزه دیگه ای هست سوال من که درست متوجه نشدم
لطفا دوباره دقیق تر سوال رو بفرمایید بانوخانوم
آخرین ویرایش به وسیله smahdi1991 : سه شنبه 10 آذر 1388 در 16:03 عصر
بیبینید ما اعداد 1 تا 1000 رو داریم وارد میکنیم (الزامی نیست ترتیب خواستی داشته باشه اعدادی که وارد میکنیم)
یکی از این اعدادگم شده و ما نمیدونیم که این چه عددیه در وا قع ما 999 تا عدد وارد میکنیم برنامه باید بگه اون عددی که وارد نکردیم بین 1 تا 1000 چیه
می خواید راهنمایی کنم؟
آخرین ویرایش به وسیله بانوی ایران : سه شنبه 10 آذر 1388 در 16:14 عصر