עבור לתוכן

עזרה עם תוכנית קצרה בפסקל

Featured Replies

פורסם

"כתוב תוכנית שתקלוט רשימת מספרים ותבדוק כל מספר אם הוא דו-ספרתי. אם כן, התוכנית תדפיס את סכום ספרותיו. אם לא, התוכנית תדפיס את סכום שתי ספרותיו הימניות של המספר. התוכנית תסתיים כאשר יקלט מספר קטן מ-10"

חובה להשתמש ב-WHILE.

משום מה לא מצליח לי, לא הולך לי עם ה-WHILE הזה (יש לנו שתי מורות והאחרת תמיד אמרה לנו להשתמש ב-REPEAT) אז אשמח אם מישהו יוכל לעזור לי. :(

פורסם

תכתוב פה את מה שעשית ואני אתקן לך את זה

פורסם

באיחור של שבוע, בטח אתה לא צריך את זה כבר.. אבל בכל זאת-

program numbers;

uses

crt;

var

num,num1,num2,sum,check:integer;

begin

clrscr;

writeln('Enter number:');

readln(num);

while num>=10 do

begin

if (num>9) and (num<100) then

begin

clrscr;

num1:=num div 10;

num2:=num mod 10;

sum:=num1+num2;

writeln(sum);

readln(num)

end

else

begin

clrscr;

check:=num mod 100;

num1:=check div 10;

num2:=check mod 10;

sum:=num1+num2;

writeln(sum);

readln(num);

end;

end;

end.

פורסם

באיחור של שבוע, בטח אתה לא צריך את זה כבר.. אבל בכל זאת-

program numbers;

uses

crt;

var

num,num1,num2,sum,check:integer;

begin

clrscr;

writeln('Enter number:');

readln(num);

while num>=10 do

begin

if (num>9) and (num<100) then

begin

clrscr;

num1:=num div 10;

num2:=num mod 10;

sum:=num1+num2;

writeln(sum);

readln(num)

end

else

begin

clrscr;

check:=num mod 100;

num1:=check div 10;

num2:=check mod 10;

sum:=num1+num2;

writeln(sum);

readln(num);

end;

end;

end.

אתה לא צריך IF בכלל

קודם תשמור את הספרה הימינית ביותר

אחרכך תחלק ב10

ושוב תשמור את הספרה הימינית ביותר...

תחבר אותם ביחד

וזהו

את הכל תשים בתוך לולאה שבודקת אם זה גדול שווה מ10

שים לב שאם מכניסים 10 אז אתה אתה צריך את שני הספרות הימניות ביותר

וגם אם אתה מכניס את המספר 1234234234 אתה צריך את שני הספרות הימניות ביותר

זה ההסבר בערך על מה שרשמתי לך למעלה

פורסם
  • מחבר

חבר'ה. אני חושש שאני שוב זקוק לעזרתכם.

שתי תוכניות ואת שתיהן אני לא מצליח. אז בבקשה תעזרו לי. :(

אה, ועוד לא למדנו את הפקודה uses crt. אנחנו רק יודעים לולות FOR/WHILE/REPEAT ומערכים (ועוד כמה דברים בסיסייים ברורים כמו read ו-write...).

מערך חד-מימדי:

1. א. כתוב תוכנית שתקלוט מספרים בין 25 ל-90 למערך חד-מימדי בגודל 100. התוכנית תקלוט מספר נוסף קטן מ-90 ותדפיס את כל איברי המערך הגדולים ממנו.

הערה: הנח כי נתוני הקלט עומדים בתנאי הנדרש.

ב. כתוב את קטע התוכנית שיש להוסיף לתוכנית שכתבת בסעיף א', כדי לבדוק ולוודא שהמספר הנוסף עומד בתנאי הנדרש.

(את א' הצלחתי, את ב' לא)

2. כתוב תוכנית אשר תבצע את הפעולות הבאות:

א. תקלוט למערך קווי (חד מימדי) A את הטמפרטורות היומיות שנמדדו במשך חודש ימים (30 יום).

ב. תחשב ותדפיס את הטמפ' הממוצעת במחצית הראשונה של החודש (עד 15 בחודש כולל).

ג. תחשב ותדפיס את הטמפ' הממוצעת במחצית השנייה של החודש (מה-16 בחודש).

ד. תמצא את הטמפ' הגבוהה מבין שתי הטמפ' שחושבו בסעיפים ב' וג' ואת מחצית החודש בו היא נמדדה, ותדפיס תוצאות אלה.

(גם כאן הצלחתי רק את א')

אנא עיזרו. אגב, אם אתם קוראים הודעה זו בשבת מאוחר בערב (קרוב לחצות), אל תטרחו לענות. מאוחר מדי. כבר צלבו אותי הפוך / כבר עזרו לי.

פורסם

זהו הפתרון לתרגיל 2, לא לקחתי בחשבון את המקרה שהממוצעים שווים, גם לא התבקשת בתרגיל.

ההנחה היא כי הממוצעים שונים.

program temp;

var

arr:array[1..30] of integer;

i,sum1,sum2,avg1,avg2:integer;

begin

sum1:=0;

sum2:=0;

writeln('Enter 30 temperatures');

for i:=1 to 30 do

readln(arr);

for i:=1 to 15 do

sum1:=sum1+arr;

avg1:=sum1 div 15;

writeln('The average temp for days 1-15 is:', avg1);

for i:=16 to 30 do

sum2:=sum2+arr;

avg2:=sum2 div 15;

writeln('The average temp for days 16-30 is:', avg2);

if avg1>avg2 then

writeln('The higher average temperature was measured in days 1-15 and was:', avg1)

else

writeln('The higher average temperature was measured in days 16-30 and was:', avg2);

readln;

end.

בקשר לתרגיל 1,

readln(extra_num); {קליטת המספר הנוסף}

While extra_num>90 do

begin

writeln('Enter extra number');

readln(extra_num);

end;

המספר הנוסף יקלט, במקרה שהוא נמוך מ-90 התוכנית תדלג על לולאת ה While,

במקרה אחר היא תמשיך לקלוט מספר נוסף עד שייקלט מספר הקטן מ-90.

ארכיון

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

דיונים חדשים