Skip to content

Commit

Permalink
Added return 0 (q2.c) and rewrote print_pol (q3.c)
Browse files Browse the repository at this point in the history
  • Loading branch information
mvmalderen committed Aug 26, 2010
1 parent 4bfdccb commit d9c7640
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 6 deletions.
1 change: 1 addition & 0 deletions q2.c
Expand Up @@ -102,5 +102,6 @@ int main(void)
printf("strcmp over s1 and s2=%i",strcmp(s1,s2));
printf("stricmp over s1 and s2=%i",stricmp(s1,s2));

return 0;
}

73 changes: 67 additions & 6 deletions q3.c
Expand Up @@ -55,17 +55,78 @@ void mul_poly(int *a, size_t dega, int *b, size_t degb, int *c)

void print_pol(int *a, size_t deg)
{
while(1)
{
printf(" +%iX^%i",a[deg],deg);
if(deg) deg--;/*TODO: ADD COMMENT*/
for (;; deg--)
{
if (!a[deg]) /* coefficient is zero, */
if (deg) continue; /* nothing to be printed */
else break;

/* print coefficient */
if (deg != 0 && (a[deg] == -1 || a[deg] == 1))
printf("%c", (a[deg] < 0 ? '-':'+'));
else
printf("%+d", a[deg]);

if (deg != 0) /* print variable? */
{
printf("X");

if (deg != 1) /* print exponent? */
printf("^%d", deg);
}
else /* last term of polynomial */
break;
}

printf("\n");
}


int main()
/* This function tests the print_pol() function, it does this by
creating arrays holding polynomials, and running the print_pol()
function on those arrays. After each call to print_pol(), the
expected result is printed. If the output from print_pol() didn't
match, then print_pol() doesn't work as desired.
*/
void test_print_pol(void)
{
int test_case_0[] = {0, -8}; /* -8X */
size_t deg0 = (sizeof(test_case_0) / sizeof(*test_case_0)) - 1;

int test_case_1[] = {-8, -1}; /* -X-8 */
size_t deg1 = (sizeof(test_case_1) / sizeof(*test_case_1)) - 1;

int test_case_2[] = {-1, 0}; /* -1 */
size_t deg2 = (sizeof(test_case_2) / sizeof(*test_case_2)) - 1;

int test_case_3[] = {8, 1}; /* +X+8 */
size_t deg3 = (sizeof(test_case_3) / sizeof(*test_case_3)) - 1;

int test_case_4[] = {1, 8}; /* +8X+1 */
size_t deg4 = (sizeof(test_case_4) / sizeof(*test_case_4)) - 1;

int test_case_5[] = {5, -3, 9}; /* +9X^2-3X+5 */
size_t deg5 = (sizeof(test_case_5) / sizeof(*test_case_5)) - 1;

print_pol(test_case_0, deg0);
printf("Expected: -8X\n");

print_pol(test_case_1, deg1);
printf("Expected: -X-8\n");

print_pol(test_case_2, deg2);
printf("Expected: -1\n");

print_pol(test_case_3, deg3);
printf("Expected: +X+8\n");

print_pol(test_case_4, deg4);
printf("Expected: +8X+1\n");

print_pol(test_case_5, deg5);
printf("Expected: +9X^2-3X+5\n");
}

int main(void)
{
int pol1[]={1,1,2};
size_t deg1=((sizeof pol1)/sizeof(*pol1))-1;
Expand Down

0 comments on commit d9c7640

Please sign in to comment.