פורסם 2003 בפברואר 222 שנים מה שאני צריך לעשות זה:להכניס אותיות לסטרינג וספרה אחת בין 1 ל9נגיד מה שהכנסתי זה ככה, EKGFA5PZאז מה שהתוכנה צריכה לעשות זה להוסיף 5 פעמים את האות שלפני הספרה ולמחוק את הספרה, ככה:EKGFAAAAAAPZמישהו יכול לכתוב לי משהו?
פורסם 2003 בפברואר 1322 שנים מה שאני צריך לעשות זה:להכניס אותיות לסטרינג וספרה אחת בין 1 ל9נגיד מה שהכנסתי זה ככה, EKGFA5PZאז מה שהתוכנה צריכה לעשות זה להוסיף 5 פעמים את האות שלפני הספרה ולמחוק את הספרה, ככה:EKGFAAAAAAPZמישהו יכול לכתוב לי משהו?כמה בעיות שאני רואה, יש הגבלה לאורך של סטרינג, ולכן במקרה שהסטרינג במקור היה בגודל ההגבלה, או קרוב אליה, יכול להיווצר מצב שבו אחרי הפעולה של התוכנה, התוצאה תחרוג מן הסטרינג.בכל אופן, מה שאתה צריך לעשות זה פרוצדורה שעוברת על הסטרינג עד שהיא מוצאת את הספרה, ואז להכניס במקום הזה את האות שלפניה 5 פעמים.אני מה שהייתי עושה, זה לייצג את המחרוזת באמצעות מערך, ואז ע"י שימוש במצביעים, להגדיל את המערך ב-4 ואז לעשות את הפעולה המבוקשת.
פורסם 2003 באפריל 2722 שנים מחבר זה מסובך יותר מדיי... אין לי מושג מה זה מצביעים, ואין לי מושג איך לייצג את המחרוזת במערך...זה צריך להיות די פשוט, בלי פרוצדורות ובלי כלום.והמספר הוא תו (CHAR) אז זה יותר בעייה...אולי למצוא אותו דרך הקוד ASCII איכשהו? רק שאני לא יודע מה קוד הASCII של מספרים בין 1 ל9...אם למישהו יש רעיון אחר.. SHOOT
פורסם 2003 באפריל 2722 שנים אחי, זה ניראה פשוט אבל זה חבל"ז מסובך, הרבה לולאות מקוננות, 10 דקות אני גומר.
פורסם 2003 באפריל 2822 שנים לא צריך להסתבך יותר מדי, תגדיר string (שלצורך הדוגמא שלנו יקרא S2) ריק נוסף.תריץ לולאה שמתחילה מ-1 עד אורך הסטרינג. בתוך הלולאה תשים תנאי If שיבדוק אם התו [s[i בין '1' ל-'9' (אל תשכח את המרכאות). אם כן אז:1. תשתמש ב-Val ותהפוך את התו לסיפרה שלצורף הדוגמא שלנו נאכסן ב-J2. תריץ לולאת For מ-1 עד J-1 (כי הכנסת תו אחד ב-For הקודם) ותעשה [s2=S2+S1[i-1אם תנאי ה-If נכשל והתו הוא לא ספרה, פשוט תוסיף Else ואחריו[s2=S2+S1[iתסויף תנאי נוסף כדי שהוא לא יבדוק בטעות את [s1[0 (אם המחרוזת מתחילה בסיפרה).פחות או יותר זה כל הסיפור.
פורסם 2003 באפריל 2822 שנים מחבר זה מה שעשיתי בערך, אבל אני מקבל כל הזמן טעויות בכל מיני מקומות מוזרים...אתה יכול לנסות לכתוב את זה בפסקל ולראות למה זה?
פורסם 2003 באפריל 2822 שנים אפשר להשתמש ב2 מערכים או חובה ב1...?כי כמו מטומטם אני שובר את הראש על מערך 1 ואולי אפשר גם ב2
פורסם 2003 באפריל 2822 שנים After several trys and methoods, I did it.... (it's properly not the best soulotion...)program HWzone; type atype = array[1..10] of char; var i,max,j,z:integer; x:char; a,b:atype;{This procedure is taking the original array (a), and re orginaize it in the new array (b)} procedure newarray(var b:atype;a:atype; i,max:integer); var k:integer; begin for k:=1 to max do begin b[k]:=a[k]; end; a[max-1]:=b[max]; for k:=(max+1) to (max+4) do begin b[k]:=a[max]; end; for k:=(max+5) to i do begin b[k]:=a[max+1]; end; end; begin i:=1; j:=1; x:='1'; max:=1; writeln('Enter your numbers, when u done, press 0+enter');{this park collect the char u have entered and counting the number of chars} while x <> '0' do begin readln(x); if x <> '0' then begin a:=x; i:=i+1; end; end;{This Part is cheking in wich sell of the array the number is} for j:=1 to i do begin for z:=1 to 9 do begin if a[j]:=z then max:=j; end; end;{This part is sending the data collected to the function "newarray"} newarray(a,i,max);{This part is priting the outcome} for z:=1 to 10 do write(b[z]);end.עריכה: Align to left
פורסם 2003 באפריל 3022 שנים לא ממש מסודר, אבל הנה פיתרון יותר קצר בהרבה (אני רק מקווה שהוא עובד):program MB;var s1,s2:string; i,j,num,temp:integer;begin readln(s1); s2:=''; for i:=1 to length(s1) do begin if ((s1>='2') and (s1<='9')) then begin if (i>1) then begin val(s1,num,temp); for j:=2 to num do s2:=s2+s1[i-1]; end; end else if ((s1<>'1') and (s1<>'0')) then s2:=s2+s1; end; writeln(s2);end.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.