כותב |
|
Inj3ction משתמש חבר
הצטרף / הצטרפה: 09 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 149
|
נשלח בתאריך: 29 December 2005 בשעה 22:36 | | IP רשוּם
|
|
|
|
אוקיי לפני כמה ימים כשhts חזר, נכנסתי אליו והתחלתי לפתור בו אתגרים.
נתקעתי באתגר אחד של תכנות. המטרה של האתגר היא לבנות תוכנית שלוקחת 10
מילים מתוך קובץ טקסט שהאותיות שלהן מעורבבות ולסדר אותן בעזרת קובץ טקסט
עם אוצר מילים. אוקיי בינתיים נשמע קל.. התחלתי לבנות את התוכנית והכל היה
טוב, עד שנתקעתי בשלב קטן. בניתי בינתיים תוכנית שלוקחת מילה אחת מהקובץ
טקסט עם המילים המבולגנות ובודקת אותה מול כמה מילים מהקובץ אוצר המילים
ומסדרת את האותיות במילה(לפי סכום האסקיי של התוים). הכל עובד והכל
טוב. עכשיו מה שאני רוצה בעצם לעשות זה שהתוכנית תסדר ישר כמה מילים ולא
רק מילה אחת. בעיקרון הבעיה היא שאני מנסה לעשות שהפונקציה fgets() תרד רק
שורה אחת בקובץ בדיקה, ותרד כמה שורות בקובץ האוצר מילים... טוב הנה הקוד
של התוכנית:
קוד:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int c=0;
int ascii(char *a) {
c=0;
int i;
for (i=0;i<strlen(a) && i<20;++i) { c+=a; }
return c;
}
main() {
int n;
char a[20];
char b[20];
FILE *fp;
FILE *fp2;
fp=fopen("tmp.txt", "r");
fp2=fopen("wordlist.txt", "r");
if (fp==NULL||fp2==NULL) { printf("ErRoR"); getch(); abort(); }
printf("working...\n");
start:
{
fgets(a,20,fp);
ascii(a);
n=c;
fgets(b,20,fp2);
ascii(b);
if (n==c) { printf("%s,", b); }
else { goto start; }
}
getch();
}
|
|
|
עכשיו תריצו את התוכנית ותיצרו שתי קבצים באותה התיקייה: tmp.txt ו wordlist.txt שימו לדוגמא ב tmp.txt
וב wordlist.txt
קוד:
blablabla
jjj
nanana
hello
|
|
|
הפלט של התוכנית יהיה: hello. אני רוצה שהוא יבדוק יותר ממילה אחת ולא הצלחתי לפתור את זה עם לולאה פשוטה.
תודה מראש
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 30 December 2005 בשעה 08:54 | | IP רשוּם
|
|
|
|
הערה קטנה - תגדיר שמות משמעותיים למשתנים. באתי לקרוא אבל בגלל שהכל זה a, b וכו' וצריך זמן (שאין לי) כדי להבין מה קורה כאן, אני ממשיך הלאה להודעות הבאות. נסה, גם בתור הרגל בשבילך, וגם בשביל לעזור לקוראים, לתת תמיד שמות משמעותיים למשתנים.
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
SDX משתמש חבר
הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת הודעות: 106
|
נשלח בתאריך: 31 December 2005 בשעה 01:00 | | IP רשוּם
|
|
|
|
גם אני כמו ניר לא קראתי את התוכנית.
אבל בשביל מה שאתה רוצה לעשות תקרא עד הסוף השורה מהקובץ של השמות המבולבלים
ותעשה לולאה שקוראת ככה עד סוף הקובץ
ותעשה את אותו חיפוש :/
ורואים שלא למדת מספר מסודר, אלא מהאינטרנט
הקוד שלך לא יעיל ומגעיל.. (no offence).
__________________ Smoke weed evryday
~-===-~
|
חזרה לתחילת העמוד |
|
|
Inj3ction משתמש חבר
הצטרף / הצטרפה: 09 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 149
|
נשלח בתאריך: 31 December 2005 בשעה 01:41 | | IP רשוּם
|
|
|
|
תודה פתרתי כבר. פשוט הכנסתי את כל המילים מהקובץ הראשון למערך ושלפתי
מילה מילה עד שהוא יסדר אותה.. וSDX לא שאלתי אם זה קוד טוב או לא, כי לא
השקעתי בלעשות אותו יעיל אלא רק העיקר היה בשבילי לפתור את האתגר.
אפשר לנעול
|
חזרה לתחילת העמוד |
|
|
SDX משתמש חבר
הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת הודעות: 106
|
נשלח בתאריך: 31 December 2005 בשעה 01:53 | | IP רשוּם
|
|
|
|
שמע זה עצוב שאתה לא רגיל לכתוב אותו יעיל
וצריך להתאמץ :/
__________________ Smoke weed evryday
~-===-~
|
חזרה לתחילת העמוד |
|
|
pitbull משתמש חבר
הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 31 December 2005 בשעה 15:41 | | IP רשוּם
|
|
|
|
SDX, אתה מתכוון שהקוד לא נראה יפה או לא יעיל? אלו דברים שונים.. לפי דעתי הפונקצייה שהוא בנה לחישוב סכום ה ascii יעילה מאוד הדבר היחיד שלא יעיל זה ה goto ...
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 31 December 2005 בשעה 15:48 | | IP רשוּם
|
|
|
|
+ שמות משתנים + מתשנים גלובליים + הזחה בסגנון לא מקובל + אי סגירת הקבצים שנפתחו במידה ואחד מהם נפתח והשני לא + אי סגירת הקבצים בכל מקרה בסוף התוכנית.
צריך עוד משהו?
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
pitbull משתמש חבר
הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 31 December 2005 בשעה 16:19 | | IP רשוּם
|
|
|
|
אוקי צודק, לא שמתי לב למשתנים גלובליים ולסגירת הקבצים...
|
חזרה לתחילת העמוד |
|
|
Inj3ction משתמש חבר
הצטרף / הצטרפה: 09 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 149
|
נשלח בתאריך: 31 December 2005 בשעה 19:43 | | IP רשוּם
|
|
|
|
האי סגירת קבצים זה בגלל שכשניר נעל לי את הנושא הקודם פשוט העתקתי את כל
מה שהיה בו, ומה שפירסמתי בו היתה התוכנית הישנה שבניתי. תיקנתי את הסגירת
קבצים כבר מזמן וגם את הכמה משתנים הגלובליים.
אז ניר כל מה שאמרת מתוקן אצלי כבר מזמן חוץ מהדבר הזה של "הזחה בסגנון לא מקובל"- למה התכוונת?
|
חזרה לתחילת העמוד |
|
|
SDX משתמש חבר
הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת הודעות: 106
|
נשלח בתאריך: 31 December 2005 בשעה 21:00 | | IP רשוּם
|
|
|
|
חח, אני לא מבין אותך..
אתה ממש מפגר הא, הוא לא בא לריב איתך הוא בא להראות לך, פעם הבאה
איך לכתוב קוד יעיל (ונכון..).
__________________ Smoke weed evryday
~-===-~
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 01 January 2006 בשעה 08:33 | | IP רשוּם
|
|
|
|
הפונקציה הראשונה, עם הזחה כמו שצריך:
קוד:
int ascii(char *a) { int i; c = 0; for (i = 0; i < strlen(a) && i < 20; ++i) { c+=a; } return c; } |
|
|
שים לב גם שהפכתי לך את הסדר של המשתנים - אסור לעשות פעולות על משתנה לפני הגדרת משתנה לפי שפת C.
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
Inj3ction משתמש חבר
הצטרף / הצטרפה: 09 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 149
|
נשלח בתאריך: 01 January 2006 בשעה 10:40 | | IP רשוּם
|
|
|
|
תודה ניר. וsdx שתוק נמעסת זה שאתה לא מבין נכון מה אני כותב זה לא אשמתי
ואני לא בא לריב עם אף אחד. תנסה לקרוא את מה שאני אומר בטון אחר
|
חזרה לתחילת העמוד |
|
|
pitbull משתמש חבר
הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 01 January 2006 בשעה 11:49 | | IP רשוּם
|
|
|
|
מזה? בזמן האחרון יש פה מלא ריבים במיוחד בפורום תכנות, תרגעו אנשים :|
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר
הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 01 January 2006 בשעה 11:56 | | IP רשוּם
|
|
|
|
pitbull כתב:
מזה? בזמן האחרון יש פה מלא ריבים במיוחד בפורום תכנות, תרגעו אנשים :|
|
|
|
מסכים
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
SDX משתמש חבר
הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת הודעות: 106
|
נשלח בתאריך: 02 January 2006 בשעה 18:10 | | IP רשוּם
|
|
|
|
Inj3ction כתב:
תודה ניר. וsdx שתוק נמעסת זה שאתה לא מבין נכון מה אני כותב זה לא אשמתי
ואני לא בא לריב עם אף אחד. תנסה לקרוא את מה שאני אומר בטון אחר
|
|
|
"נמעסתי" אוקי.. lol
קודם כל אתה באת "להגן" על עצמך בפוסט שהיה לפני לכן
אני כתבתי את מה שכתבתי..
אדיוט..
__________________ Smoke weed evryday
~-===-~
|
חזרה לתחילת העמוד |
|
|
y2cRAck4 אחראי פורומים
הצטרף / הצטרפה: 28 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 437
|
נשלח בתאריך: 05 January 2006 בשעה 07:10 | | IP רשוּם
|
|
|
|
נעול
__________________ ? Why to crack for
|
חזרה לתחילת העמוד |
|
|