יום רביעי, 28 בספטמבר 2016

שפת C - ספריית המתמטיקה, טבלת אסקי קוד, char והאופרטורים : ? (יום רביעי)

למדנו היום:


פונקצית הספריה <math.h>

pow 
מקבלת מספרים ומחזירה את התוצאה של הראשון בחזקת השני
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,t;
 
scanf ("%lf%lf",&a,&b);
t = pow(a,b);
t = pow(a+2,b);
}

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


sqrt
מקבלת מספר ומחזירה את השורש הריבועי שלו

abs
מקבלת מספר ומחזירה את הערך המוחלט שלו

floor
מקבלת מספר ומעגלת אותו למטה

ceil
מקבלת מספר ומעגלת אותו למעלה







האופרטורים  :  ? 

מתנהגים כמו if else אבל עם חיוב להשתמש תמיד גם ב else
מבנה כללי:

; ___T____ : ___F____ ?(שאלה)

#include <stdio.h>
void main()
{
 int x=5,y=6,max;
 (x<y)? printf("%d",x): printf("%d",y);
 max=(x>y)? x:y;
 printf("%d",(x>y)?x:y);
 
}
 




משתנה בוליאני

משתנה בוליאני הוא משתנה שיכול להכיל רק "כן" או "לא" (True / False).
בשפת C אין כל כך תמיכה במשתנים כאלו, אבל אפשר לעשות שימוש דומה באמצעות משתנים מסוג int.
כך:

int y=50, z=200, x;
x = y>z; // אם המשפט נכון איקס יהיה שווה 1, אם המשפט לא נכון איקס יהיה שווה 0


[נלמד בשיעורים מתקדמים עוד דרך לעשות שימוש במשתנים בוליאנים (באמצעות enum)]








טבלת אסקי קוד (ASCII CODE) 
היא טבלה המכילה את כל הסימנים שניתן להדפיס על המסך במצב טקסט.
לכל סימן יש קוד ייחודי שנקרא "ה- אסקי קוד של התו"
בחלק הקבוע התווים ממוספרים מ 0 עד 127  והוא מכיל את התווים הבין לאומיים
לטבלה חלק "קבוע" וחלק "לא קבוע"
בחלק הלא קבוע התווים ממוספרים מ 128 עד 255 והוא מכיל את התווים הלאומיים

הטבלה:







char

הוא משתנה (מסוג שלם כמו int) שנועד לייצג תווים ע"פ טבלת אסקי 
(אם נקבל יותר מתו אחד char יקבל רק את התו הראשון)

#include <stdio.h>
void main()
{
 char ch=65;
 printf("%d",ch); // הפלט: 65
 printf("%c",ch); // הפלט: A 
}
-----------------------------------------

#include <stdio.h>
void main()
{
 char ch;
 scanf ("%c",&ch); // אם קיבלנו B
 printf("%d %c",ch,ch);
 /* 
 הפלט:
 66 B
 */
}
 

הפונקציה putchar
יודעת רק להדפיס תו ולקבל בסוגריים מספר או שווה מספר
#include <stdio.h>
void main()
{
 char c1=65,c2='A';
 putchar(c1);
 printf ("%c",c1);
 putchar(c2);
 putchar(65);
 putchar('A');
 putchar('a'-32);
 printf("%c",c2);
 printf("%c",'A');
 /*
 התוצאה של כל אלו היא  A
 */
 printf("%d",c2);
 printf("%d",'A');
 /*
 התוצאה של שני אלו היא 65
 */
 printf("%c",A);
 printf("%d",A);
 /*
 התוצאה של שני אלו היא שגיאה
 */
 
}
הפונקציה getchar
מקבלת תו מהמשתמש והפונקציה מעניקה למשתנה ערך של מזהה התו בטבלת אסקי
#include <stdio.h>
void main()
{
 char ch;
 ch=getchar();
 /*
 זה שווה ערך לפקודה
 scanf("%c",&ch);
 */
 
}
 



משימות:
במחשבים א'
תווים ופונקציות סטנדרטיות.
1)כתוב תכנית אשר קולטת מספר ממשי ומדפיסה המספר השלם הקרוב ביותר
     לאותו מספר.     לדוגמא:
                      עבור הקלט:  5.802  הפלט יהיה  6
                 עבור הקלט:  23.22  הפלט יהיה  23
                 עבור הקלט:  10.5    הפלט יהיה   11

2)כתוב תכנית אשר קולטת שיעורים של שתי נקודות: (x1 , y1)  ו  (x2 , y2)
      התוכנית מחשבת ומדפיסה את המרחק בין שתי הנקודות האלו.
      המרחק בין שתי נקודות יחושב לפי נוסחת פיתגורוס.


3)   3 צלעות יכולים לייצג משולש אם סכום כל שתי צלעות ביחד גדול מהצלע
      השלישית.
      כתוב תוכנית אשר קולטת שלושה צלעות של משולש ובדוק אם הם יכולים
      לייצג משולש. אם כן יש לחשב את היקף ושטח המשולש ובהמשך יש לבדוק את  
      סוגי המשולש , כלומר: שווה צלעות, שווה שוקיים, או משולש כל שהוא.
      שטח המשולש יחושב לפי נוסחת הירון:

Sqrt(q * (q-a) * (q-b) * (q-c) )                              
      כאשר  q   שווה לחצי ההיקף.   /2(a+b+c)

    לדוגמא:
3 הצלעות הבאים:   2   7  3   אינם יכולים לייצג משולש.
 והצלעות:       4   5   5     כן יכולים לייצג משולש שההיקף שלו
            הוא 14   והשטח שלו הוא   9.165

4)  כתוב תוכנית אשר קולטת תו אחד .
     אם התו שנקלט הוא אות קטנה , אז היא מדפיסה האות הגדולה המקבילה.
     ואם התו שנקלט הוא אות גדולה , אז היא מדפיסה האות הקטנה המקבילה.
     ואם זה לא אות אז היא מדפיסה הודעה מתאימה. היא מדפיסה בנוסף את ה-
     Ascii Code של התו המודפס.
     לדוגמא:
              עבור הקלט :  b   הפלט יהיה:  Ascii Code is 66   B
              עבור הקלט :  E  הפלט יהיה:  Ascii Code is 101 e
              עבור הקלט:   2   הפלט יהיה:  it isn't a letter


5)  כתוב תוכנית אשר קולטת 3 מספרים שלמים ומדפיסה הממוצע שלהם , והמספר
     הכי קרוב לממוצע.
   לדוגמא:
    עבור הקלט:     5   8    15
   הממוצע יהיה:  9.333  והאיבר הכי קרוב לממוצע הוא  8.

6) כתוב תכנית אשר קולטת שלוש תווים וממיינת אותם לפי האסקי קוד של
    התווים.
       לדוגמא: עבור הקלט :    A  4  d
                    הפלט יהיה:  d  A  4

7) כתוב תכנית אשר קולטת שלושה מספרים ומוצאת המספר המכסימלי.
    יש להשתמש באופרטורים  :  ?









3 תגובות: