我ながら馬鹿ではないのか? そのように思ってしまう

我ながら馬鹿ではないか、どうしてこんなプログラムにそれほど入れ込んでいるのか?

それでも大幅にブログラムが簡略化され、短くなっているのをどうしても記録しておきたいのです・・・

///////////////////////////
//  Cyclist.h
///////////////////////////
#import <Foundation/Foundation.h>

@interface Cyclist : NSObject
@property (copy) NSString* name;
@property (assign) float power;
-(id) init;
-(id) initWithName:(NSString*)name:(float)power;
-(NSString*) run:(float) slope;
-(NSString*) description;
@end

///////////////////////////
//  GrowingCyclist.h
///////////////////////////
#import "Cyclist.h"

@interface GrowingCyclist : Cyclist
-(NSString*)run:(float) slope;
@end

///////////////////////////
//  Utility.h
///////////////////////////
#import <Foundation/Foundation.h>

void MyPrint(NSString*);

///////////////////////////
//  Cyclist.m
///////////////////////////
#import "Cyclist.h"

@implementation Cyclist
@synthesize name;
@synthesize power;
-(id) init{
    if(self = [super init]){
    }
    return self;
}
-(id) initWithName:(NSString *)_name:(float)_power{
    if(self = [super init]){
        name = _name;
        power = _power;
    }
    return self;
}
-(NSString*) run:(float)slope{
    NSString* _temp;
    if(power >= slope) {
        _temp=[[NSString alloc]initWithFormat:@"%@ 登攀力 %.1fは、登れます!!", name, power];
    } else {
        _temp=[[NSString alloc]initWithFormat:@"%@ 登攀力 %.1fは、登れません", name, power];
    }
    return _temp;
}
-(NSString*) description{
    NSString* _temp=[[NSString alloc]
                     initWithFormat:@"[名前:%@] [登攀力:%.1f]", name, power];
    return _temp;
}
@end

///////////////////////////
//  GrowingCyclist.m
///////////////////////////
#import "GrowingCyclist.h"

@implementation GrowingCyclist:Cyclist
-(NSString*)run:(float)slope{
    NSString* _temp = [super run:slope];
    self.power += 0.5;
    return _temp;
}
@end

///////////////////////////
//  Utility.m
///////////////////////////

#import "Utility.h"

void MyPrint(NSString* str){
    printf("%s\n", [str UTF8String]);
    return;
}

///////////////////////////
//  main.m
///////////////////////////

#import <Foundation/Foundation.h>
#import "Cyclist.h"
#import "GrowingCyclist.h"
#import "Utility.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Cyclist* cyclist1=[[Cyclist alloc] initWithName:@"老成した齋藤":4.0];
        GrowingCyclist* cyclist2=[[GrowingCyclist alloc] initWithName:@"成長する齋藤":4.0];
        float slope = 3.0; int trial = 3;
        printf("****今度の坂道は%.1f度です これから%i回練習します****\n", slope, trial);

        MyPrint([cyclist1 description]);
        MyPrint([cyclist2 description]);
        for (int i=0; i<trial; i++){
            printf("@試技%i回目\n", i+1);
            MyPrint([cyclist1 run:slope]);
            MyPrint([cyclist2 run:slope]);
        }

        MyPrint([cyclist1 description]);
        MyPrint([cyclist2 description]);

        slope = 7.0; trial = 5;
        printf("\n\n****今度の坂道は%.1f 度です これから%i回練習します****\n", slope, trial);
        MyPrint([cyclist1 description]);
        MyPrint([cyclist2 description]);
        for (int i=0; i<trial; i++){
            printf("@試技%i回目\n", i+1);
            MyPrint([cyclist1 run:slope]);
            MyPrint([cyclist2 run:slope]);
        }
    }
    return 0;
}

これで結果出力は以下の通り

****今度の坂道は3.0度です これから3回練習します****
[名前:老成した齋藤] [登攀力:4.0]
[名前:成長する齋藤] [登攀力:4.0]
@試技1回目
老成した齋藤 登攀力 4.0は、登れます!!
成長する齋藤 登攀力 4.0は、登れます!!
@試技2回目
老成した齋藤 登攀力 4.0は、登れます!!
成長する齋藤 登攀力 4.5は、登れます!!
@試技3回目
老成した齋藤 登攀力 4.0は、登れます!!
成長する齋藤 登攀力 5.0は、登れます!!
[名前:老成した齋藤] [登攀力:4.0]
[名前:成長する齋藤] [登攀力:5.5]


****今度の坂道は7.0 度です これから5回練習します****
[名前:老成した齋藤] [登攀力:4.0]
[名前:成長する齋藤] [登攀力:5.5]
@試技1回目
老成した齋藤 登攀力 4.0は、登れません
成長する齋藤 登攀力 5.5は、登れません
@試技2回目
老成した齋藤 登攀力 4.0は、登れません
成長する齋藤 登攀力 6.0は、登れません
@試技3回目
老成した齋藤 登攀力 4.0は、登れません
成長する齋藤 登攀力 6.5は、登れません
@試技4回目
老成した齋藤 登攀力 4.0は、登れません
成長する齋藤 登攀力 7.0は、登れます!!
@試技5回目
老成した齋藤 登攀力 4.0は、登れません
成長する齋藤 登攀力 7.5は、登れます!!

投稿者: (KAMAKURA & SAPPORO)Dr_Radialist

Expert Interventional Cardiologist and Amateur Computer Programmer

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です