עזרה לגבי שאלה שהייתי במבחן בPASCAL. - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה לגבי שאלה שהייתי במבחן בPASCAL.


fuck off

Recommended Posts

זה ממש פשוט, הרעיון הוא לזכור רק את הפעם האחרונה שמספר מסויים הופיע, במילים אחרות לעשות Loop מהאלמנט

שאנחנו נמצאים בו עד ש:

א. אנחנו מוצאים מספר זהה, במקרה הזה נעשה break .

ב. עד שאנחנו מגיעים לסוף.

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

אם כן אז נעשה ++ ל counter שלנו ואז ננסה מספר הבא.

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

#include <stdio.h>

#define ARRAY_SIZE 10

main ()
{

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;
}

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

^^^

דרך טובה מאוד, עוד דרך היא פשוט לאפס את המספרים שכבר ראית לדוגמא:



procedure del_num(var ar2:array_type;num,p:integer);
var j:integer;
begin
for j:=p to n do
if ar2[j]=num
then ar2[j]:=0;
end;
function dif_num(ar:array_type):integer; {ar - îòøê áéï N úååéí}
var counter,i:integer;
begin
counter:=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;

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

אני לא מסכים איתך, אם יש איבר אחד ב 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 קוראת לפני שהתנאי נבדק.

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

ארכיון

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

×
  • צור חדש...