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

נושא: עזרה!!

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 December 2008 בשעה 16:05 | IP רשוּם
ציטוט נועה

שלום

אני מבקשת עזרה בשאלה הזאת...

א. כתבו פונקציה בעלת המפרט ) prototype ( הבא:

void fix34(int array[], int size);

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

האברים במערך כך שלאחר כל מופע של המספר 3 יופיע המספר 4. מותר להזיז אברים במערך

ככל שתדרשו למעט האברים שערכם 3 .

הנחות:

- מספר המופעים של המספרים 3 ו- 4 שווה.

- המספר 3 אינו מופיע במקום האחרון במערך.

- אם המספר 3 מופיע במקום ה i במערך במקום ה i + 1 לא מופיע 3 .

דוגמאות:

fix34([3,1,2,4], 4) [3,4,2,1]

fix34([3,4,5,3,2,4], 6) [3,4,5,3,4,2]

fix34([4,3,1,3,5,4,1], 7) [1,3,4,3,4,5,1]

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

בעזרת הפונקציה fix34 . איננו יכולים להניח את נכונות הקלט, לפיכך ממשו את הפונקציה:

int is_valid_input(int arr[], int size);

הפונקציה מוודאת את נכונות הקלט , כלומר, שמספר המופעים של המספרים 3 ו- 4 שווה, ששני

מופעים של המספר 3 אינם מופיעים ברצף ושהמספר 3 אינו מופיע במקום האחרון במערך .

הפונקציה תחזיר true אם הקלט תקין אחרת תחזיר false .

ג. כעת נ וכל לגשת למימוש התכנית . על התכנית לקלוט עשרה מספרים שלמים מהמשתמש . אם

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

שגיאה ולסיים את התכנית.

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

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

אחד מהמקרים בהם הקלט אינו תקין.

דוגמאות:

1 2 3 4 5 6 7 8 9 10

Before permutation: [1,2,3,4,5,6,7,8,9,10]

After permutation: [1,2,3,4,5,6,7,8,9,10]

10 9 8 7 6 5 4 3 2 1

Before permutation: [10,9,8,7,6,5,4,3,2,1]

After permutation: [10,9,8,7,6,5,2,3,4,1]

1 2 3 3 1 2 3 4 1 4

Before permutation: [1,2,3,3,1,2,3,4,1,4]

Illegal input!

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 December 2008 בשעה 19:11 | IP רשוּם
ציטוט כפיר

#include <stdio.h>

#define ARR_SIZE 10

#define TRUE 1
#define FALSE 0


/* checking if the input is valid */
int is_valid_input(int arr[], int size)
{
    int i, counter = 0;
    
    /* checking if size is valid or
       if the last element is not 3 */
    if(size < 2 || arr[size - 1] == 3)
            return FALSE;
   
    /* cheking the ratio of 3 and 4 */
    if(arr[size - 1] == 4)
                counter--;
   
    for(i = 0; i < size - 1; i++)
    {
          if(arr[i] == 3)
          {
                    if(arr[i + 1] == 3) // consecutive 3
                              return FALSE;
                   
                    counter++;
          }
         
          if(arr[i] == 4)
                    counter--;
    }
   
    return(counter == 0); // return TRUE;
}


/* fixing the array's order */
void fix34(int arr[], int size)
{
     int i, j, tmp;

     for(i = 0; i < size - 1; i++)
     {
           if(arr[i] == 3 && arr[i + 1] != 4)
           {
                     for(j = 0; j < size - 1; j++)
                     {
                            if(arr[j] == 4 && (j == 0 || arr[j - 1] != 3))
                                      break;
                     }
                    
                     tmp = arr[i + 1];
                     arr[i + 1] = arr[j];
                     arr[j] = tmp;
           }
     }
    
     return;
}


/* printing the new array */
void printf_array(int arr[], int size)
{
     int i;

     putchar('[');
     for(i = 0; i < size - 1; i++)
           printf("%d,", arr[i]);
     printf("%d]\n", arr[i]);
    
     return;
}


/* main function */
int main()
{
    int i, arr[ARR_SIZE];
   
    for(i = 0; i < ARR_SIZE; i++)
          scanf(" %d", &arr[i]);
   
    if( !is_valid_input(arr, ARR_SIZE) )
    {
        printf("Error input!\n");
        return(1);
    }
   
    printf("Before permutation: ");
    printf_array(arr, ARR_SIZE);
   
    fix34(arr, ARR_SIZE);
   
    printf("After permutation: ");
    printf_array(arr, ARR_SIZE);
   
    return(0);
}

// End Of File
חזרה לתחילת העמוד הצג את כרטיס החבר של כפיר חפש הודעות אחרות של כפיר בקר בדף הבית של כפיר
 
כפיר
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 December 2008 בשעה 19:23 | IP רשוּם
ציטוט כפיר

תמונה של קוד המקור (לקריאה נוחה יותר):


קישור להורדת ארכיון זיפ, הכולל בתוכו את קוד המקור ואת התכנית המהודרת: http://rapidshare.com/files/173621729/permutation.zip.html
חזרה לתחילת העמוד הצג את כרטיס החבר של כפיר חפש הודעות אחרות של כפיר בקר בדף הבית של כפיר
 
נועה
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 15 December 2008 בשעה 22:29 | IP רשוּם
ציטוט נועה

תודה רבה לך

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

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

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

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