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

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



  #2  
ישן 16-12-2009, 10:49
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 1 שנכתבה על ידי nadig55 שמתחילה ב "עזרה בקוד בסיסי בסי,בדיקת קלט של תווים"

הבעיה שלך היא ש-scanf מנסה לקרוא קלט, ואם אין קלט מוכן היא פשוט עוצרת את ריצת התוכנית ומחכה לקלט חדש. לכן בדיקה שה-scanf קלטה מספר תווים מוגדר לא תועיל לך...
לדעתי יהיה לך נוח יותר להגדיר מחרוזת (מערך של char) ולקלוט לתוכה את המספר כמחרוזת (עם s%) ולאחר מכן לבדוק מה למעשה נקלט לתוך המחרוזת.
בין היתר זה יפשט מאד את כל העבודה שלך.

אם הפתרון שהצעתי אסור בהגדרות התרגיל, האפשרות האחרת שלך היא לקלוט 5 תווים ולוודא כי התו האחרון הוא 'n\' (כלומר תו ירידת השורה - המשתמש מזין אותו ע"י לחיצה על ה-ENTER בסוף הכנסת הקלט).
כלומר יהיה לך מקום ל-4 תווים + תו ירידת השורה שמסמן את סוף הקלט.
אם התו ה-5 אינו סוף הקלט - הוצא את ההערה המתאימה.
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 21-12-2009, 20:44
צלמית המשתמש של Narxx
  משתמש זכר Narxx Narxx אינו מחובר  
 
חבר מתאריך: 21.12.04
הודעות: 30,021
בתגובה להודעה מספר 1 שנכתבה על ידי nadig55 שמתחילה ב "עזרה בקוד בסיסי בסי,בדיקת קלט של תווים"

אם אתה רוצה שבזמן הריצה, המערכת תודיע לך על שגיאה בהכנסת הקלט, ואתה לא יכול להרשות לעצמך להקליד 5 תווים, אתה לא יכול להשתמש ב scanf.
נסה להשתמש ב getchar.
הפונקציה הזו תחכה לקלט של תו בודד ותכניס אותו לתוך משתנה מסוג char. אפשר להכניס לתוך מערך של charים ובכך לוודא כי גודל הקלט הוא לא מעל 4.
תוכל להגדיר כך שכאשר מוכנס התו הרביעי, התוכנית אוטומטית תמשיך הלאה מבלי לחכות ל ENTER, או שהתוכנית תחכה דווקא ל ENTER ואז תבדוק שהתו-האחרון הוא באמת ENTER.
כך גם תוכל לבדוק שהתו הראשון אינו אפס, ולא רק שתוכל לבדוק את זה, אתה תוכל אפילו לזרוק הודעת שגיאה במידה ונלחץ אפס, והתוכנית תחזור למצב קבלת הקלט - או תצא מהפעולה.

תוכל אפילו לנהל בעצמך שימוש ב backspace אם תרצה, ולאפשר מחיקה של תו, או לא לאפשר מחיקה ולקבוע את ההקשה על מקש backspace כאילו הוא תו לכל דבר... תוכל לוודא את תקינות הקלטים בכל לחיצה ולחיצה וללודא כי הן בטווח שבין '0' ל- '9'.

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

קוד PHP:
 bool password ()
{
    
char tempinput[60];
    
int i flag=1count 0;
    
cout << "\nEnter password\n";
    while (
count 3)
    {
        
cout << "\nAttempt #" << count << ": [        ]";
        for (
i++)
            
cout << (char)8;                // move cursor to begining of password
        
0;
        while (
flag && 9)                // while didn't press enter or enterred  more than 9 chars
        
{
            
            
temp getch ();
            if (
temp == 13)                    // 13 = '\n' in ASCII
            
{
                
flag 0;
                
input[i] = '\0';
            }
            else
                if (
temp == 8)                // 8 = backspace in ASCII
                
{
                    if (
i)
                    {
                        
cout<<temp;
                        
cout<<" ";
                        
cout<<temp;
                        
i--;
                        if (
0)
                            
0;
                    }
                }
                else
                {
                    
input[i++] = temp;
                    
cout<<"*";
                }
        }
        if (
== 9)                            // printing overwritten `]' due to 9 chars
        
{
            
cout << (char)<< "]";
        }
        if (!
strcmp (input "password"))
            return 
true;
        else
        {
            
cout << "\nError! Wrong password\n" << (char)7;
            
count++;
            
flag 1;
        }
    }
    return 
0;


זה לא הכי 'תקני' להשתמש ב getch או getchar, אבל הן עושות יופי של עבודה, ובשביל עבודות קטנות לביצפר / אוניברסיטה - הן אחלה פונקציות שבעולם ^_^
_____________________________________
בברכה, מתן.
www.MatanNarkiss.com

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

הדף נוצר ב 0.06 שניות עם 10 שאילתות

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

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