עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

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.

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

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.