בקשה| עזרה בכתיבת קוד ל C - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

בקשה| עזרה בכתיבת קוד ל C


stas4000

Recommended Posts

אז ככה, אני קיבלתי משימה לכתוב קוד שמדמה פירמידה, לפי מספר השלבים שאני יכניס לה, למשל אם אני יכניס שמונה תווים זה יראה ככה:

##

###

####

#####

######

#######

########

#########

אם אני יכניס 3 שלבים זה יראה ככה:

##

###

####

וככה אפשר לבחור מספר בין 1 ל 23.

עד עכשיו כתבתי את הקוד הזה:




#include <stdio.h>
#include <cs50.h>


int main (void)
{
int height;
int i;


do {
printf("Enter your pyramid height (A number between 1 and 23)");
height = GetInt();
}
while (height > 23 || height <= 0);


for(i=0; i<height; i++) {


printf("#%c%d",*,i);
}
}




ב printf נתקעתי

רציתי לעשות סולמית כפול המספר פעמים של הלולאה אבל זה נותן לי שגיאה

חוץ מזה אני לא יודע אפילו אם הדרך הזאת נכונה.. או איך לעשות את התרגיל. אז בבקשה עזרה :) תודה

דרך אגב, הGetInt זה כמו הscanf.

תודה מראש על העזרה !

קישור לתוכן
שתף באתרים אחרים

אתה לא יכול להכפיל מספר בתו ולצפות לקבל מספר תוים...

מה שקורה לך זה שאתה מכפיל למשל את התו '2' ב-2, התוצאה לא תהיה 4, אלה האות B.

'2' = 51, 51*2 = 102, אבל 102 = 'B'.

מה שאתה צריך לעשות, זה 'לזכור' את המספר שהוזן ולהשתמש בו בלולאת FOR.

הנה משהו אלטרנטיבי, תגיב אם לא ברור:

//my input number
int my_number = 8;

//indexes
int i;
int j;

/*add step and substract*/
for(int i = my_number; i > 0 ; i--)
{
/*Print current step*/
for(j = 0; j < i ; j++)
{
printf('#');
}

printf('\n'); /*next line*/
}

קישור לתוכן
שתף באתרים אחרים

^אל תתן פיתרון מלא, תן הדרכה בלבד. ככה הוא לא ילמד

תריץ עוד לולאה בפנים שתדפיס את הסולמיות. הלולאה החיצונית תריץ את הלולאה הפנימית ועוד פקודה שתרד שורה.

קישור לתוכן
שתף באתרים אחרים

תודה ל על העזרה, אני פתרתי שלב אחד בבעיה שלי שזה לעשות את הפירמידה, זה מה שכתבתי:


#include <stdio.h>
#include <cs50.h>


int main (void)
{
int height;
int i;
int j;
//int l;


do {
printf("Enter your pyramid height (A number between 1 and 23)");
height = GetInt();
}
while (height > 23 || height <= 0);


for(i=0; i<height; i++)
{
// for(l=0 ; l<i ; l++)

for(j=-1 ; j<i ; j++)
{
printf("#");
}
printf("\n");
}
}

זה עובד סבבה לגמרי רק שעכשיו נתקלתי ב2 בעיות

1 - התוכנה אמורה להתחיל משתי סולמיות (ואני לא מצליח להבין איך לעשות את זה כי המוח שלי כבר נמס :smiley7:)

2 - אני צריך להוסיף רווח ליד כל סולמית כדי שהפירמידה תתיישר לימין

ככה:

##

###

####

#####

מה שעכשיו הבנתי שעל הסולמית הראשונה אני צריך לעשות במקרה הזה 4 רווח והשניה 3 זאת אומרת

for (x=0 ; x<i ; x++)
printf(" ")


רק שהלולאה צריכה להתחיל מהסוף ואין לי מושג איך לעשות את זה בC

קישור לתוכן
שתף באתרים אחרים

ראשית, ניתן לבצע לולאה "הפוכה". אם אתה לא יודע איך עושים זאת, כנראה אתה בכלל לא מבין את מבנה הלולאה ואיך היא עובדת.

בנוסף, אם כבר יש לך לולאה פנימית שמדפיסה N סולמיות בשורה מסויימת. כמה רווחים אתה צריך להדפיס באותה שורה בהינתן K שורות בכלל?

קישור לתוכן
שתף באתרים אחרים

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

למי שמעוניין זה הפיתרון שלי:

int main (void) 
{
int height;
int i;
int j;
int l;


do {
printf("Enter your pyramid height (A number between 1 and 23)");
height = GetInt();
}
while (height > 23 || height <= 0);


for(i=0; i<height; i++)
{
for(l=0 ; l<height-i ; l++)
{
printf(" ");
}

for(j=-1 ; j<i+1 ; j++)
{
printf("#");
}
printf("\n");
}
}


קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...