פורסם 2005 בדצמבר 1519 שנים אני רק מתחיל לתכנת ב-C. (אני לא יודע על יותר מדי פקודות)אני מנסה לפתור את השאלה הבאה: סדרה a1, a2, של מספרים מקיימת an+1 = 3an an-1 עבור n >= 2. כתוב תכנית שתקבל כקלט את הערכים של a98 ו-a100 ותדפיס את ערכיהם של a1 ו-a2.וזה מה שכתבתי:הבעייה שאינני יודע לבדוק האם אני צודק.א. עניתי נכון לשאלה?ב. איך אני יכול לבדוק את עצמי?#include <iostream>using namespace std;int main(){ double a[100]={0}; //vector of the series numbers. cout <<"enter a100 and a98:" <<endl; cin >>a[99] >>a[97]; //load 2 numbers. a[98]=(a[99]+a[97])/3; //calculation a99. for (int i=96;i>=0;i--) //calculation a97 to a1. { a[i]=(3*a[i+1]-(a[i+2])); //example: a97=3a98-a99 } cout <<"The a2 is: " <<a[1]<<endl; cout <<"The a1 is: " <<a[0]; cout <<endl; return 0;}
פורסם 2005 בדצמבר 1519 שנים עושה רושם שהתוכנית שלך עובדת, אבל למה להשתמש במערך? אתה צריך לזכור רק שני ערכים כל פעם. אני אמנם לא יודע C, אבל זה אמור להיות קוד יעיל יותר:#include <iostream>using namespace std;int main(){ double y =0.0; //An+2 will receive A100 double x =0.0; //An+1 double temp =0.0; //will receive A98 cout <<"enter a100 and a98:" <<endl; cin >>y >>temp; //load 2 numbers. x=(y+temp)/3; //calculation of a99. for (int i=97;i>0;i--) //calculation a97 to a1. { temp=(3*x-y); y=x; x=temp; } cout <<"The a2 is: " <<y<<endl; cout <<"The a1 is: " <<x; cout <<endl; return 0;}תבדוק טוב את התנאי עצירה של הלופ, אם יש סיכוי ליפול זה שם.
פורסם 2005 בדצמבר 1619 שנים התנאי עצירה בסדר(התחלת מ- 97 ולא מ-96 כמו מקודם בגלל שלא כללת 0, בכל מקרה זה רץ 97-1+1=96-0+1=97 פעמים).
פורסם 2005 בדצמבר 1719 שנים מחבר תודה רבה! אגב, מאיפה הצבעים בכתיבת הקוד? לי יש רק כחול, שחור וירוק. (והם נעלמים שאני מעתיק את הקוד לפורום)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.