itai2k פורסם 2012 ביוני 17 מחבר Share פורסם 2012 ביוני 17 אם הייתי מבין, לא הייתי שואל... :s05: אני צריך להפוך מספרים למילים, לדוגמא: 1 = one 17 = seventeen אני פשוט צריך הסבר על מצביעים למערך דו ממדי של char אני לא מצליח להבין איך זה עובד... אגב החלטתי לא להעביר את המערך של המילים לפונקציה... אלא לבנות את המערך כבר בתוך הפונקציה (numberToLetter) קישור לתוכן שתף באתרים אחרים More sharing options...
Gil28 פורסם 2012 ביוני 17 Share פורסם 2012 ביוני 17 תחשוב על מערך דו מימדי כמערך חד מימדי ארוך:|__|__|__|__||__|__|__|__||__|__|__|__|11 10 9 8 7 6 5 4 3 2 1 0בעצם מדובר במערך רגיל באורך 12 המייצג מערך דו מימדי בגודל 3X4 כאשר תאים 0-3 הם השורה הראשונה, 4-7 השורה השנייה וכולי.אתה יכול להסתכל על תאים 0,4,8 כעל הטור הראשון, הבנת את הרעיון.עכשיו תחשוב איך אתה מתרגם את ההוראה [2][2]arr לגישה לתא הרצוי במערך הזה, כלומר מצא את j עבורו [2][2]arr[j]=arr קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2012 ביוני 17 Share פורסם 2012 ביוני 17 ^^שים לב שכשאתה שם בפורום i בתוך סוגריים מרובעים אז זה הופך את הכתב למוטה. עדיף שתשתמש ב-j או שפשוט תשים את הקוד בתוך טג קוד.לפותח הת'רד:http://hwzone.co.il/community/index.php?topic=534140.0 קישור לתוכן שתף באתרים אחרים More sharing options...
Gil28 פורסם 2012 ביוני 17 Share פורסם 2012 ביוני 17 צודק נערך... קישור לתוכן שתף באתרים אחרים More sharing options...
itai2k פורסם 2012 ביוני 17 מחבר Share פורסם 2012 ביוני 17 אוקיי תודה... אני מבין איך נראה מערך דו ממדי... אני פשוט לא מבין איך להעתיק לשם מילה(string) או שכדאי להעתיק אות אות (char) אגב ראיתי מה שרשום בתרד השני.... האם כדאי לי באמת לקחת char משנה כדי להעתיק לשם את המילים ואז להעתיק למערך? ואיך בכלל להכניס אותו לתוך המערך? כי אני לא מצליח.. תודה על העזרה! קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2012 ביוני 17 Share פורסם 2012 ביוני 17 השאלה היא למה בכלל אתה צריך מערך דו מימדי. הרבה יותר טוב יהיה אם תשתמש במערך של מצביעים, ואז תוכל לדאוג שכל תא במערך יצביע למחרוזת כלשהי. קישור לתוכן שתף באתרים אחרים More sharing options...
itai2k פורסם 2012 ביוני 17 מחבר Share פורסם 2012 ביוני 17 תוכל להסביר לי כיצד? או שיש לך איזה מדריך שיעזור לי? פשוט חשבתי שב char ככה הכי נוח לעבוד.. קישור לתוכן שתף באתרים אחרים More sharing options...
itai2k פורסם 2012 ביוני 17 מחבר Share פורסם 2012 ביוני 17 טוב אני חושב שהבנתי תגיד לי אם זה מה שהתכוונת: if(numbers[i]==0) /* when the number is 0 */ { strcpy(letters[i],"zero"); } זאת השיטה כולה:int numberToLetter(int numbers[]){ int i=0,ahadot,asarot,j=0,num=0; char letters[100][20]; char firstWord[11][6]={"zero","one","two","three","four","five","six","seven","eight","nine","ten"}; char tenPlus[10][10]={"Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","seventeen","eighteen","nineteen"}; char secondWord[10][8]={"Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"}; while(numbers[i]!=NULL) { if(numbers[i]>0) /* if number between 0-10 */ { num=numbers[i]; strcpy(letters[i],firstWord[num]); } if(numbers[i]>10) { num=numbers[i]; ahadot=num%10; asarot=num/10; if(ahadot==0) strcpy(letters[i],secondWord[asarot-1]); else scanf(letters[i],"%s" "%s",secondWord[asarot-1],firstWord[ahadot-1]); } i++; }} קישור לתוכן שתף באתרים אחרים More sharing options...
itai2k פורסם 2012 ביוני 18 מחבר Share פורסם 2012 ביוני 18 טוב הצליח להתקמפל והכל אבל עכשיו הוא לא מצליח לפתוח את הקבצים...אני חושב כי ניסיתי להגדיר אותם עוד לפני התוכנית...האם יש אפשרות להעביר את הקבצים לפונקציה אחרת? קישור לתוכן שתף באתרים אחרים More sharing options...
Gil28 פורסם 2012 ביוני 18 Share פורסם 2012 ביוני 18 בשפת C אין לך string. יש לך מערך של char. עכשיו תחשוב מה אתה רוצה לעשות. קישור לתוכן שתף באתרים אחרים More sharing options...
itai2k פורסם 2012 ביוני 18 מחבר Share פורסם 2012 ביוני 18 הצלחתי לקמפל, אבל הוא לא מצליח לפתוח את הקבצים... צריך עזרה!!#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>int numberToLetter();int main(int argc, char *argv[]){ FILE *inputf, *outputf; int i=0; int numbers[100]={0}; if(argc > 2) /* more then 2 names */ { fprintf(stderr,"Eror! You cant enter more then 2 names.\n Goodbye!\n"); exit(0); } if(argc==0) /* no names */ { if(!(inputf=fopen("standardInput.txt","r"))) { fprintf(stderr,"Cannot open standardInput file\n"); exit(0); } if(!(outputf=fopen("standardOutput.txt","w"))) { fprintf(stderr,"Cannot open standardOutput file\n"); exit(0); } while(!feof(inputf)) /* put all the numbers from the input file to the arry */ { fscanf(inputf,"%d",&numbers[i]); i++; } } if(argc==1) /* if one name */ { if(!(inputf=fopen(*(argv+1),"r"))) { fprintf(stderr,"Cannot open input file\n"); exit(0); } if(!(outputf=fopen("standardOutput.txt","w"))) { fprintf(stderr,"Cannot open standardOutput file\n"); exit(0); } while(!feof(inputf)) /* put all the numbers from the input file to the arry */ { fscanf(inputf,"%d",&numbers[i]); i++; } } if(argc==2) /* if two names */ { if(!(inputf=fopen(*(argv+1),"r"))) { fprintf(stderr,"Cannot open input file file\n"); exit(0); } if(!(outputf=fopen(*(argv+2),"w"))) { fprintf(stderr,"Cannot open output file\n"); exit(0); } while(!feof(inputf)) /* put all the numbers from the input file to the arry */ { fscanf(inputf,"%d",&numbers[i]); i++; } } numberToLetter(numbers,outputf,inputf); fclose(inputf); fclose(outputf); return 0;}int numberToLetter(int numbers[],FILE *out){ int i=0,ahadot,asarot,num=0; char letters[100][20]; char firstWord[11][6]={"zero","one","two","three","four","five","six","seven","eight","nine","ten"}; char tenPlus[10][10]={"Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","seventeen","eighteen","nineteen"}; char secondWord[10][8]={"Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"}; while(!numbers[i]) { if(numbers[i]>0 && numbers[i]<11) /* if number between 0-10 */ { num=numbers[i]; strcpy(letters[i],firstWord[num]); } if(numbers[i]>10) { num=numbers[i]; ahadot=num%10; asarot=num/10; if(ahadot==0) strcpy(letters[i],tenPlus[asarot-1]); else scanf(letters[i],"%s" "%s",secondWord[asarot-1],firstWord[ahadot-1]); } i++; } i=0; while(letters[i]!=NULL) { fprintf(out,"%s",letters[i]); i++; }return 0;} קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2012 ביוני 18 Share פורסם 2012 ביוני 18 אתה בטוח שהקובץ שאתה פותח לקריאה קיים (בתיקייה שממנה התכנית רצה)?בכל מקרה, במקרה של שגיאה בפונקציה סטנדרטית (כמו fopen) עדיף להדפיס את הודעת השגיאה באמצעות הפונקציה perror, כי זה גם ידפיס את הודעת השגיאה שמערכת ההפעלה החזירה (וככה תדע מה הסיבה המדוייקת לכשלון של הפונקציה). קישור לתוכן שתף באתרים אחרים More sharing options...
itai2k פורסם 2012 ביוני 18 מחבר Share פורסם 2012 ביוני 18 תודה, כן הם נמצאים בתיקיה. עשיתי את מה שאמרת - תראה מה קרה :s05: קישור לתוכן שתף באתרים אחרים More sharing options...
שניצל פורסם 2012 ביוני 18 Share פורסם 2012 ביוני 18 ואתה מצפה שננחש את הקוד? קישור לתוכן שתף באתרים אחרים More sharing options...
itai2k פורסם 2012 ביוני 18 מחבר Share פורסם 2012 ביוני 18 שתי הודעות לפני זה שמתי את הקוד...רק ששיניתי את ה stderr ל perror כמו שאמרת ולשם הקומפיילר מצביע עם כל הבעיות... קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.