תרגיל בשפת C - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תרגיל בשפת C


talje

Recommended Posts

חשבתי על להכין מערך נוסף, בגודל 256 (טבלת האסקי) ובמהלך הקליטה כבר לקדם ב+1 כל תא במקום התו הנסרק.

אך איך אח"כ אבדוק מה התו הנפוץ ביותר? ואיך אדפיס את זה עם הערך הנמוך ביותר במידה ויש כמה?

קישור לתוכן
שתף באתרים אחרים

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

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

קישור לתוכן
שתף באתרים אחרים

א. ברור שכן, זה חלק מהשפה.

ב. בשורה הזו:

(r=0)?(flag=2):(flag=3);

חוץ מזה לא נהוג לכתוב ככה. או שתעשה if או שתכתוב:

flag = (r==0) ? 2 : 3;

ג. זה התרגיל שלך :) בגדול, כמו שספרת כמה פעמים כל תו, רק שעכשיו לא איכפת לך כמה פעמים התו מופיע, אלא רק האם הוא מופיע או לא.

נ.ב. אפשר לבדוק אם תו הוא ספרה באמצעות הפונקציה isdigit (צריך לעשות אינקלוד ל-ctype.h).

קישור לתוכן
שתף באתרים אחרים


while(flag == 0)
{
temp=fgetc(file); //check char from file
switch(temp) //what to do with char
{
case '\n': // ignore /n char
break;
case '.': //end of LINE
r++;
c = 0;
break;
case EOF: //end of FILE
flag = 1;
break;
default: //good digit/char
if(isdigit(temp)) //check if digit
{
(r==0)?(flag=2):(flag=3);
}
if(biggest < temp) //biggest char (ascii value)
{
biggest = temp;
}
if(smallest > temp) //smallest char (ascii value)
{
smallest = temp;
}
for(i = 0; r == 1 && i < COLOUMNS; i++)
{
if(tav[0][i] == tav[r][c]);
{
counter[1][i]+=1;
printf("test %d", i);
}
}
tav[r][c++]=temp;
counter[0][temp]+=1;
}

אוקיי, תיקנתי את ה = ל ==, צודק לא שמתי לב :)

יישמתי גם את הפונקציה לבדיקת תו-מספר - תודה!

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

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

קישור לתוכן
שתף באתרים אחרים

לא הבנתי בכלל את המשפט האחרון שלך.

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

חוץ מזה, אל תוסיף סתם שורה למערך. כמו שלא תחזיק מערך חד מימדי שלכל איבר בו יש תפקיד שונה לחלוטין, ככה גם אם יש לך שני מערכים עם תפקידים שונים לחלוטין זה לא אומר שהם צריכים להיות מערך דו מימדי אחד (לא היית עושה מערך חד מימדי ומשתמש בתא הראשון שלו עבור המשתנה flag, התא השני עבור temp והתא השלישי עבור i, נכון?)

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...