שפת C/מערכים/תרגילים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Atavory (שיחה | תרומות)
אין תקציר עריכה
Atavory (שיחה | תרומות)
אין תקציר עריכה
שורה 47:
==קליטת ערכי מטריצה==
 
כתבו תוכנית הקולטת ערכי מטריצה בגודל מסוים (4 על 3). לבדיקה, הדפיסו את המטריצה בשורות, כבתרגיל [[שפת C/מטריצותמערכים/תרגילים#הדפסת ערכי מטריצה (מערך דו-מימדי) בשורות]]. השתמשו במטריצה של מספרים שלמים.
 
{{מוסתר|פתרון|2=
שורה 84:
 
 
==שאילתות על ערכי מטריצה (מערך דו-מימדי)==
כתבו תוכנית שנתונה לה מטריצת תווים בגודל מסוים (4 על 3), ועליה להדפיס אותו בשורות ועמודות. הנח שהמשתמש סופר מ1, ולא מ0.
כתבו תוכנית שמבצעת את הפעולות הבאות:
#ראשית
#לאחר מכן, התוכנית תפעל בלולאה:
##התוכנית תבקש להקליד 'q' כדי לצאת מהתוכנית, או 'c' כדי להמשיך.
##אם המשתמש בחר לצאת מהתוכנית, יש לסיים את התוכנית.
##אם המשתמש בחר להמשיך, התוכנית תבקש ממנו להקליד שורה ועמודה, ותדפיס את הערך בשורה ובעמודה.
 
לדוגמה, אם נתונה המטריצה הבאה:
אחר-כך המשתמש יכול להקליד מספר שורה ומספר עמודה בין 1 ל-5, והתוכנית תגיד לו מהו המספר שנמצא באותו תא. אם יקליד מספר שורה או עמודה שאינם קיימים - תוצג הודעת שגיאה, והמשתמש יתבקש להקליד מחדש (נזכור שהאינדקסים במערך הם 0-4, ולכן אם המשתמש יקליד למשל 1,4 צריך יהיה להציג את המספר שבמיקום 0,3 במערך). התוכנית תשאל את המשתמש אם להמשיך (1) או להפסיק (2) אם יבחר להמשיך הוא יתבקש שוב להקליד שורה ועמודה, וכך הלאה, כשיבחר להפסיק - התוכנית תסתיים בהודעה "!Goodbye". '''''רמז:''''' לקליטת המספרים, השתמשו בלולאת for כפולה (לולאה בתוך לולאה)
<pre style="text-align:left; direction:ltr;">
char matrix[4][3]=
{ {'1','2','3'} , {'4','5','6'} , {'7','8','9'} , {'a','b','c'}};
</pre>
והמשתמש בוחר בשורה 1 ועמודה 2, אז יש להדפיס '2'.
 
 
שורה 98:
<div style="text-align:left; direction:ltr;"><pre>
#include <stdio.h>
 
 
int main()
{
char matrix[4][3]=
int a[5][5],i,j,flag=1;
{ {'1','2','3'} , {'4','5','6'} , {'7','8','9'} , {'a','b','c'}};
printf("Please enter 25 numbers\n");
for(i=0;i<5;i++)
unsigned int row, column;
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
printf("Please enter 25a row and column: numbers\n");
while(flag==1)
scanf("%d %d", &row, &a[i][j]column);
{
printf("Please enter row and column\n");
/* We need to decrease these variables, since C arrays are 0-based, not 1-based. */
scanf("%d%d",&i,&j);
--row;
if((i<=5)&&(i>0)&&(j<=5)&&(j>0))
--column;
/* Always check for access violation! */
if(row >= 4 || column >= 3)
{
printf("%dIllegal choice!",a[i-1][j-1]);
printf("If you want to exit enter 2. if not enter 1\n");
return -1;
scanf("%d",&flag);
if(flag==2)
printf("Goodbye!\n");
}
else
printf("Please enter vaild%c\n", matrix[row and ][column numbers\n"]);
}
return 0;
}
</pre></div>