עבור לתוכן

עזרה בתרגיל מחרוזת

Featured Replies

פורסם

עניתי על השאלה ה1

אך שאר הסעיפים לא ברורים לי ,אשמח לעזרה.

http://www.f2h.co.il/959573604

לגבי א -ג לא ידעתי איך להתחיל .

תודה על העזרה

פורסם
  • מחבר

האם לגבי 3 הסעיפים:

א': צריך לבדוק את תקינות הקלט. זאת אומרת, כל עוד המחרוזת שהוכנסה לא כוללת בדיוק 40 ספרות - הקלט שגוי.

ב': הצגת תת הסדרה הארוכה ביותר, איך בדיוק לעשות זאת?

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

פורסם

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

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

ג. איך בדיוק פתרת את 1? אני מניח שאתה שומר בצד כל פעם את האורך של תת הסדרה הארוכה ביותר, נכון? אז תשמור בנוסף גם את המקום שבו היא מתחילה.

פורסם
  • מחבר

זה הסעיף הראשון

==============




#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include<string.h>

void main ()
{
char str[40];
int len,i;
int maxlen=0 ,substr=1;
printf("enter a numeric string (40);");
gets(str);
len=strlen(str);
for(i=0;i<len;i++) //check string include number
if(str[i]<'1' || str [i] >'9')
{
printf("error //invalid string //");
return ;
}
for(i=0;i<len-1;i++) /* checking for substring */
{
if(str[i+1]==str[i]+1) substr++;
else substr=1;
if (substr>maxlen) maxlen=substr;
}
if (len==1) printf("the max substring length is: %d \n",len);
else printf("the max substring length is: %d \n",maxlen);
}



סעיף שני שהתחלתי


#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include<string.h>

void main ()
{
char str[40];
int len,i;
int maxlen=0 ,substr=1;
printf("enter a numeric string (40);");
gets(str);
len=strlen(str);
for(i=0;i<len;i++) //check string include number
if(str[i]<'1' || str [i] >'9')
{
printf("error //invalid string //");
return ;
}
printf("enter a char ");
scanf("%c",&ch);
if (string[i]-ch ==1)
n++;
else

פורסם

הערות לסעיף הראשון:

בסך הכל הקוד נראה סבבה, חוץ משני באגים שיש לך:

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

ב. אתה בודק אם הספרות הן בין 1 ל-9, אבל מה עם 0?

ג. אין צורך ב-if בסוף, פשוט תאתחל את maxlen ל-1 במקום ל-0.

לא הבנתי מה התחלת לעשות בסעיף השני (א', ב' או ג'?)

ארכיון

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

דיונים חדשים