פורסם 2007 בפברואר 2218 שנים כשאתה מגדיל את b[a]ובודק רק את אלו ששווים ל- 1, אתה בודק בעצם רק את הספרות שנמצאות רק פעם אחת.אתה צריך לספור כמה גדולים ממש מ- 0.
פורסם 2007 בפברואר 2218 שנים לפי http://hwzone.co.il/community/index.php?topic=240533.0אפשר גם כמובן לעשות מיון כלשהוא על מערך הקלט, ואז פשוט בזמן סריקה לשמור מונה פשוט של כמה מספרים שונים ראינו.
פורסם 2007 בפברואר 2418 שנים זה ממש פשוט, הרעיון הוא לזכור רק את הפעם האחרונה שמספר מסויים הופיע, במילים אחרות לעשות Loop מהאלמנט שאנחנו נמצאים בו עד ש:א. אנחנו מוצאים מספר זהה, במקרה הזה נעשה break .ב. עד שאנחנו מגיעים לסוף.ועכשיו לבדוק האם הגענו לסוף של הלולאה, כלומר האם המספר שלו הוא יחודי מהמיקום שלנו עד הסוף או לא.אם כן אז נעשה ++ ל counter שלנו ואז ננסה מספר הבא. טוב, קצת קשה לי להסביר את עצמי ואני לא יודע PASCAL אז כתבתי לך קוד ב C :#include <stdio.h>#define ARRAY_SIZE 10main (){ int Array[ARRAY_SIZE]; short i, x; unsigned int count = 0; for (i = 0; i < ARRAY_SIZE; i++) { printf ("Enter the %d%s number:",(i+1),(i+1)==1 ? "st" : (i+1)==2 ? "nd" : (i+1)==3 ? "rd" : "th" ); scanf ("%d",&Array[i]); fflush (stdin); } for (i = 0; i < ARRAY_SIZE; i++) { for (x = i+1; x < ARRAY_SIZE; x++) if (Array[i] == Array[x]) break; if (x == ARRAY_SIZE) count++; } puts ("----------------------------------------------------\n"); printf ("You entered %d different %s",count, count == 1 ? "number" : "numbers"); fflush (stdin); getchar(); return 0;}
פורסם 2007 בפברואר 2518 שנים ^^^דרך טובה מאוד, עוד דרך היא פשוט לאפס את המספרים שכבר ראית לדוגמא:procedure del_num(var ar2:array_type;num,p:integer);var j:integer;beginfor j:=p to n doif ar2[j]=num then ar2[j]:=0;end;function dif_num(ar:array_type):integer; {ar - îòøê áéï N úååéí}var counter,i:integer;begincounter:=0;for i:=1 to n do if ar[i]=0 then counter:=1;for i:=1 to n do if ar[i]<>0 then begin counter:=counter+1; del_num(ar,ar[i],i); end;dif_num:=counter;end;
פורסם 2007 בפברואר 2518 שנים אני לא מסכים איתך, אם יש איבר אחד ב array, זה כבר לא באמת array. למרות שאפשר לבנות array של איבר אחד, זה טיפשי בגלל שאפשר פשוט ליצור משתנה ו pointer שיחזיק בתוכו את הכתובת של המשתנה.ואפשר בקלות לבדוק כמה איברים יש ב array ככה:if ((sizeof Array) / ( sizeof (int) ) == 1 )או במקרה הזה עדיף ככה:if ( ARRAY_SIZE == 1 ) וחוץ מזה, לא ניסיתי אבל אני חושב שהפתרון שנתתי יעבוד גם עם איבר אחד, בגלל שה LOOP החיצוניירוץ לפחות פעם אחת ה LOOP הפנימי לא ירוץ אבל X יהיה i + 1 (כלומר 0+1) והמשפט x == ARRAY_SIZE יהיה TRUE בגלל שההצבה ב for קוראת לפני שהתנאי נבדק.
פורסם 2007 בפברואר 2518 שנים אח כואב לי הראש ונדמה לי שהתבלבלתי בין תראדים...משהו מוזר מאוד הולך כאן.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.