2 部データ構造とアルゴリズムI レポート課題2の厳密なテストプログラム

課題2-1


#include <stdio.h>
#include <stdlib.h>
#include "bignum.h"
#define N 4
void freeB(Bignum *b[],int n){
  int i;
  for(i=n;i>=0;i--){
    freeBignum(b[i]);
  }
}
void freeS(char *s[],int n){
  int i;
  for(i=n;i>=0;i--){
    free(s[i]);
  }
}
void showErrorAndExit(){
  fprintf(stderr,"メモリーを確保できませんでした\n");
  exit(1);
}
void initB(Bignum* b[]){
  if((b[0]=init(0))==NULL){
    showErrorAndExit();
  }
  if((b[1]=init(2))==NULL){
    freeB(b,0);
    showErrorAndExit();
  }
  if((b[2]=init(2000))==NULL){
    freeB(b,1);
    showErrorAndExit();
  }
  if((b[3]=init(1234567890))==NULL){
    freeB(b,2);
    showErrorAndExit();
  }
}
int main(void){
  int i;
  Bignum* b[N];
  char* s[N];
  initB(b);
  for(i=0;i<N;i++){
    if((s[i]=bignumtostring(b[i]))==NULL){
      freeS(s,i-1);
      freeBignum(b,N-1);
      showErrorAndExit();
    }
  }
  for(i=0;i<N;i++){
    printf("%s, ",s[i]);
  }
  printf("\n");
  freeS(s,N-1);
  freeB(b,N-1);
  return 0;
}

課題2-2


課題2-3