תכנית הקשורה ל ASCII

CMLover

New member
תכנית הקשורה ל ASCII

שלום, נדרשתי במסגרת קורס מבוא לתכנות C לכתוב תכנית אשר תדע לזהות האם אות מסויימת שהקלדתי היא אות גדולה או אות קטנה.
אני יודע שהדבר קשור לascii שעליי ליצור התנייה שלפיה אותו אות שהוקלדה תהיה בין ערכים (65-90) עבור אות גדולה ו(97 - 122) עבור אות קטנה.
השאלה שאני בעצם רוצה לשאול היא איך לכתוב את התכנית:
<include<stdio.h
void main ()
}
printf ( enter a letter here:\n")
scanf("%c",&ascii);
if <65>= ascii =< 90);

עד לכאן הגעתי אבל אני לא יודע איך להמשיך (ההתניה הבאה תהיה זהה לקודמת רק עם בין 97 ל 122)

אם אפשר עזרה אני אשמח ואעריך זאת מאוד.
 

deepspace

New member
הבעיה היא בעצם בהגדרה שלך ב"תדע לזהות"

אם אתה רוצה שרק תדפיס "אות קטנה" "אות גדולה", אז הקוד הבאה מספיק:



char a;

scanf("%c", &a);

if ((65<=a) && (a<=90))
printf("upper case");

else if ((97<=a) && (a<=122))
printf("lower case");



שים לב לשימוש באופרטור && שמשמעותו "וגם". בנוסף שים לב לשימוש ב- else if לצורך יעילות (אם ניכנסו כבר ל if הראשון אז אין סיכוי שניכנס גם ל if השני. לכן אם נכנסנו לראשון אז אין צורך לבדוק כלל את התנאי השני).
 

nocgod

New member
עצה/טיפ

לעולם לא להשתמש בערכים המספריים! אתה לא יודע על איזה מערכת הקוד שלך ירוץ.
עדיף במקום להשתמש בערך התו כלומר

char a;

scanf("%c", &a);

if ( ( 'A' <= a ) && ( a <= 'Z' ) )
printf("upper case");

else if ( ( 'a' <= a ) && ( a <= 'z' ) )
printf("lower case");
 

CMLover

New member
תודה רבה!

על העצה ועל העזרה. אך האם 'A' אומר שאני צריך להקליד את הערך המספרי של התו או שזהו התו עצמו ? כלומר אם אני אקליד n הוא פשוט לא יזהה אותה כמקיימת את התנאי?ואם אני מעונין להדפיס הודעה (באמצעות scanf) שהאות שהודפסה היא אות קטנה או גדולה? כדי להוסיף תנאי שיזהה שלא מתאים ל 2 התנאים הקודמים זה עדין התניה של else if?
 

nocgod

New member
הסבר

המחשב לא יודע a או b... הוא יודע מספרים - ליתר דיוק 01011001 כלומר בינארי. (מי שמזהה את משמעות המספר הזה מקבל צ'אפחת כל הכבוד וירטואלית)
בשבילנו המשתמשים אנחנו מתרגמים את המספר הבינארי למספר עשרוני (ערך ascii של תו) ואת זה אנחנו מתרגמים לתו.
כשאתה רושם בתנאים שלך 'a' אתה אומר למחשב התו a - שמבחינתו זה ערך בינארי של 97 כלומר 01100001.

במילים אחרון אני אומר כזה דבר:

if ( a >= 'a' && a <= 'z' )
the computer reads it as if you wrote
if ( a >= 97 && a <= 122) (i dont remember the numbers - i dont have to)
 
למעלה