עזרה דחופה ביותר ב-C

kreka

New member
עזרה דחופה ביותר ב-C

אני צריך להציג תוצאה של ביטוי מתימטי שנשמר כהתחלה כמחרוזת בטיפוס CHAR נניח שהכנסתי ל משתנה בשם BUF את הביטוי הבא: (8+8). איך אני יכול להמירו למשתנה מסוג FLOAT והכי חשוב. איך אני מציג את התוצאה. חברה זה למחר בבוקר,אז בבקשה...
 

firefist

New member
תנסה לעשות את זה בשלבים

בסהכ המחרוזת היא מערך של תווים. תעשה לולאה שעוברת על כל המחרוזת, ולכל תו בודקת אם הוא מספר או לא. אם הוא כן - אז היא ממירה את התא למספר ע"י שימוש ב- float(num) ואם הוא לא, אז היא בודקת אם הוא חיבור או חיסור או כפל או מה שלא יהיה ומבצעת את הפעולה המתאימה על הביטוי שאתה בונה בזמן הריצה. בגדול, עם כל מיני שינויים, זה גם אמור לעבוד :)
 

kreka

New member
ניסיתי ו...

מה שמוזר,וגם עקבתי ב DEBUGGER זה שאני מצליח להביא נניח את הביטוי 8+6 לתוך משתנה מסוג CHAR אני עושה עליו ATOF אבל התוצאה שהוא מראה לי כל הזמן היא רק את הספרה הראשונה. 6 במקרה הזה. כלומר אני לא מצליח לגרום לו לבצע את הפעולה ביניהם למה???!!
 

galh

New member
כי אתה צריך לכתוב את הפונקציה

ל- casting אין יכולת לעשות חישובים אלא רק לבצע המרה. אם אתה רוצה לבצע חישוב של חיבור (או כל פעולה אחרת) את חייב לממש את זה בעצמך או למצוא קוד קיים.
 
ככה:

int a,b; char c; scanf("%d%c%d",&a,&c,&b); a switch(c) f case ´+´: a printf("%d",a+b); l .. .. .. וכך הלאה עם הסוויץ´ האותיות בצד רק בשביל לשמור על הסדר בטקסט
 

IgKh

New member
אולי..

כבר איחרתי את המועד, אבל אולי זה יעזור למישהו אחר:
#include <stdlib.h> #include <stdio.h> int main(void) { char str[] = "12.3"; float output; output = atof(str); printf("%f",&output); }​
או משהו כזה
 
למעלה