לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 22-02-2006, 11:32
  lovEti lovEti אינו מחובר  
 
חבר מתאריך: 22.01.06
הודעות: 11
בעיה בקוד תכנות בC

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

קוד:
case 1: { scanf("%s%s", shem, tz); mikum=check_talmid(shem, university); if ((strlen(tz)!=6) || (mikum!=0)) printf("error\n"); else { university.mis_talmid=university.mis_talmid+1; university.talmidim=(STUDENT*)realloc(university.t almidim, (university.mis_talmid+1)*sizeof(STUDENT)); university.talmidim[university.mis_talmid].name=(char*)calloc(strlen(shem)+1, sizeof(char)); university.talmidim[university.mis_talmid].id=(char*)calloc(7, sizeof(char)); strcpy(university.talmidim[university.mis_talmid].name, shem); strcpy(university.talmidim[university.mis_talmid].id, tz); university.talmidim[university.mis_talmid].mis_tzioon=0; university.talmidim[university.mis_talmid].tzioonim=(TZIOON1*)calloc(2, sizeof(TZIOON1)); } break; } case 2: { scanf("%s", shem); mikum=check_talmid(shem, university); printf("mikum=%d\n", mikum); if (mikum==0) printf("error\n"); else { for (i=mikum; i<=university.mis_talmid; i++) university.talmidim[i]=university.talmidim[i+1]; university.mis_talmid=university.mis_talmid-1; } break; }


בנוסף , הנה הקוד של הפונקציה שבודקת:

קוד:
int check_talmid(char a[], UNI b) { int boolean,i,compare; boolean=0; for (i=1;i<=b.mis_talmid;i++) { compare=strcmp(a,b.talmidim[i].name); if (a==0) { boolean=1; break; } } if (boolean==0) i=0; return i; }


המבנים שעליהם מדובר הם:
קוד:
typedef struct { char course[5]; int tzioon; } TZIOON1; typedef struct { char *name; char *id; TZIOON1 *tzioonim; int mis_tzioon; } STUDENT; typedef struct { char name_more[10]; int age; int salary; } MORE; typedef struct { MORE *morim; int mis_more; STUDENT *talmidim; int mis_talmid; } UNI;
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 24-02-2006, 12:51
צלמית המשתמש של DrTempi
  DrTempi DrTempi אינו מחובר  
 
חבר מתאריך: 12.03.03
הודעות: 2,176
אני לא בטוח אבל נראה שהבעיה דווקא בקלט.
בתגובה להודעה מספר 1 שנכתבה על ידי lovEti שמתחילה ב "בעיה בקוד תכנות בC"

scanf לא יודעת להפריד בין מחרוזות כאשר המשתמש לוחץ על רווח.. ככה זה עד כמה שזכור לי.
במידה ואת לומדת לבגרות תפצלי את זה לשתי שורות scanf נפרדות, ואם את סתם מתכנתת אל תשתמשי יותר בפונקציה הזאת, תשתמשי ב-fgets במקום.

עריכה: או קיי טעות שלי הבעיה לא בקלט, מתברר ש- scanf אחרי הכל כן מפרידה בין המחרוזות, אבל עדיין מומלץ לא להשתמש בה.

להלן ההודעה של VCPP2005:
warning C4996: 'scanf' was declared deprecated
d:\microsoft visual studio 8\vc\include\stdio.h(295) : see declaration of 'scanf'
Message: 'This function or variable may be unsafe. Consider using scanf_s instead.
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.fresh.co.il/scripts/birthday.php?date=27/04/1986]


נערך לאחרונה ע"י DrTempi בתאריך 24-02-2006 בשעה 13:07.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 07:24

הדף נוצר ב 0.08 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר