ABA


"צריך בבקשה עזרה בתרגיל בפסקל"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #7517 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 7517
BasketBoy
חבר מתאריך 1.8.02
330 הודעות
   20:09   10.12.03   
אל הפורום  
  צריך בבקשה עזרה בתרגיל בפסקל  
 
ערכתי לאחרונה בתאריך 10.12.03 בשעה 20:28 בברכה, BasketBoy
 
אחים שלי אני צריך בבקשה עזרה בתרגיל הבא בפסקל, אני צריך להגיש אותו ביום ראשון ואני לא מצליח, ניסיתי כמה פעמים:
הנה התרגיל:
ריבוע לטיני הוא מערך של n*n שמכיל מספרים מ1..n כך שמספר כלשהו לא מופיע יותר מפעם אחת בשורה או בעמודה
דוגמא לריבוע לטיני:
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3

כתוב תוכנית הבודקת אם מטריצה 5*5 .


הנה מה שניסיתי :


program riboa_latini;
uses wincrt;
const
n=5;
var
i,j,x,z:integer;
a:array of integer;
found:boolean;

begin
randomize;
for i:=1 to n do
for j:=1 to n do
a:=random (100) +1;
writeln(' המספרים שנבחרו הם ');
for i:=1 to n do
begin
for j:=1 to n do
write(a:4);
writeln;
end;
found:=true;
i:=1;
while (found=true) and (i<=n) do
begin
j:=1;
while (found=true) and (j<=n) do
begin
x:=1;
while (a<>a) and (x<=n) do
x:=x+1;
if a=a
then found:=false;
z:=1;
while (a<>a) and (z<=n) do
z:=z+1;
if a=a
then found:=false;
j:=j+1;
end;
i:=i+1;
end;
if found=true
then writeln(' ריבוע לטיני')
else writeln(' לא ריבוע לטיני');
end.

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

תודה ענקית מראש !

בברכה,
אלון.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  במה שכתבתי למעלה לא יצא עם המקומות במערך BasketBoy 10.12.03 21:13 1
  מה הכוונה בריבוע לטיני? Jojo X Noah 10.12.03 22:30 2
     אם כן יש שתי אפשרויות...שמהשתמש מכניס Jojo X Noah 10.12.03 22:33 3
  הערה + הטעות שמצאתי. ShocKi  11.12.03 22:38 4
     אחי כשהעברתי לפה את הקוד הוא לא יצא טוב BasketBoy 11.12.03 23:43 5
         אחי אבל אתה לא מבין... ShocKi  12.12.03 00:20 6
             אחי לא משנה לא הבנת BasketBoy 12.12.03 00:31 7

       
BasketBoy
חבר מתאריך 1.8.02
330 הודעות
   21:13   10.12.03   
אל הפורום  
  1. במה שכתבתי למעלה לא יצא עם המקומות במערך  
בתגובה להודעה מספר 0
 
אז עשיתי את זה כן עם המקומות הנכונים אני חושב

בברכה,
אלון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Jojo X Noah

   22:30   10.12.03   
אל הפורום  
  2. מה הכוונה בריבוע לטיני?  
בתגובה להודעה מספר 0
 
   לכתוב את כל המספרים עד מספר כלשהו?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Jojo X Noah

   22:33   10.12.03   
אל הפורום  
  3. אם כן יש שתי אפשרויות...שמהשתמש מכניס  
בתגובה להודעה מספר 2
 
   את המספרים...ואז אתה רק צריך לעשות 4 משתנים ולבדוק אותם...
ואם לא שאתה כותב תמשתנים...אז תעשה אותם רנדומלי..ואז תבוד כל אחד מהם...
יכול להיות שלא הבנתי בכלל מה אתה רוצה...אז תסלחו לי...
ובקשר לזה שכתבתי שתי הודעות פתאום חשבתי על זה ולא היה לי כוח לערוך...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   22:38   11.12.03   
אל הפורום  
  4. הערה + הטעות שמצאתי.  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 11.12.03 בשעה 22:43 בברכה, ShocKi
 
אני לא ממש יודע לפתור את זה אבל שמתי לב שכתבת

if a=a then found:=false;

אין צורך ב IF.... אתה פשוט עושה


found:= a=a;

אם זה יהיה נכון התוכנה אוטומתית תרשום TRUE במשתנה או להפך...
זה היתרון במשתנה בוליאני חוסך הרבה תנאים.
חוץ מזה A תמיד יהיה שווה לA אז זה בכלל מיותר :|
פשוט עושים פעולת הצבה ואם ההצבה נכונה כלומר אם מה שכתוב נכון אוטומתית הוא ישים TRUE או FALSE אםזה שגוי.


נדמה לי שמצאתי את הטעות בתוכנית שלך:
http://n.rotter.net/User_files/nor/3fd8d6ca5ec637fc.jpg

a תמיד שווה ל a , תנאי הכניסה ללולאה שלך שגוי ולכן הלולאה שלך אף פעם לא תתבצע.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BasketBoy
חבר מתאריך 1.8.02
330 הודעות
   23:43   11.12.03   
אל הפורום  
  5. אחי כשהעברתי לפה את הקוד הוא לא יצא טוב  
בתגובה להודעה מספר 4
 
ערכתי לאחרונה בתאריך 11.12.03 בשעה 23:45 בברכה, BasketBoy
 
עריכה: המקומות במערכים זאת אומרת המספרים בסוגריים המרובעים לא יוצאים טוב

זה אמור להיות


if a=a
או משהו כזה

ובסוף הצלחתי אני מקווה שזאת הדרך הכי יעילה הנה מה שעשיתי:


program riboa_latini;
uses wincrt;
const
n=5;
var
i,j,x,z:integer;
a:array of integer;
found:boolean;

begin
randomize;
for i:=1 to n do
for j:=1 to n do
a:=random (100) +1;
writeln(' äîòøê ùðáçø äåà ');
for i:=1 to n do
begin
for j:=1 to n do
write(a:4);
writeln;
end;
found:=false;
i:=1;
while (found=false) and (i<=n) do
begin
j:=1;
while (found=false) and (j<=n) do
begin
while (found=false) and (x<=n) do
begin
if (a=a) and (j<>x)
then found:=true;
x:=x+1;
end;
if found=false then
begin
z:=1;
while (found=false) and (z<=n) do
begin
if (a=a) and (i<>z)
then found:=true;
z:=z+1;
end;
end;
j:=j+1;
end;
i:=i+1;
end;
if found=false
then writeln(' øéáåò ìèéðé ')
else writeln(' ìà øéáåò ìèéðé ');
end.

תודה בכל זאת !

בברכה,
אלון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   00:20   12.12.03   
אל הפורום  
  6. אחי אבל אתה לא מבין...  
בתגובה להודעה מספר 5
 
   ערכתי לאחרונה בתאריך 12.12.03 בשעה 00:22 בברכה, ShocKi
 
זה מיותר לשאול אם A=A כי זה תמיד נכון!
אז אתה לא צריך לשאול ומה שהתכונת לבצע.. אתה מבצע ישר בלי תנאי.
הנה מה שכתבת

if (a=a) and (i<>z) then found:=true;

ה a=a מיותר.
חוץ זמה אפשר בכלל לכתוב ככה:


found:=(i<>z);

אני לא בטוח אם שמים סוגרים.. אבל ככה צריך לכתוב את זה.


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
BasketBoy
חבר מתאריך 1.8.02
330 הודעות
   00:31   12.12.03   
אל הפורום  
  7. אחי לא משנה לא הבנת  
בתגובה להודעה מספר 6
 
פשוט אי אפשר לשים פה סוגריים מרובעות אז הקטע עם המקומות נמחק,
זה לא צריך להיות a=a , פשוט כשהעתקתי את זה לפה זה התחרבש...
בכל זאת תודה ע להעזרה !

בברכה,
אלון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net