サービス
サービスを探す
プロ人材を探す
仕事を探す
ブログを探す
サービス
サービスを探す
プロ人材を探す
仕事を探す
ブログを探す
購入・発注したい方
サービスを探す
プロ人材を探す
ノウハウ・素材を探す
ブログを探す
仕事・求人を投稿して募集
エージェントに人材を紹介してもらう
受注・働きたい方
出品する
単発の仕事を探す
継続 (時給/月給) の仕事を探す
エージェントに仕事を紹介してもらう
カテゴリ一覧
イラスト作成・漫画制作
デザイン制作
Web制作・HP作成・EC構築
動画編集・映像制作
集客・マーケティング相談
NEW
ビジネス代行・事務代行
音楽制作・ナレーション
IT相談・システム開発
ライティング・翻訳
コンサルティング・士業
生成AI活用・開発・制作
NEW
占い
悩み相談・カウンセリング
学習指導・資格・キャリア相談
住まい・美容・生活相談
オンラインレッスン・習い事
ハンドメイド制作
出張撮影・出張サービス
資産運用・副業の相談
NEW
弁護士検索・法律Q&A(法律相談)
サポート
はじめての方へ
ご利用ガイド
お困りのときは
ログイン
会員登録
サービスを探す
イラスト作成・漫画制作
>
デザイン制作
>
Web制作・HP作成・EC構築
>
動画編集・映像制作
>
集客・マーケティング相談
NEW
>
ビジネス代行・事務代行
>
音楽制作・ナレーション
>
IT相談・システム開発
>
ライティング・翻訳
>
コンサルティング・士業
>
生成AI活用・開発・制作
NEW
>
占い
>
悩み相談・カウンセリング
>
学習指導・資格・キャリア相談
>
住まい・美容・生活相談
>
オンラインレッスン・習い事
>
ハンドメイド制作
>
出張撮影・出張サービス
>
資産運用・副業の相談
NEW
>
>
プロ人材を探す
>
ノウハウ・素材を探す
ブログを探す
>
求人募集を投稿する
人材を紹介してもらう
仕事を探す
出品する
仕事を探す
仕事を紹介してもらう
出品する
仕事を紹介してもらう
求人募集を投稿する
人材を紹介してもらう
ブログを投稿
会員登録で10%割引クーポンを獲得!
会員登録で10%割引クーポンを獲得!
ココナラブログ
ホーム
ブログトップ
ブログ
IT・テクノロジー
C言語プログラミング 9/19
記事
IT・テクノロジー
Riku_Toudou
2021/09/19 20:49
今回は、昨日のgets置き換え関数を使いながらトリボナッチ数列(直前3項の和で生成される数列)のプログラムを実装しました。
//tribonacci.h
#ifndef _TRIBONACCI_H_
#define _TRIBONACCI_H_
//プロトタイプ宣言
long long int tri_calc(int, long long int[]);
long long int tri(int);
#endif // _TRIBONACCI_H
//tribonacci.c
#include <stdio.h>
#include <stdlib.h>
#include "tribonacci.h"
#define none -1
long long int tri_calc(int n, long long int T[]){
if( T[n] != none ){
//T[n]は計算済み
}
else if( (n == 0) || (n == 1) ){
T[n] = 0;
}
else if ( n == 2 ){
T[n] = 1;
}
else{
T[n] = tri_calc(n-1,T) + tri_calc(n-2,T) + tri_calc(n-3,T);
}
return T[n];
}
long long int tri(int N){
long long int *T,ret;
int i;
T = (long long int *)malloc( sizeof(long long int) * N + 1 );
if (T == NULL){
printf("cannot allocate memory.\n");
exit(1);
}
for(i=0;i<N+1;i++){
T[i] = none; //メモ配列初期化
}
ret = tri_calc(N, T);
free(T);
return ret;
}
//main.c
#include <stdio.h>
#include "getsrpl.h"
#include "tribonacci.h"
int main(void){
char buf[255];
int value;
int ret;
while(1){
printf("input value:");
getsrpl(buf, sizeof(buf)); //gets置き換え
ret = sscanf(buf, "%d", &value);
if( ret == 0 ){ //ret:変換出来た数
printf("fin...\n");
break; //数字以外で終了
}
else if( 0 > value ){ //負数は認めない
printf("invalid value.\n");
}
else{
printf("T[%d] = %lld\n", value, tri(value) ) ;
}
}
return 0;
}
一応、メモ化(一度計算した結果を保存しておく)はやってます。それ以外は特に取り上げることはないですね。
プログラミングの相談に乗ります
#C言語
#プログラミング
#遊び
#プログラミング学習
一覧に戻る