24-06-2008, 18:42
|
|
|
חבר מתאריך: 24.05.08
הודעות: 6
|
|
בעיה בתוכנית
שלוםת כתבתי תוכנית ולא מצליח לי הסעיף האחרון, אני לא מבין איך לקלוט שני משפטים, אשמח אם מישהו יוכל לעזור לי לפתור אותו, יש לי נסיונות אבל הסתבכתי לגמרי.
השאלה:
א. כתוב תוכנית: char occur(char *arr,int n,int *times אשר עבור המערך arr בגודל n, תחזיר את התו הנפוץ ביותר ולתוך הפרמטר times יוכנס את מספר המופעים של התו הזה.
ב. כתוב תוכנית: int exist(char *arr,char ch,int n,int *last אשר עבור המערך arr בגודל n, מחזירה -1 אם התו ch אינו נמצא בו. אם התו אכן נמצא במערך, הפונקציה מחזירה את מיקום המופע הראשון שלו,ולפרמטר last יוכנס מיקום המופע האחרון שלו. אם התו אינו נמצא- הערך המועבר ע"י last אינו משתנה.
ג. כתוב פונקציה main שתקלוט שני משפטים,ותענה על שאלות הבאות:
1.מהו התו הנפוץ ביותר במשפט הראשון? כמה פעמים הוא מופיע באותו משפט?
2.האם התו הנפוץ ביותר במשפט השני מופיע במשפט הראשון , ואם כן, מהו המיקום האחרון שבו הוא מופיע?
פתרתי את שני הסעיפים הראשונים, אם מישהו יוכל לעזור לי בסעיף האחרון אני אודה לו מאוד!!(סליחה שזה כזה ארוך), הסעיפים הראשונים שכתבתי:
קוד:
#include<stdio.h>
#include<conio.h>
char occur (char arr[], int n, int *times)
{
int max=0,cnt=0,j,i;
char ch;
for (i=0; i<n; i++,cnt=0)
{ for (j=0; j<n; j++)
if (strcmp(arr[i],arr[j])==0) cnt++;
if (cnt>max) { max=cnt;
ch=arr[i];
}
}
*times=max;
return ch;
}
int exist(char ch, char arr[], int n, int *last)
{
int i, first;
for (i=0; i<n; i++)
if (arr[i]==ch) break;
if (i==n) return (-1);
first=i;
for (i=n-1; i>=0; i--)
if (arr[i]==ch) { *last=i;
break;
}
return first;
}
|