בדיקת קלט למספרים שלמים בלבד - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

בדיקת קלט למספרים שלמים בלבד


abogani

Recommended Posts

שלום לכולם,

אני צריך לכתוב תוכנית שתאפשר למשתמש להכניס רק מספרים שלמים, אנחנו רק בשיעורים הראשונים אז זה צריך להיות עם scanf ולולאות while וכו'..

אם יכניס משהו אחר תתקבל שגיאה ואז התוכנית תבקש ממנו להכניס מספר שוב

אם יכניס מספר עשרוני, רווחים ואז מספר, אותיות ואז מספר, מספר ואז אותיות, או אנערף אז יקבל שגיאה..

תודה לכל העוזרים !

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

יש לך כמה אפשרויות. 

אחת - לקלוט את המספר כמחרוזת, ואז לעשות עליה את כל הבדיקות

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

בהתאם לכלים שלמדת תדע לאיזה תשובה מצפים ממך. 

 

 

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void main(){
    int rows,x;
    printf("Insert number of rows (1-50): ");
    x=scanf("%d" ,&rows);
    while(x!= 1 || rows>50 ||rows<1)
    {   while(getchar()==' ')
        continue;
        while(getchar()!='\n');
        printf("Wronf input, try again\n");
        printf("Insert number of rows (1-50): ");
        x=scanf("%d" ,&rows);
        
    }

 

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

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

אם מותר לך יש פונקציה של string אשר נקראת isdigit  אשר בודקת כל תו האם הוא מספר

לחלופין אם אסור לך להשתמש בזה תקלוט מחרוזת ועבור כל תו תבדוק האם הוא מספר

דוגמא

 

int main()
{
    int i=0;
    char input[10];
    printf("please insert number\n");
    scanf("%10s",input); /* the 10 is for limit the input -> buffer over flow */
    while(input > '0'&& input<'9')
    {
        printf("%c",input);
        ++i;
    }
    if(input=='\n' || input=='\0')
    {
        printf("good input");
        return 1;
    }
    else
    {
        printf("bad input");
        return 0;
    }
}

 

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

ארכיון

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

×
  • צור חדש...