Omer Michleviz פורסם 2017 באוקטובר 28 Share פורסם 2017 באוקטובר 28 היי, יש לי בעיה עם העברת מטריצה לפונקציה ב C.הפונקציה אמורה לקבל תו כמות שורות,עמודות ותו לחיפוש ולבדוק כמה תווים זהים יש במטריצה. אשמח לקבל הכוונה. #include <stdio.h> #include <stdlib.h> #include "src2.h" #include <time.h> //--------------------// void main() { int base=5; int arr [] = { 1, 2, 3, 4, 5, 6 }; char mat[][3] = { { 'A', 'a', 'a' }, { 'a', 'A', 'A' } }; int size,result; size= sizeof(arr) / sizeof(arr[0]); srand(time(NULL)); base = rand() % 10 + 1; printTriangle(base); result = matrix((char *)mat, 2, 3, 'A'); printf("Thae array is: %d\n", result); result=naturalOrder(arr, size); printf("Thae array is: %d\n", result); system("pause"); } #include "src2.h" void printTriangle(int base) { int i, j; for (i = 1; i <= base - 1; i++) { printf("%*c", base - i, ' '); for (j = 0; j < i; j++) { printf("%c", '*'); } printf("\n"); } } int naturalOrder(int arr[] ,int length) { int i; for (i = 0; i < length-1;i++) { if (arr[i] > arr[i + 1]) return 1; } return 0; } int matrix(char *arr, int rows, int cols, char cr) { int i, j, sum = 0; for ( i = 0; i < rows; i++) { for (j= 0; j < cols; j++) { if (*((arr + i*cols) + j) == cr) sum += 1; } } return 0; } //prototypes void printTriangle(int base); int naturalOrder(int arr[],int length); int matrix(char *arr, int rows, int cols, char cr); קישור לתוכן שתף באתרים אחרים More sharing options...
pavel korolin פורסם 2017 בנובמבר 14 Share פורסם 2017 בנובמבר 14 יש לך כמה באגים בתוכנית 1. לגבי העברה של פוינטר היות והגדרת את המערך שלך להיות בעורך קבוע הוא כבר לא pointer to pinter אלא מערך ולכן אתה צריך להגדיר אותו בפונקציה ככזה יותר חומר אפשר לקרוא פה http://c-faq.com/aryptr/pass2dary.html (int matrix(char arr[][3], int rows, int cols, char cr 2. ממליץ במקום זה להגדיר char** ולהגדיר אותו בהתם לגודל שאתה רוצה לדוגמה char** mat2 =NULL; mat2 = (char**)malloc(sizeof(char*)*2); mat2[0] = (char*)malloc(sizeof(char)*3); mat2[0][0] = 'A'; mat2[0][1] = 'a'; mat2[0][2] = 'a'; mat2[1] = (char*)malloc(sizeof(char)*3); mat2[1][0] = 'a'; mat2[1][1] = 'A'; mat2[1][2] = 'A'; ואז אין בעיה לקרוא לפונקציה int matrix(char** arr, int rows, int cols, char cr) עוד כמה דברים 1. אתה לא מחזיר את sum 2.לא יותר פשוט לקרוא [arr[j ? 3. עדיף לעולם לעשות i++ ולא ++i במקרה השני נוצר משתנה זמני שמוסב לתוך המשתנה הראשון קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.