פורסם 2010 בדצמבר 2014 שנים מחבר כתבתי את הקוד הבא:#include <stdio.h>#include <stdlib.h>#define N 4 int main(){ int matrix[N][N]; static int i=0, j=0, counter=0; int num;while ( (scanf("%d",&num)) ==1 ) { if (counter > N*N) { printf("Sliding Error !"); exit(0); } else if (i!=N) { matrix[i][j]=num; i++; counter++; } else if ( (i==N) && (j!=N) ) { matrix[i][j]=num; i=0; j++; counter++; } else if ( (i==N) && (j==N) ) { matrix[i][j]=num; counter++; } }/*while may finished because one of the following: 1. EOF 2. a char */if (isdigit(num)==0){ printf("Not a number !!"); exit(0);}/*Runs all over the matrix values and print them*//*==========================================================*/ for(i = 0; i < N; i++) { for(j = 0; j < N; j++) printf("%d\t", matrix[i][j]); printf("\n"); } return 0;}עדיין לא עובד...אשמח לקבל פידבק...תודה.
פורסם 2010 בדצמבר 2014 שנים חביבי, הסתבכת. הנה הרעיון הכללי לאיך לעבור על מטריצה באמצעות לולאת while אחת:while (/* some condition */) { if (i >= N) { /* i has reached the end - terminate loop */ break; } /* some code goes here */ j++; if (j >= N) { /* j has reached the end - go to next i, reset j */ i++; j = 0; }}יש מבין?
פורסם 2010 בדצמבר 2014 שנים מחבר מקווה שהבנתי...#include <stdio.h>#include <stdlib.h>#define N 4 int main(){int matrix[N][N];static int i=0, j=0;int num;while (scanf("%d",&num) ==1) { if (i >= N) /* i has reached the end - terminate loop*/ { break; } matrix[i][j]=num; j++; if (j >= N) { /* j has reached the end - go to next i, reset j*/ i++; j = 0; }} /*while*/for(i = 0; i < N; i++) { for(j = 0; j < N; j++) printf("%d\t", matrix[i][j]); printf("\n"); } return 0;} /*main*/עבור מספרים מ-1 עד-16, קיבלתי פלט תקין.עכשיו רק חסר לי משהו קטן לפני שאני מתחיל לעשות מניפולציות על המטריצה... אם קיבלתי משהו ששונה מ-int איפה אני ממקם את ה-printf("NaN !!!");exit(0);??תודה.
פורסם 2010 בדצמבר 2014 שנים למה אתה מתעקש לא להשתמש בfor פשוט? האם לממש for באמצעות while זה חלק מהתרגיל?(רמז: הטיעון הקודם שלך ללמה זה לא יעבוד לא נכון)לגבי מה לעשות אם קיבלת משהו שונה מ-int - במקרה כזה scanf תחזיר ערך שגיאה.
פורסם 2010 בדצמבר 2014 שנים מחבר למה אתה מתעקש לא להשתמש בfor פשוט?אם אני מעוניין לממש ע"י for איך ייראה המבנה ? ומבחינת תנאי עצירה, אני מניח שאתה מתכוון ל-for מקונן, אז איך אני אקבע את תנאי העצירה שלי ?יש לי בעיקרון 2 תנאים:scanf("%d",&num) !=1 && (i==N)ונניח בלולאה הפנימית: j==N האם אני צודק ?
פורסם 2010 בדצמבר 2014 שנים אם אני מעוניין לממש ע"י for איך ייראה המבנה ? ומבחינת תנאי עצירה, אני מניח שאתה מתכוון ל-for מקונן, אז איך אני אקבע את תנאי העצירה שלי ? תחשוב מתי אתה צריך לעצור, האם זה דורש תנאי עצירה מיוחד, ואם כן - באילו מקרים, ומה לעשות אחרי זה, ותוכל לענות לעצמך על השאלה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.