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

maede92

عضو جدید
سلام دوستان
من یه الگوریتمی میخوام که تعیین کنه که آیا یک درخت دودویی کامل هست؟
 

mina.rad

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

mina.rad

عضو جدید
یه سوال دیگه ام دارم
برنامه ای بنویسیدکه همه ی اعداد3رقمی که در آنهایکان ازدهگان ودهگان از صدگان بزرگتراست رادرخروجی چاپ نماید
 

Omid Jackson

عضو جدید
یه سوال دیگه ام دارم
برنامه ای بنویسیدکه همه ی اعداد3رقمی که در آنهایکان ازدهگان ودهگان از صدگان بزرگتراست رادرخروجی چاپ نماید

عذر میخوام مغزم الآن بستست نمیدونم درست جواب میده یا نه!؟!؟!
نگاه کنین ببینین درسته؟ به نظرم اومد درست باشه
کد:
#include <iostream>


using namespace std;


int main()
{
	for ( int sad = 1 ; sad < 10 ; sad++ )
		for ( int dah = sad + 1 ; dah < 10 ; dah++ )
			for ( int yek = dah + 1 ; yek < 10 ; yek++ )
				if ( yek > dah && dah > sad )
					cout << sad << dah << yek << " ";
}
 

Omid Jackson

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

H.r.Ghanbari

عضو جدید
عدد مثلثی!؟

عدد مثلثی!؟

سلام یه سوال برنامه نویسی تو سی دارم
یع عددازورودی دریافت کنه تعیین کنه مثلثی یانه؟
عددی که واردمیشه عضواعدادقرمزباشه.کمکم کنید
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
....................
بایدشامل این قرمزهایاشند:cry:

1. 3 تا متغییر تعریف کن isOk, step, tempStep
step = tempStep = 1;
isOk = 0;
2. یه حلقه بنویس از 1 تا ورودی مثلا x=4;
3. حالا طوی حلقه ایتدا از tempStep کم کن;
4. با یه if تست کن اگه مقدارش صفر شده باشه کد داخل شرط رو اجرا کنه;
5. کد داخل شرط: اگه مقدار شمارنده برایر x باشه یعنی عدد مثلثی هستش isOk = 1
و اگه نه یه واحد به step اضافه کن و بذار طوی tempStep;
...:gol:
 

H.r.Ghanbari

عضو جدید
عدد 3رقمی یکان > دهگان > صدگان ...

عدد 3رقمی یکان > دهگان > صدگان ...

یه سوال دیگه ام دارم
برنامه ای بنویسیدکه همه ی اعداد3رقمی که در آنهایکان ازدهگان ودهگان از صدگان بزرگتراست رادرخروجی چاپ نماید

روش 1:

1. اگه ورودی عدد باشه تبدیل به رشته کن:
2. طول رشته رو پیدا کن:
3. باید یه شرط بتویس که چک کنه ایا مقدار کاراکتر با اندیس طول رشته منهی 1 از مقدار کاراکتر با اندیس طول رشته منهی 2 بزرگتر است و همچنین
مقدار کاراکتر با اندیس طول رشته منهی 2 از مقدار کاراکتر با اندیس طول رشته منهی 3 بزرگتر است.
* باید طول رشته بزرگتر از 3 باشد.

روش 2:
فرض می کنیم ورودی عدد است نه رشته int x = 123;
حالا باید با تقسیم و باقیمانده بر 10 در دو مرحله تست رو انجام بدی...

در اخر از هر یک از الگوریتم های بالا می تونی در داخل یه حلقه از 100 تا 1000 استفاده کنی...:gol:
 
آخرین ویرایش:

H.r.Ghanbari

عضو جدید
درخت کامل

درخت کامل

سلام دوستان
من یه الگوریتمی میخوام که تعیین کنه که آیا یک درخت دودویی کامل هست؟

فرض درخت کامل:
درختی که شامل حداکثر تعداد گره ها احتمالا بجز اخرین سطح و گرهها در اخرین سطح از سمت چپ پر شده باشند.
مهم اینکه شما بتونی درخت رو پیمایش کنی :
فرض می کنیم شما بصورت عمقی درخت رو پیمابش می کنید;
سه متغییر بعنوان عمق برگها در نظر می گیریم int nextD, preD , d
عمق اولین برگ رو بذار داخل هر 3 متغییر
عمق برگ های بعدی رو بذار داخل nextD;
قبل از مقدار دهی nextD مقدارش رو بذار داخل preD;
شرط ها هنگام رسیدن به برگها:
مقدار nextD نمی تواند بیش از d , preD باشد.
مقدار nextD نمی تواند بیش از یک واحد با d اختلاف داشته باشد...:gol:
 

mina.rad

عضو جدید
کسی هست بهم کمک کنه؟

کسی هست بهم کمک کنه؟

:que:
برنامه مثلثی روکسی نتونسته حل کنه؟
 

shady sh

عضو جدید
:que:
برنامه مثلثی روکسی نتونسته حل کنه؟
برای این برنامه باید از آرایه استفاده کنید.
توی حلقه ،شمارنده ای مثل i=2 و یه sum=1 تعریف میکنید .مقدار اولیه sum را در آریه قرار میدید وسپس sum+=i و به شمارنده یکی اضافه میکنید.
با این روش توی آرایه این عداد وجود داره . 1،3،6،10،15،....
در آخر یه عدد میخونید و اگر عدد توی آرایه بود "بله "را چاپ میکنید.
 

Omid Jackson

عضو جدید
:que:
برنامه مثلثی روکسی نتونسته حل کنه؟

برنامه آمادست:)

برای این برنامه باید از آرایه استفاده کنید.
توی حلقه ،شمارنده ای مثل i=2 و یه sum=1 تعریف میکنید .مقدار اولیه sum را در آریه قرار میدید وسپس sum+=i و به شمارنده یکی اضافه میکنید.
با این روش توی آرایه این عداد وجود داره . 1،3،6،10،15،....
در آخر یه عدد میخونید و اگر عدد توی آرایه بود "بله "را چاپ میکنید.

به نظرم این کاری که کردم خیلی راحتتر از این مبحث شما باشه!
 

پیوست ها

  • triangle nums.rar
    490 بایت · بازدیدها: 0

hadi73gh

عضو جدید
سلام
من میخوام یه برنامه بنویسم که عدد رو از ورودی بخونه ، اعدادی که اول هستند رو جدا کنه و جمع بزنه و جمع رو نمایش بده:
یعنی عدد 2598 رو که وارد کنیم اعداد 5و2 رو جمع کنه که اول هستند و عدد 7 رو نمایش بده.ممنون میشم دوستان از راهنماییهاتون
در ضمن ساده بنویسید من مبتدی هستم.

اینم برنامه ای هست که خودم نوشتم به نظرتون مشکلش چیه؟

#include<stdio.h>void main(){ long int x,i,c,flag,sum=0; printf("x="); scanf("%d",&x); while(x>0) { c=x%10; flag=1; for(i=2; i<=c/2; i++) { if(c%i==0) { flag=0; break; } } if(flag==1) { sum=c+sum; break; } x=x/10; } printf("sum=%d",sum);}
کد:
#include<stdio.h>
void main()
{
      long int x,i,c,flag,sum=0;
     printf("x=");
     scanf("%d",&x);
      while(x>0)
     {
          c=x%10;
          flag=1;
             for(i=2; i<=c/2; i++)
          {
                if(c%i==0)
                {
                     flag=0;
                     break;
                     }
          }
          if(flag==1)
          {
                sum=c+sum;
                     break;
             }
          x=x/10;
      }
      printf("sum=%d",sum);
}
 

.:NaZaNiN:.

عضو جدید
اینجا روم یاهو نیست که همه همون لحظه آن باشن، شما بپرس بلد باشیم جواب میدیم، حتی زودتر از کاری که الآن کردید جواب میگیرید;)
چی کار کردم؟
ببینید یه برنامه میخوام که یک پاراگراف از کاربر بگیره و تعداد جمله ها و کلمه و حروف اون پاراگراف رو بده!
هر چن برنامه رو دارم!
فقط استادمون گفت ی ایراد داره اونم اینه ک وقتی بیشتر از یه اسپیس میدی؛برنامه اشتباه جواب!اما تا وقتی ک درست اسپیس بدی!همه چی حله!
 

shady sh

عضو جدید
سلام
من میخوام یه برنامه بنویسم که عدد رو از ورودی بخونه ، اعدادی که اول هستند رو جدا کنه و جمع بزنه و جمع رو نمایش بده:
یعنی عدد 2598 رو که وارد کنیم اعداد 5و2 رو جمع کنه که اول هستند و عدد 7 رو نمایش بده.ممنون میشم دوستان از راهنماییهاتون
در ضمن ساده بنویسید من مبتدی هستم.

اینم برنامه ای هست که خودم نوشتم به نظرتون مشکلش چیه؟

#include<stdio.h>void main(){ long int x,i,c,flag,sum=0; printf("x="); scanf("%d",&x); while(x>0) { c=x%10; flag=1; for(i=2; i<=c/2; i++) { if(c%i==0) { flag=0; break; } } if(flag==1) { sum=c+sum; break; } x=x/10; } printf("sum=%d",sum);}
کد:
#include<stdio.h>
void main()
{
      long int x,i,c,flag,sum=0;
     printf("x=");
     scanf("%d",&x);
      while(x>0)
     {
          c=x%10;
          flag=1;
             for(i=2; i<=c/2; i++)
          {
                if(c%i==0)
                {
                     flag=0;
                     break;
                     }
          }
          if(flag==1)
          {
                sum=c+sum;
                     break;
             }
          x=x/10;
      }
      printf("sum=%d",sum);
}
HTML:
void main()

{

      int x,b,sum=0;

     printf("x=");

     scanf("%d",&x);

      do

      {

         int c=x%10;

          b=x/10;

        

         for (int i=2;i<=c/2;i++)

           {

             int r=c%i;

            if(r==1)

              {

                sum+=c;

                break;

              }

           }


             x=b;

      }


       while (b>0);

      cout<<sum;


     getch();

     return ;

}
 

H.r.Ghanbari

عضو جدید
Rep

Rep

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

اگه برنامه با این شرایط بسیار ساده درست کار کنه بعدش می تونید استثنا هایی که با هاش رو برو می شید کم کم اضافه کنید و برنامه تون کاملتر بشه...
1. پاراگراف در فایلهای متنی تحت ویندوز با CR+LF = \r\n مشخص می شه و در سیستم های unix base با کاراکتر LF = \n
2. تعداد جمله ها برابر تعداد "." به شرطی که مثلا بعنوان اعشار نباشه و...
3. تعداد حروف هم که برابر حروف بزرگ و کوچک در پاراگراف.
4. تعداد کلمه ها برابر تعداد spaceها.
به نظر من: اشکال در اونجا می تونه باشه که وقتی a. دو سه تا space پشت سر هم می یاد b. بین دوتا space باید حرفی وجود داشته باشد تا یه جمله محسوب بشود " . . . . . " Ex
پس بهتره وقتی به space می رسید اشاره گر رو از همون جا به یه تابعی بفرستید تا وضعیت space تا رسیدن به اولین حرف بعد از خودش بررسی کنه...
 

ali.dadash

عضو جدید
دوستان گلم سلام...
کسی از دوستان بلده با آرایه ها ضرب 2 عدد 50 رقمی رو در c++ انجام بده؟!؟!؟
تروخدا به دادم برسین پروژه دارم دارم بدبخت میشم...
 

ASILTASH

عضو جدید
دوستان گلم سلام...
کسی از دوستان بلده با آرایه ها ضرب 2 عدد 50 رقمی رو در c++ انجام بده؟!؟!؟
تروخدا به دادم برسین پروژه دارم دارم بدبخت میشم...

سلام :

منظورتون اینه که ضرب دستی رو که خودمون انجام میدیم ، دو تا آرایه انجام بدن؟

( یعنی یکان دومی رو به همه ارقام اولی ضرب و الی آخر ؟)
 

ali.dadash

عضو جدید
سلام :

منظورتون اینه که ضرب دستی رو که خودمون انجام میدیم ، دو تا آرایه انجام بدن؟

( یعنی یکان دومی رو به همه ارقام اولی ضرب و الی آخر ؟)



آره،به من یه پروژه دادن که باید با "آرایه ها" ضرب دو عدد را انجام بدم...
این آرایه ها باید تا 50 رقم رو ساپورت کنه
یعنی این جوری میشه:
"ضرب دو عدد (حد اکثر) 50 رقمی با زبون c++ با قسمت آرایه ها"
و اون منطقی که شما گفتین هم درسته،یعنی باید همین طوری باشه دیگه!!!

من دانشجوی ترم اولم...کمکم کنید تو را به خدا...نمره من به شدت با این پروژه وابسته ست...
 

Omid Jackson

عضو جدید
آره،به من یه پروژه دادن که باید با "آرایه ها" ضرب دو عدد را انجام بدم...
این آرایه ها باید تا 50 رقم رو ساپورت کنه
یعنی این جوری میشه:
"ضرب دو عدد (حد اکثر) 50 رقمی با زبون c++ با قسمت آرایه ها"
و اون منطقی که شما گفتین هم درسته،یعنی باید همین طوری باشه دیگه!!!

من دانشجوی ترم اولم...کمکم کنید تو را به خدا...نمره من به شدت با این پروژه وابسته ست...

دانشجوی ترم اول بودن رو ول کن، اگر بخوای میتونی بنویسی، منم دانشجوی ترم اول کارشناسی ناپیوسته ام تازه قبلش رشتم نقشه برداری بود! گفتم که نگی نمیشه!:D
خب بذار بگم چیکار کنی، امیدوارم انتظار نداشته باشی ما برات بنویسیم!!!! این خیلی طولانیه و الآن هم موقع امتحانا و ... اصلا راخ نداره! راهش اینه که یا خودت بنویسی یا پول بدی بنویسن که من خودم گزینه اول رو اتخاب میکنم:D
چون تا یه حدی میتونی عدد وارد کنی مجبوری عددت رو به عنوان رشته بگیری! خب این مرحله اول که ورودیت رو حل کردی.
حالا من توصیه میکنم که دوتا آرایه هم بگیر کل خونه هاش رو صفر کن و اون ورودیات رو برعکس کن بریز دونه دونه تو آرایه!
یعنی اگر 123 دادی تو ورودی، اینو 321 کن بریز تو آرایه، خب یادت باشه که وقتی اینا رو رشته گرفتی کد اسکی ذخیره میشه که ازشون 48 تا کم کن وقتی میخوای بریزی تو آرایه و آرایه هم از نوع int بگیر که مشکل ساز نشه. حالا اینا رو گرفتی ریختی تو آرایه باید یه حرکتی کنی! اونم اینه که به دوتا حلقه تو هم نیاز داری! چون قراره هر خونه آرایه دوم رو ضرب کنی تو آرایه اول! پس وقتی رو خونه اول هستی، باید به تعداد ارقام عدد دوم حلقه دوم بره که خونه اول آرایه اول تو تک تک خونه های آرایه دوم ضرب شه، امیدوارم متوجه شده باشی!!!!
وقتی این کارو کردی هر سری باید ضرب که میکنی اون یه خونه رو تو بقیه خونه ها مجموعشون رو یه جا ذخیره کنی! حالا مد بگیر ازش باقیمانده بمونه و تقسیم به 10 کن یه بار عددی که موندش رو بفرست برا ضرب بعدی. همینطور ادامه بده تا تموم شه! یعنی اینو دیگه حلقه انجام میده! تو دیگه کار خاصی نمیخواد انجام بدی. بشینی پاش کلا 2 روز کار میبره، اگر تجربه کد زدنت کم باشه:) موفق باشی
پ.ن: اگر متوجه نشدی پیغام بذار پروفایلم که کجاشو متوجه نشدی:);)
 

ASILTASH

عضو جدید
آره،به من یه پروژه دادن که باید با "آرایه ها" ضرب دو عدد را انجام بدم...
این آرایه ها باید تا 50 رقم رو ساپورت کنه
یعنی این جوری میشه:
"ضرب دو عدد (حد اکثر) 50 رقمی با زبون c++ با قسمت آرایه ها"
و اون منطقی که شما گفتین هم درسته،یعنی باید همین طوری باشه دیگه!!!



من دانشجوی ترم اولم...کمکم کنید تو را به خدا...نمره من به شدت با این پروژه وابسته ست...
مشاهده پیوست cross.txt
سلام علی آقا :
این یه قسمت برنامس واسه توضیحشم برات پیام گذاشتم.
 
آخرین ویرایش:

marshal.00

عضو جدید
[h=2][/h]
سلام دوستان .در يه قسمتي از اين text به مشكل بر خوردم. قسمت آخرش لطفا راهنماييم كنيد.


خواسته ها: تعریف ساختار های زیر


  • ساختارpoint: شامل 2 عدد اعشاری
  • ساختار rectangle : شامل 4 نقطه
  • ساختاری به نام exercise1 : شامل آرایه ای از مستطیل ها و ….


تعریف توابع :
توابع مربوط به ساختار rectangle


  • Get_area

توابع مربوط به ساختار exercise1 :


  • : که یک ورودی که تعداد مستطیل هاست را می گیرد و به آن تعداد مختصات یک مستطیل (هر کدام شامل 4 نقطه) را از ورودی می گیرد و آرایه مربوط به ساختار exercise1 را مقدار می دهد
  • : هدف این تابع نشان دادن مستطیل هایست که با هم همپوشانی دارند



اين قسمتي كه قرمز شده نمي دونم چه طوري ميشه ؟ :confused:
 

tito11

عضو جدید
سلام دوستان. چجوری میشه یه شکل مثله این کشید بدون استفاده از آرایه? Capture.JPG
 

Farnaz1373

عضو جدید
سلام کسی میتونه کمک کنه که چجوری میتونم یه برنامه بنویسم که مجموعه توانی را نشون بده ؟؟؟
یه الگوریتم تو ذهنم هست ولی پیاده سازیش خیلی برام سخته یکی میتونه راهنماییم کنه ؟؟؟؟
 

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))
 
بالا