הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 05-11-08, 20:44   # 1
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

עזרה ב-C - מטריצה

שלום,
אני צריך לעשות מטריצת אותיות 5X5 שזה יהיה בעצם תפזורת וצריך לחשב בה את מספר המופעים של מילה מסויימת בתפזורת, המופע הזה יכול להיות מלמעלה, מלמטה, ימין, שמאל

לדוגמא:
A B A G I
C A M P U
M B O Y R
Z A O Z U
U R U B C

נגיד זה יבקש ממני את השורה הראשונה אז יהיה רשום
ABAGI
בשורה השניה:
CAMPU
שלישית:
MBOYR
רביעית:
ZAOZU
חמישית:
URUBC

ואז אם נגיד אני ירשום שזה יחפש כמה פעמים המילה URU או ABA מופיעה זה יגיד לי שתיים

אני עכשיו ישבתי על זה דיי הרבה זמן ופשוט לא עולה לי רעיון כיצד לבצע זאת

HELP ME
  Reply With Quote
ישן 05-11-08, 20:48   # 2
daMn
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
גיל: 34
הודעות: 2,050

daMn לא מחובר  

יש לי רעיון, אני לא יודע עד כמה הוא יעיל אבל גם רעיון.
תבצע לולאה שתעבור על כל המטריצה ותבדוק אם האות הנוכחית(i) שווה לאות הראשונה במילה המבוקשת,
אם שווה תמשיך לבדוק מכל צד(למעלה, למטה , ימין ושמאל) אם האות הבאה שווה לאות השנייה של המילה המבוקשת, אם כן תמשיך רקורסיבית(יש לדאוג לבדיקה של מספר אותיות).
אם לא שווה להמשיך לרוץ על הלולאה.
__________________
"חינוך למדעי המחשב לא יכול להפוך אף אחד למתכנת מומחה יותר מאשר לימוד על מברשות וצבעים יכול להפוך מישהו לצייר מיומן."
(אריק ס. ריימונד)
  Reply With Quote
ישן 05-11-08, 21:01   # 3
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

ציטוט:
נכתב במקור על ידי daMn צפה בהודעה
יש לי רעיון, אני לא יודע עד כמה הוא יעיל אבל גם רעיון.
תבצע לולאה שתעבור על כל המטריצה ותבדוק אם האות הנוכחית(i) שווה לאות הראשונה במילה המבוקשת,
אם שווה תמשיך לבדוק מכל צד(למעלה, למטה , ימין ושמאל) אם האות הבאה שווה לאות השנייה של המילה המבוקשת, אם כן תמשיך רקורסיבית(יש לדאוג לבדיקה של מספר אותיות).
אם לא שווה להמשיך לרוץ על הלולאה.
סיבכת אותי :S
ואם הבנתי נכון אז זה נראה לי קצת בעיה לבדוק מילה כי אם אני יקיש מחרוזת אז זה לא יסתדר
ולפי מה שאני יודע אי אפשר להשוות מחרוזות בC
  Reply With Quote
ישן 05-11-08, 21:05   # 4
daMn
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
גיל: 34
הודעות: 2,050

daMn לא מחובר  

ציטוט:
נכתב במקור על ידי Xinxy צפה בהודעה
סיבכת אותי :S
ואם הבנתי נכון אז זה נראה לי קצת בעיה לבדוק מילה כי אם אני יקיש מחרוזת אז זה לא יסתדר
ולפי מה שאני יודע אי אפשר להשוות מחרוזות בC
לא דיברתי על השוואת מחרוזת...דיברתי על השוואת תווים.
אני לא בטוח איך זה בC אבל בוא אני אתן דוגמא.
קוד:
str = "test";
print str[0]; // will print t
print str[2]; // will print 2
ואז אתה משווה את הראשון לתו שאתה מקבל בלולאה.
__________________
"חינוך למדעי המחשב לא יכול להפוך אף אחד למתכנת מומחה יותר מאשר לימוד על מברשות וצבעים יכול להפוך מישהו לצייר מיומן."
(אריק ס. ריימונד)
  Reply With Quote
ישן 05-11-08, 21:40   # 5
Jerba
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 300

Jerba לא מחובר  

רוץ פעם על השורות ופעם על העמודות ותחפש...לא כזה קשה..
יש אלכסונים גם? אם לא אז זה יחסית פשוט..
  Reply With Quote
ישן 05-11-08, 21:42   # 6
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

ציטוט:
נכתב במקור על ידי Jerba צפה בהודעה
רוץ פעם על השורות ופעם על העמודות ותחפש...לא כזה קשה..
יש אלכסונים גם? אם לא אז זה יחסית פשוט..
לא אין אלכסונים
ואיך לרוץ על העמודות?
  Reply With Quote
ישן 05-11-08, 22:56   # 7
SDF
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: Negev
הודעות: 270

SDF לא מחובר  

אחריי שתסיים יש לי קוד בשבילך, נשווה.

ובנתיים:
איך רצים לפי שורות:
קוד:
int i, j;
for (i = 0; i < MATRIX_SIZE; i++)
{
 for(j = 0; j < MATRIX_SIZE; j++)
   printf("%c\t", matrix[i][j]);
 printf("\n");
}
זה כמובן מדפיס את המטריצה, אם אתה על GCC, אתה יכול לשים sleep אחריי ה printf ותראה שהוא הולך לפי שורות.
בשביל ללכת לפי עמודות, אתה צריך:
matrix[j][i]
להחליף את האינדקסים, שים לב שאתה לא חורג מגבולות מערך אם יש לך מטריצה לא ריבועית.
__________________
FreeBSD, a *nix operating system
  Reply With Quote
ישן 05-11-08, 23:13   # 8
Xinxy
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 259

Xinxy לא מחובר  

ציטוט:
נכתב במקור על ידי SDF צפה בהודעה
אחריי שתסיים יש לי קוד בשבילך, נשווה.

ובנתיים:
איך רצים לפי שורות:
קוד:
int i, j;
for (i = 0; i < MATRIX_SIZE; i++)
{
 for(j = 0; j < MATRIX_SIZE; j++)
   printf("&#37;c\t", matrix[i][j]);
 printf("\n");
}
זה כמובן מדפיס את המטריצה, אם אתה על GCC, אתה יכול לשים sleep אחריי ה printf ותראה שהוא הולך לפי שורות.
בשביל ללכת לפי עמודות, אתה צריך:
matrix[j][i]
להחליף את האינדקסים, שים לב שאתה לא חורג מגבולות מערך אם יש לך מטריצה לא ריבועית.
מגניב לא חשבתי על דבר כזה
מה שעשיתי היה:
קוד:
 for(i = 0; i < 5; i++)
 {
	 printf("%c ", a[0][i]);
 }
 
 printf("\n");

 for(i = 0; i < 5; i++)
 {
	 printf("%c ", a[1][i]);
 }

 printf("\n");

 for(i = 0; i < 5; i++)
 {
	 printf("%c ", a[2][i]);
 }

 printf("\n");

 for(i = 0; i < 5; i++)
 {
	 printf("%c ", a[3][i]);
 }

 printf("\n");

 for(i = 0; i < 5; i++)
 {
	 printf("%c ", a[4][i]);
 }

 printf("\n\n");
עריכה:
יש לי עוד בעיה
ביינתים עשיתי את הקוד הזה:
קוד:
#include <stdio.h>
#define ROW 4
#define COL 4
#define MATRIX_SIZE 5

int main ()
{
 char a[ROW][COL];
 int i, j;
 char forCheck[4];
 for(i = 0; i < 5; i++)
 {
	 printf("row %d: ", i + 1);
	 scanf("%s", a[i]);
 }


 for (i = 0; i < MATRIX_SIZE; i++)
 {
	for(j = 0; j < MATRIX_SIZE; j++)
	{
		printf("%c ", a[i][j]);
	}
	printf("\n");
 }
}
וכשאני מריץ אותו התוכנה VISUAL C++ אומרת לי:
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
איך אפשר לסדר את זה?

עריכה שוב:
שוב אני מנסה עכשיו לעשות את הבדיקה אבל אני פשוט לא יודע איך להתחיל
חשבתי אולי לעשות בדיקה על כל אות ז"א a[0], a[1], a[2], a[3], a[4]
אבל זה יהיה מטורף אני יצתרך איזה 200 לולאות FOR נראה לי
מה אתם אומרים יש דרך יותר קצרה אולי?

Last edited by Xinxy; 05-11-08 at 23:25..
  Reply With Quote
ישן 05-11-08, 23:30   # 9
SDF
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: Negev
הודעות: 270

SDF לא מחובר  

טעית בגדולים
char a[MATRIX_SIZE][MATRIX_SIZE]
__________________
FreeBSD, a *nix operating system
  Reply With Quote
ישן 06-11-08, 07:39   # 10
Jerba
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 300

Jerba לא מחובר  

ואין מצב שלמדתם מטריצות ואתם לא יודעים גדול שווה....כעיקרון גם במתמטיקה, כן אסור להשתמש במשו שלא למדת..

לא למדת דמיון , תפתור בלי דמיון
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 22:02.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ