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