כותב |
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 12 November 2005 בשעה 17:49 | | IP רשוּם
|
|
|
|
אני לומד c.. כמו שוודאי הבנתם מהכותרת.
נתנו לי תרגיל, להדפיס מחרוזת בסדר הפוך בלי שימוש במצביעים.
כלומר... השימוש נעשה רק במערכים חד מימדיים ולולאות, בלי פונקציות בלי מצביעים ודברים דומים.
אני לא הצלחתי בתרגיל
תוכלו לכתוב לי את אותו פתרון של תרגיל זה?
בתודה, יוסי.
|
חזרה לתחילת העמוד |
|
|
prgrmr משתמש מתחיל
הצטרף / הצטרפה: 18 August 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 16
|
נשלח בתאריך: 12 November 2005 בשעה 18:41 | | IP רשוּם
|
|
|
|
פשוט תרוץ הפוך
|
חזרה לתחילת העמוד |
|
|
pitbull משתמש חבר
הצטרף / הצטרפה: 14 May 2005
משתמש: מנותק/ת הודעות: 209
|
נשלח בתאריך: 12 November 2005 בשעה 21:53 | | IP רשוּם
|
|
|
|
לדוגמא
אז כדי להדפיס את המחרוזת בצורה הפוכה קודם כל צריכים לדעת את אורך המחרוזת
אחר כך פשוט עושים לולאה מהסוף להתחלה שכל ריצה מדפיסה תו אחד עד התו הראשון.
קוד:
for(i=length; i>=0; i--) printf("%c",st);
|
|
|
|
חזרה לתחילת העמוד |
|
|
אבידור משתמש חבר
הצטרף / הצטרפה: 11 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 162
|
נשלח בתאריך: 13 November 2005 בשעה 07:19 | | IP רשוּם
|
|
|
|
לדעתי הוא הסביר מצויין... לפונקציה STRLEN צריך את הספריה
string.h
אם אתה עדיין רוצה את התוכנית השלמה / הפונקציה תגיד...
|
חזרה לתחילת העמוד |
|
|
SDX משתמש חבר
הצטרף / הצטרפה: 26 September 2005
משתמש: מנותק/ת הודעות: 106
|
נשלח בתאריך: 13 November 2005 בשעה 12:35 | | IP רשוּם
|
|
|
|
אבידור כתב:
לדעתי הוא הסביר מצויין... לפונקציה STRLEN צריך את הספריה
string.h
אם אתה עדיין רוצה את התוכנית השלמה / הפונקציה תגיד... |
|
|
???????
הוא נתן לו את התוכנית השלמה
__________________ Smoke weed evryday
~-===-~
|
חזרה לתחילת העמוד |
|
|
SBD פורומיסט על
הצטרף / הצטרפה: 13 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1194
|
נשלח בתאריך: 13 November 2005 בשעה 15:10 | | IP רשוּם
|
|
|
|
הוא נתן לו קטע קוד, נכון שאם זה השאר כבר גמור, אבל בכל זאת זה לא נקרא תוכנית שלמה :)
__________________ ~ Nobody Is Perfect, I'm Nobody ~
פורומים
|
חזרה לתחילת העמוד |
|
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 November 2005 בשעה 16:52 | | IP רשוּם
|
|
|
|
תודה :)
הממ.. אמנם זה קטע קוד, אבל זה כמו תכנית שלמה..
לא נורא, העיקר שהבנתי.
|
חזרה לתחילת העמוד |
|
|
prgrmr משתמש מתחיל
הצטרף / הצטרפה: 18 August 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 16
|
נשלח בתאריך: 13 November 2005 בשעה 18:40 | | IP רשוּם
|
|
|
|
pitbull כתב:
לדוגמא
אז כדי להדפיס את המחרוזת בצורה הפוכה קודם כל צריכים לדעת את אורך המחרוזת
אחר כך פשוט עושים לולאה מהסוף להתחלה שכל ריצה מדפיסה תו אחד עד התו הראשון.
קוד:
for(i=length; i>=0; i--) printf("%c",st);
|
|
|
|
|
|
היית יכול לקצר את זה.
קוד:
for(i=strlen(st); i>=0; --i) |
|
|
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר
הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 13 November 2005 בשעה 18:55 | | IP רשוּם
|
|
|
|
אבל מבחינת יעילות עדיף כמו פיטבול. אחרת בכל סיבוב של הלולאה האורך יחושב שוב...
|
חזרה לתחילת העמוד |
|
|
אורח אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 13 November 2005 בשעה 19:14 | | IP רשוּם
|
|
|
|
מה פתאום.
האם בכל סיבוב של הלולאה המונה יתאפס שוב?
לעומת זאת אני רואה המון אנשים שכותבים לולאת FOR בסגנון הזה:
קוד:
for(i=0;i<strlen(str);i++) |
|
|
|
חזרה לתחילת העמוד |
|
|
prgrmr משתמש מתחיל
הצטרף / הצטרפה: 18 August 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 16
|
נשלח בתאריך: 13 November 2005 בשעה 19:23 | | IP רשוּם
|
|
|
|
ד"א אם כבר אז עדיף לעשות:
i++
ולא:
++i
|
חזרה לתחילת העמוד |
|
|
אבידור משתמש חבר
הצטרף / הצטרפה: 11 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 162
|
נשלח בתאריך: 13 November 2005 בשעה 20:15 | | IP רשוּם
|
|
|
|
כמה שאני מנסה להבין, אני לא מצליח להבין מה ההבדל?!
|
חזרה לתחילת העמוד |
|
|
prgrmr משתמש מתחיל
הצטרף / הצטרפה: 18 August 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 16
|
נשלח בתאריך: 13 November 2005 בשעה 20:40 | | IP רשוּם
|
|
|
|
כי כשאתה עושה Pre אז הוא פשוט מקדם.
וכשאתה עושה post אז נוצר עותק בזיכרון, דבר שגוזל זמן...
|
חזרה לתחילת העמוד |
|
|
Inj3ction משתמש חבר
הצטרף / הצטרפה: 09 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 149
|
נשלח בתאריך: 13 November 2005 בשעה 21:58 | | IP רשוּם
|
|
|
|
אז זה תמיד עדיף יותר לא?
|
חזרה לתחילת העמוד |
|
|
prgrmr משתמש מתחיל
הצטרף / הצטרפה: 18 August 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 16
|
נשלח בתאריך: 14 November 2005 בשעה 16:30 | | IP רשוּם
|
|
|
|
כן זה עדיף אלא אם כן אין בררה...
|
חזרה לתחילת העמוד |
|
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 14 November 2005 בשעה 17:28 | | IP רשוּם
|
|
|
|
הבנתי, תודה.
|
חזרה לתחילת העמוד |
|
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 14 November 2005 בשעה 17:55 | | IP רשוּם
|
|
|
|
קוד:
#include <stdio.h> #include <string.h> void main() {
char st[10]; int i;
gets(st);
for(i=strlen(st) ; i>=0 ; --i){ printf("%c",st);
} printf("\n"); } |
|
|
זה מה שכתבתי.. סגנון קצתשונה משלכם, לא עובד לי... למה?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 14 November 2005 בשעה 18:43 | | IP רשוּם
|
|
|
|
לפי דעתי, זה אמור להיות strlen(st)-1...סתם "ניחוש" פרוע...
|
חזרה לתחילת העמוד |
|
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 14 November 2005 בשעה 18:48 | | IP רשוּם
|
|
|
|
זה לא קשור, הבעיה היא ב- gets...
מה לא היה טוב בקוד?
|
חזרה לתחילת העמוד |
|
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 14 November 2005 בשעה 18:57 | | IP רשוּם
|
|
|
|
לא עובד, במקום לרשום את הלולאה בסדר הפוך הוא רושם tttttt
|
חזרה לתחילת העמוד |
|
|
prgrmr משתמש מתחיל
הצטרף / הצטרפה: 18 August 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 16
|
נשלח בתאריך: 14 November 2005 בשעה 19:02 | | IP רשוּם
|
|
|
|
כי בהדפסה ביקשת להדפיס את כל המחרוזת ולא תא אחד
|
חזרה לתחילת העמוד |
|
|
יוס אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 14 November 2005 בשעה 19:08 | | IP רשוּם
|
|
|
|
צודק, ניסיתי לשנות את כל ה printf ל puts..
לא עובד, מדפיס את המחרוזת הרגילה..
|
חזרה לתחילת העמוד |
|
|
אבידור משתמש חבר
הצטרף / הצטרפה: 11 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 162
|
נשלח בתאריך: 14 November 2005 בשעה 21:21 | | IP רשוּם
|
|
|
|
תגידו מה אתם טמבלים?
אתם מדפיסים את האות הראשונה כל הזמן!
איפה נעשה שימוש ב I?
קוד:
for(i=strlen(st) ; i>=0 ; --i){
printf("%c",st);
}
|
|
|
לא נעשה.
הפקודה המתוקנת:
עריכה:
מכיוון שאי אפשר לכתוב '[' ו ']' ובינהם משהוא, הפקודה המתוקנת היא:
את ה a תחליפו ב "[ i ]" בלי רווחים.
ולמי שעדיין לא הבין, אתם צריכים בכל לולאה לגשת לתא ה I במחרוזת ST.
|
חזרה לתחילת העמוד |
|
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 15 November 2005 בשעה 16:00 | | IP רשוּם
|
|
|
|
תודות לעזרה של כולכם, הצלחתי
ובזכות אבידור שתיקן אותי
#include <stdio.h> #include <string.h> void main() {
char st[10]; int i;
gets(st);
for(i=strlen(st) ; i>=0 ; --i){ printf("%c",st);
} printf("\n"); }
|
חזרה לתחילת העמוד |
|
|
Fate פורומיסט על
הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת הודעות: 571
|
נשלח בתאריך: 18 November 2005 בשעה 19:06 | | IP רשוּם
|
|
|
|
סתם כי משעמם לי:
קוד:
for (i=strlen(gets(st))-1;((i>=0)&&(0<printf("%c", st[ i ]));--i);
|
|
|
מואהאהאהאה......
|
חזרה לתחילת העמוד |
|
|
אבידור משתמש חבר
הצטרף / הצטרפה: 11 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 162
|
נשלח בתאריך: 18 November 2005 בשעה 22:14 | | IP רשוּם
|
|
|
|
מניאק חח...
קיצר את כל התוכנית לשורה אחת!
|
חזרה לתחילת העמוד |
|
|
Inj3ction משתמש חבר
הצטרף / הצטרפה: 09 October 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 149
|
נשלח בתאריך: 19 November 2005 בשעה 01:34 | | IP רשוּם
|
|
|
|
חחחחחחחח קרעת אותי יא סוסססססססס
מניאק איך הצלחת?!?!?!?#@$@#$ חחחחחחח
|
חזרה לתחילת העמוד |
|
|
CoNfideNce משתמש מתחיל
הצטרף / הצטרפה: 10 September 2005
משתמש: מנותק/ת הודעות: 25
|
נשלח בתאריך: 19 November 2005 בשעה 10:51 | | IP רשוּם
|
|
|
|
חחחח פייט מגניב :D
__________________ CoNfi ;)
|
חזרה לתחילת העמוד |
|
|
יוסי אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 20 November 2005 בשעה 19:05 | | IP רשוּם
|
|
|
|
=)
|
חזרה לתחילת העמוד |
|
|