orninyo משתמש מתחיל
הצטרף / הצטרפה: 06 September 2007
משתמש: מנותק/ת הודעות: 2
|
נשלח בתאריך: 06 September 2007 בשעה 23:16 | | IP רשוּם
|
|
|
|
למה התוכנית הזאת לא עובדת טוב?
אמורה להחזיר את האינדקס של המערך מהמערך מצביעים בו יש את מספר האפסים שנקלט מהמשתמש
קוד:
#include <stdio.h>
#include <stdlib.h>
#define N 4
unsigned count(const float [],int n); //מקבלת מערך ומחזירה את מספר האפסים בו
int check(const void* ,const void* );
void main()
{
int x=0,n,i,h;
float ** ans;
float mat[][N]=
{
{7,2,3,5},
{0,1,-1,-5.123F},
{2,0,0,1},
{1,0,0,0},
{0,0,0,-2.99F},
{0,0,0,0}
};
float * AP[sizeof(mat)/sizeof(mat[0])];
puts("Mat after qsort:");
for (i=0;i<sizeof(mat)/sizeof(mat[0]);i++)
AP[i]=mat[i];
puts("Pleae enter the number of zero elements, in the array to search for:");
fflush(stdin);
scanf("%d",&n);
ans=bsearch(&n,AP, sizeof(AP)/sizeof(AP[0]),sizeof(AP[0]),check);
printf("Found at index: %d ",ans-AP);
}
unsigned count(const float arr[], int n)
{
if( n == 1 )
{
if( arr[n-1] == 0 )
{
return 1;
}
else
{
return 0;
}
}
else
{
if( arr[n-1] == 0 )
{
return 1 + count(arr, n-1);
}
else
{
return count(arr, n-1);
}
}
}
int check(const void *el1,const void *el2)
{
return *(const int*)el1-count((const float*)el2, N );
}
|
|
|
|