נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שאלה במערכים C# או כל שפה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
danikel
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 December 2008
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 22 January 2009 בשעה 17:57 | IP רשוּם
ציטוט danikel

שלום,
אז ככה,אני מנסה לכתוב תוכנה שתדפיס כמה  איברים שונים יש במערך,
עוד לא מצאתי כיוון כלשהוא, חשבתי על 3 לולאות,אבל אני חושב שאפשר עם פחות, אבל גם עם 3 לא יוצא לי, מישהו יכול לתת לי כיוון חשיבה? אני לא רוצה פתרון מלא, אני מעדיף לחשוב לבד, אז כדי שאני לא אגלוש רחוק מדי, אני צריך כיוון.
הבעיות שנתקלתי:
בהתחלה ניסיתי עם 2 לולאות וזה עבר לי יותר מדי על המערך,ואז השתשובה הייתה שגויה, אז ניסיתי להשוות בין תא 0 לשאר,אבל אז הבנתי שיכול להיות שתא 0 שונה מכולם אבל האחרים שווים, צחקתי על עצמי בקול גדול(באנגלית זה נשמע יותר מצחיק :))
3 לולאות זה כיוון טוב?


__________________

חזרה לתחילת העמוד הצג את כרטיס החבר של danikel חפש הודעות אחרות של danikel
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 22 January 2009 בשעה 19:15 | IP רשוּם
ציטוט ניר

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



__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
danikel
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 December 2008
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 22 January 2009 בשעה 21:19 | IP רשוּם
ציטוט danikel

רעיון מעולה :)
אז זה ממש לא קשה,אני חשבתי מותר לי רק מערך אחד :<
אתה חושב שיש אפשרות לעשות רק במערך אחד?


__________________

חזרה לתחילת העמוד הצג את כרטיס החבר של danikel חפש הודעות אחרות של danikel
 
danikel
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 December 2008
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 23 January 2009 בשעה 14:26 | IP רשוּם
ציטוט danikel

הצלחתי עם מערך אחד!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication86
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] ar = new int[10];

            int count = 10, i, j;
            for (i = 0; i < 10; i++)
                ar[i] = int.Parse(Console.ReadLine());






            for (i = 0; i < 9; i++)
            {
                for (j = i + 1; j < 10; j++)
                {
                    if (ar[i] == ar[j])
                    {
                         count--;
                         break;
                    }

                }

            }
            Console.WriteLine(count);
            Console.ReadLine();









        }
    }
}







        }
    }
}



__________________

חזרה לתחילת העמוד הצג את כרטיס החבר של danikel חפש הודעות אחרות של danikel
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 24 January 2009 בשעה 11:37 | IP רשוּם
ציטוט ניר

תסביר את הרעיון - לא בטוח שהקוד מכסה הכל

__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
danikel
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 December 2008
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 24 January 2009 בשעה 14:47 | IP רשוּם
ציטוט danikel

ניר כתב:
תסביר את הרעיון - לא בטוח שהקוד מכסה הכל


גם אני בהתחלה חשבתי שזלא כיסיתי הכל, אבל אחרי כמה בדיקות הכל יצא נכון,אבל אני אסביר:
קודם כל עשיתי מערך של 10 סתם כדי לבדוק.
יצאתי מנקודת הנחה שכל המספרים הם שונים(COUNT=10)
הכנסתי מספרים למערך.
עכשיו, עבור כל איבר אני בודק האם הוא מופיע עוד פעם,ברגע שאני רואה שהוא הופיע אני מוריד מהספירה אחד, ואז יש לי 9 איברים שונים ,אבל אם הוא ימשיך לעבד את המערך הוא יוריד עוד פעם מהספירה, נניח עד ל4, ואז אם המספר אחריו הוא אותו מספר,הוא ימשיך את הספירה מ-4 והרי הוא מופיע עוד 4 פעמים אז הוא יוריד עוד 4,וכן הלאה, לכן כדי להמנע מזה, אני עוצר את הלולאה ברגע שיש איבר דומה,לאחר מכן אני עובר לאיבר הבא,בודק אם הוא מופיע עוד פעם ברגע שאני רואה שמופיע מוריד מהספירה ומפסיק ת'לולאה וכן הלאה. בוא ניקח לדוגמא:
1,3,2,4,3,2,1,3,2,1

משמאל לימין, התשובה צריכה להיות 4.
count=10
(אני אשתמש במספר איבר במקום אינדקס) האיבר הראשון הוא אחד, הלולאה מגיעה עד האיבר ה7, מורידה מCOUNT ועוצרת.
count=9
איבר שני 3 , הלולאה מגיעה עד האיבר ה-5 מורידה מקאונט ועוצרת
Count=8
איבר שלישי 2, מגיע עד לאיבר שישי מוריד אחד ועוצר.
COUNT=7
איבר רביעי 4, לא מוריד מקאונט ועובר לאיטרציה הבאה.
איבר חמישי 3, מגיע עד איבר 8 מוריד ועוצר.
COUNT=6
איבר שישי 2 מגיע לאיבר 9 מוריד ועוצר.
COUNT=5
איבר שביעי 1 מגיע לאיבר 10 מוריד ועוצר.
COUNT=4
איבר שמיני,תשיעי לא מורידים כלום :) ואת העשירי אני לא בודק

הרעיון היה להתגבר על זה שאם יש לי 2,2,2,2,2,2,2,2,2
שהתשובה לא תהיה  מינוס 50 XD




__________________

חזרה לתחילת העמוד הצג את כרטיס החבר של danikel חפש הודעות אחרות של danikel
 
ארנון
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 29 January 2009 בשעה 17:46 | IP רשוּם
ציטוט ארנון

עוד כיוון אפשרי בשבילך:
1) מיון המערך.
2) אתחול count ל-1 והגדלתו ב-1 כל עוד האיבר הבא שונה מן האיבר הנוכחי.
חזרה לתחילת העמוד הצג את כרטיס החבר של ארנון חפש הודעות אחרות של ארנון בקר בדף הבית של ארנון
 
danikel
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 December 2008
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 30 January 2009 בשעה 22:58 | IP רשוּם
ציטוט danikel

זה היה הכיוון ההתחלתי שלה, אבל היישום שלו לא עובד טוב, אם הבנתי תא מה שאמרת, למקרה כזה :
3,2,3,2,3,2,1,2,3 התוצאה תהיה יותר גדולה מ-3.


__________________

חזרה לתחילת העמוד הצג את כרטיס החבר של danikel חפש הודעות אחרות של danikel
 
ארנון
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 31 January 2009 בשעה 11:51 | IP רשוּם
ציטוט ארנון

התוצאה תהיה שלוש, נלך לפי השלבים:
1) מיון המערך:
קוד:
1,2,2,2,2,3,3,3,3

2) כאשר count מאותחל ל-1, נגדיל אותו ב-1 כל עוד האיבר הבא שונה מהאיבר הנוכחי:
קוד:
1>2 -> count++
2>3 -> count++

קיבלנו count = 3.
חזרה לתחילת העמוד הצג את כרטיס החבר של ארנון חפש הודעות אחרות של ארנון בקר בדף הבית של ארנון
 
danikel
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 December 2008
מדינה: Israel
משתמש: מנותק/ת
הודעות: 32
נשלח בתאריך: 31 January 2009 בשעה 14:41 | IP רשוּם
ציטוט danikel

אהה נחמדש מאוד, פשוט לא הבנתי מה זה מיון המערך :)
איך אני ממיין בצורה כזאת את המערך?


__________________

חזרה לתחילת העמוד הצג את כרטיס החבר של danikel חפש הודעות אחרות של danikel
 
ארנון
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 31 January 2009 בשעה 16:29 | IP רשוּם
ציטוט ארנון

יש כל מני סוגי מיון... נלך על מיון בועות בסיסי:
קוד:
for (int a = 0; a < arr.Length; a++)
    for (int b = 0; b < arr.Length -1; b++)
        if (arr[b] > arr[b+1])
        {
            int temp = arr[b];
            arr[b] = arr[b+1];
            arr[b+1] = temp;
         }

חזרה לתחילת העמוד הצג את כרטיס החבר של ארנון חפש הודעות אחרות של ארנון בקר בדף הבית של ארנון
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה