c/c++ תרגול קוד יעיל - עמוד 4 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

c/c++ תרגול קוד יעיל


007המקורי

Recommended Posts

ואם לא היית יודע בזמן כתיבת הקוד כמה איברים הולכים להיות בסדרה? (לדוגמה, אם מספר האיברים בסדרה היה נקבע ע"י קלט מהמשתמש)

באופן כללי כשפותרים בעיה, נסה לשמור את הפתרון "גנרי". כמו שמקודם אמרתי שהפתרון שלך היה עובד רק אם היו מבקשים מספר שמתחלק ב-3, גם עכשיו הפתרון עובד ספציפית עבור המספר 16.

קישור לתוכן
שתף באתרים אחרים

  • תגובות 96
  • נוצר
  • תגובה אחרונה

טוב על הבעיה הגנרית יש פיתרון (החלפתי עם המישתנה c)

אבל איך עוצרים תלולאה הזאת אחרי התנאי (את זה אני בודק עשכיו ולא הולך לי משהו)


#include "stdafx.h"
#include <iostream>

using namespace std;

int main()

{
int a=1,b=0,i=0,c=0;

for(i=0;i<=16;i++)
{
c=a+b;
b=a;
a=c;

cout << c << endl;



int res=0,i_fib=1;

if ((c>0)&&(i_fib>0))
for(i_fib=1;i_fib<=c;i_fib++)

{

if (c%i_fib == 0)
res++;
}


if (res <= 2 )
cout << c <<" reshoni\n";
else
cout << c <<"lo reshoni\n";

}

char f;
cin >> f;
return 0;

*תוקן הקוד (המישתנה c בימקום ערך הn של הסידרה)

קישור לתוכן
שתף באתרים אחרים

יש שתי אופציות. קודם כל, הביטוי האמצעי ב-for הוא התנאי של הלולאה, כלומר הלולאה ממשיכה כל עוד הוא אמת. לכן אפשר לעצור את הלולאה ע"י שינוי התנאי הזה. אופציה שנייה היא להשתמש בפקודה break שפשוט יוצאת מהלולאה.

קישור לתוכן
שתף באתרים אחרים

חשבתי על זה :

break לא מתאים

הוספתי i_fib גדול שווה c ---כדי לסיים תלולאה (לא עובד)

קשה קשה :D

 #include "stdafx.h"
#include <iostream>

using namespace std;

int main()

{
int a=1,b=0,i=0,c=0;

for(i=0;i<=16;i++)
{
c=a+b;
b=a;
a=c;

cout << c << endl;



int res=0,i_fib=1;

if ((c>0)&&(i_fib>0))
for(i_fib=1;i_fib<=c;i_fib++)

{

if (c%i_fib == 0)
res++;



if (res >= 2 )
cout << c <<"lo reshoni\n";
i_fib >= c;// זה התוספת
}
else
cout << c <<" reshoni\n";

}

char f;
cin >> f;
return 0;

}

קישור לתוכן
שתף באתרים אחרים

התוספת שהכנסת חסרת משמעות - הפעולה =< רק משווה, ולא משנה ערך של שום דבר.

break גם יכולה להתאים.

חוץ מזה, שים לב לדבר מיותר - אתה תמיד בודק אם המספר c מתחלק ב-1, אבל זה תמיד נכון - כל מספר מתחלק ב-1.

קישור לתוכן
שתף באתרים אחרים

*יש טעות בקוד.

  #include "stdafx.h"
#include <iostream>

using namespace std;

int main()

{
int a=1,b=0,i=0,c=0;

for(i=0;i<=16;i++)
{
c=a+b;
b=a;
a=c;

cout << c << endl;



int res=0,i_fib=1;

if ((c>0)&&(i_fib>0))
{
for(i_fib=2;i_fib<=(c-1);i_fib++)

{

if (c%i_fib == 0)
res++;
break;
}

if (res > 0)
cout << c <<"lo reshoni\n";

else

cout << c <<" reshoni\n";

}
// continue;
}

char f;
cin >> f;
return 0;

}

קישור לתוכן
שתף באתרים אחרים

 #include "stdafx.h"
#include <iostream>

using namespace std;

int main()

{
int a=1,b=0,i=0,c=0;
cout << "reshoni white out titels";
for(i=0;i<=16;i++)
{
c=a+b;
b=a;
a=c;

cout << c << endl;



int res=0,i_fib=1;

if ((c>0)&&(i_fib>0))
{
for(i_fib=2;i_fib<=(c-1);i_fib++)

{

if (c%i_fib == 0)
{
res++;
if (res > 0)

cout << c <<"lo reshoni\n";
// if (res = 0)
// cout << c <<"reshoni";
break;
}


}



//else

// cout << c <<" reshoni\n";

}

}

char f;
cin >> f;
return 0;

}

זה הקוד הכי טוב בנתיים :nixweiss:

קישור לתוכן
שתף באתרים אחרים

קלוט מספר והדפס את מיספר סיפרותיו.

זה הקוד.

יעיל?

עריכה: אגב אפשר לעשות את זה עם "for"?

 #include "stdafx.h"
#include <iostream>

using namespace std;

int main()

{
int num=0,res=0,i=0;
cout << "enter number !";
cin >> num ;

while (num > i )
{ num = (num / 10);
i++;
if (num==1)
i++;
}
cout <<i<< endl;




char f;
cin >> f;
return 0;


}

קישור לתוכן
שתף באתרים אחרים

קלוט מיספר והדפס את סכום סיפרותיו.

1 service pack :lol: (או יותר נכון ליפני 1 service pack

קימבנתי את התוכנית הקודמת עם התוכנית הנוכחית.

*אני בהחלט יקח לתשומת ליבי את הערות שלכם וינסה לשפץ.

בנתיים ככה התוכנית עובדת.

הקוד.

 #include "stdafx.h"
#include <iostream>

using namespace std;

int main()

{
double num=0;
int i=0;
cout << "enter number !";
cin >> num ;

while (num > i )
{ num = (num / 10);
cout << num << "num while"<<endl;
i++;
if (num<i)
i++;

}
cout <<i<< endl;


cout << "enter only !the same number!" << endl;
cin >> num;
int n=0,sum=0,res_int=0;
double res_double=0 ,num2=0 ;
for (n= 0;n<=(i);n++)
{
res_double = (num / 10);
cout << res_double << " double" << endl;
num=res_int =(num / 10);
cout << res_int << " int" << endl;
num2=res_double - res_int;
cout << num2 << " num2" << endl;
num2=((num2)*10);
cout << num2 <<" num2*10" << endl;
sum=sum +num2;
}
cout << sum << " sum digits" << endl;
char f;
cin >> f;
return 0;


}

קישור לתוכן
שתף באתרים אחרים

התוכנית שלך לא עובדת. אני לא רואה שום רציונל מאחורי התוכנית שכתבת. אני לא רואה איך האלגוריתם שניסית לכתוב שם יכול לבודד ספרות ממספר בייצוג נקודה צפה.

תנסה לפני שאתה ניגש לקוד לנסח בצורה מסודרת את התוכנית שלך במילים.

קישור לתוכן
שתף באתרים אחרים

התוכנית אבל לא עובדת

תנסה מה מספר הספרות במספר 234

ובקשר לגירסא החדשה הסתבכת קצת

num%10 זאת סיפרת האחדות כל פעם.

תשתמש בזה

האלוגריתם עצמו פשוט

כל עוד המספר שונה מ0

הוסף את ספרת האחדות לסכום

העלם את ספרת האחדות

הגדל את מונה הספרות ב1

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...